Что такое SSH и sFTP?
С помощью защищенного протокола SSH администраторы подключаются к своим серверам для безопасной работы. Рассмотрим особенности этого протокола подробнее:
- Что такое SSH-протокол
- Что такое SFTP-протокол
- Для чего используются SSH и SFTP протоколы
- Как работает SSH
Что такое SSH-протокол
SSH-протокол (от англ. Secure Shell) — криптографический сетевой протокол, предназначенный для удаленного доступа к операционной системе и осуществления безопасного удаленного управления в рамках незащищенной сети (например, через интернет).
SSH обеспечивает защищённый канал связи между клиентом и сервером, через который можно передавать данные (почтовые, видео, файлы), работать в командной строке, удаленно запускать программы, в том числе графические. SSH-сервер должен быть установлен на удаленной операционной системе. SSH-клиент должен быть запущен на машине, с которой будет осуществляться удаленное подключение.
Основы SSH и SCP в одном видео | Настройка для безопасной работы
Основные функции, доступные при использовании SSH-протокола:
- Передача любых данных через защищенное SSH-соединение, включая сжатие данных для последующего шифрования.
- X11 Forwarding — механизм, позволяющий запускать программы UNIX/Linux-сервера в виде графической оболочки, как в Windows (использовать X Window System).
- Переадресация портов — передача шифрованного трафика между портами разных машин.
Безопасность SSH-соединения обеспечивается:
- шифрованием данных одним из существующих алгоритмов
- аутентификацией сервера и клиента одним из нескольких доступных методов
- наличием дополнительных функций протокола, направленных на предупреждение различных хакерских атак
Аутентификация сервера дает защиту от:
- взлома путем подмены IP-адресов (IP-spoofing), когда один удаленный хост посылает пакеты от имени другого удаленного хоста
- подмены DNS-записей (DNS-spoofing), когда подменяется запись на DNS-сервере, в результате чего соединение устанавливается с хостом, который указан в подмененной записи, вместо необходимого
- перехвата открытых паролей и других данных, передаваемых в открытом виде через установленное соединение
На сегодняшний день существуют две версии протокола SSH (SSH-1 и SSH-2), причем вторая версия усовершенствована и расширена по сравнению с первой. Например, вторая версия устойчива к атакам вида MITM («человек посередине», атака посредника). Также существуют две редакции данного протокола: открытая версия (бесплатная) и коммерческая (платная). Бесплатная версия — OpenSSH — встроена во все UNIX-подобные операционные системы в виде стандартных утилит SSH-клиента и SSH-сервера.
Коммерческая реализация SSH-протокола — SSH Communications Security — разработана одноименной организацией. Имеет небольшие отличия от бесплатной версии, такие как доступность коммерческой технической поддержки, наличие инструментов веб-управления и др. Основной набор команд и возможностей практически одинаковый у обоих продуктов.
Основы SSH
Для ОС Windows выпущены различные SSH-клиенты и оболочки, самые распространенные из них — это бесплатные PuTTY и WinSCP . Для других операционных систем также существуют свои SSH-клиенты.

Что такое SFTP-протокол
SFTP-протокол (от англ. SSH File Transfer Protocol) – сетевой протокол прикладного уровня, предназначенный для передачи файлов и других действий с ними через имеющееся надежное соединение. Протокол был разработан как расширение SSH-2, предназначенное для операций с файлами по защищенному каналу, однако может работать и с другими протоколами, обеспечивающими безопасное соединение сервера с клиентом. Иными словами, для надежной работы через SFTP-протокол необходимо иметь установленное защищенное соединение (например, SSH), которое проводит аутентификацию клиента и сервера и устанавливает факт их надежности, поскольку сам SFTP-протокол не проводит аутентификацию и не обеспечивает безопасность.
SFTP имеет ряд преимуществ перед своими предшественниками — FTP и SCP — таких, как прерывание передачи файла, удаление, возобновление передачи, связь переданных файлов с основными атрибутами, например, меткой даты/времени, а также более высокая платформонезависимость.
SFTP-протокол реализуется через SFTP-сервер и SFTP-клиент, которые являются подсистемами OpenSSH.
Для чего используются SSH и SFTP протоколы
Чаще всего протоколы SSH и SFTP используются для удаленной работы с операционной системой или переноса большого количества файлов.
Например, клиент берет в аренду сервер или какую-то часть серверного пространства. Возникает необходимость переносить туда уже имеющиеся данные клиента, например, сайт или почтовые файлы. Провайдер должен обеспечить надежность и быстроту обмена данными с его сервером, особенно если речь идет о больших объемах информации и ее высокой конфиденциальности. В этом случае на удаленной машине (в данном случае — виртуальном сервере) устанавливается SSH-сервер (со встроенным SFTP-протоколом), а на клиентском компьютере — SSH-клиент. Создается SSH-туннель, и обмен данными между клиентом и удаленным сервером осуществляется через надежное соединение со всеми преимуществами протокола, описанными выше.
Также SSH может использоваться для удаленной работы по защищенному соединению с различными сервисами провайдера, такими как программное обеспечение, операционные системы и т.д.
Как работает SSH
По протоколу SSH работает набор программ, служащих для выполнения различных действий на удаленной операционной системе. Например, программа sshd обеспечивает серверную функциональность SSH, она должна быть запущена на SSH-сервере. Программа ssh запускается на SSH-клиенте и позволяет устанавливать соединение с удаленным хостом, регистрироваться на нем, работать с удаленной машиной через SSH-соединение.
Для запуска тех или иных программ SSH-протокола существуют специальные команды с набором различных опций. Эти команды могут отличаться в зависимости от используемой клиентской операционной системы и оболочки SSH-клиента. Команды запускаются либо из командной строки, если речь идет о UNIX-подобных системах, либо посредством графического интерфейса в соответствующих SSH-оболочках.
Источник: firstvds.ru
Что такое SSH
SSH — один из способов дистанционного управления сервером на хостинге. Рассказываем, что это за протокол и как его использовать.
Что такое SSH
SSH — это сетевой защищённый протокол передачи данных для дистанционного управления устройствами.
Он позволяет передавать различные команды другому компьютеру или серверу: например, загружать или удалять файлы, запускать приложения и так далее.
При этом все данные, которые передаются от вас к удалённому устройству, надёжно зашифрованы. SSH создаёт защищённое соединение и не позволит злоумышленникам украсть ценную информацию.
Функции протокола
SSH применяют для удалённого управления серверами на хостинге. Он даёт возможность подключаться и совершать все необходимые действия с любого устройства.
При помощи SSH можно:
- запускать приложения, удалять, перемещать папки и файлы, выполнять другие команды на удалённом устройстве;
- передавать данные по безопасному каналу;
- сжимать файлы для их быстрой доставки;
- перенаправлять порты и передавать зашифрованный трафик между портами разных компьютеров.
SSH-сервер и SSH-клиент
Чтобы подключение к удалённому устройству успешно состоялось, нужны две программы: SSH-сервер и SSH-клиент.
SSH-сервер устанавливается на устройстве, к которому будет произведено подключение. Если речь идёт об удалённом управлении хостингом, какой SSH-сервер будет применяться, решает провайдер. Обычно это бесплатная программа — OpenSSH.
SSH-клиент — это программа на компьютере пользователя, которая осуществляет подключение и передаёт информацию. В Linux и macOS используется OpenSSH, и обычно она уже встроена. Подключиться и управлять удалённым устройством можно через терминал.
На Windows клиент не установлен по умолчанию, и нужно скачивать стороннее приложение.
Несколько распространённых SSH-клиентов для этой ОС:
- PuTTY;
- SecureCRT;
- ShellGuard;
- Axessh;
- ProSSHD.
Чаще всего используют PuTTY — он бесплатный и достаточно простой в управлении. Именно его мы советуем установить и будем приводить в примерах в этой статье.
Как работает протокол
Перед началом передачи информации между получателем и отправителем должно установиться безопасное соединение. Это происходит в три шага:
1. Установка TCP-соединения. TCP — это протокол передачи данных. Он относится к транспортному уровню модели OSI. С его помощью информация с одного устройства доставляется на другое.
При этом он обеспечивает безопасную транспортировку пакетов и гарантирует их целостность.
Перед началом передачи данных должно быть установлено безопасное соединение. Происходит это следующим образом:
- Клиент посылает запрос на установку соединения — сообщение SYN и порядковый номер переданного байта.
- Сервер в ответ тоже посылает сообщение SYN, подтверждает получение данных сообщением ACK и отправляет номер байта, который должен быть получен следующим.
- Клиент, в свою очередь, тоже подтверждает, что получил информацию, и посылает номер следующего ожидаемого байта.
- В итоге соединение считается установленным.
2. Открытие защищённого канала. Получатель и отправитель должны договориться, как они будут шифровать и сжимать данные.
- Сначала они сообщают друг другу версии SSH и другую дополнительную информацию. Это помогает установить, совместимы ли протоколы, и определиться с дальнейшими шагами.
- Затем стороны сообщают друг другу, какие алгоритмы они поддерживают. Одни из этих алгоритмов будут применяться для шифрования информации, другие — для её сжатия, а третьи — для отправки ключей. Технологии располагаются в порядке от самого предпочтительного до наименее предпочтительного. Обе стороны сравнивают полученные данные с теми алгоритмами, которые они поддерживают, и выбирают первые совпавшие варианты.
- В конце сервер создаёт и отправляет клиенту уникальную комбинацию символов — fingerprint. Если связь с этим сервером уже устанавливалась раньше, клиенту уже известен этот fingerprint. Информация о нём хранится в /home/username/.ssh/known_hosts. А если соединение устанавливается впервые, клиент «спросит» у вас, можем ли мы доверять этому серверу. После вашего подтверждения будет сгенерирован сессионный ключ для симметричного шифрования канала.
3. Аутентификация пользователя. После того как был открыт защищённый канал, сервер должен проверить, кто к нему подключился и имеет ли он на это право.
Идентифицировать юзера можно двумя способами:
- По паролю.
- По SSH-ключу.
SSH создал защищённое соединение. Теперь клиент может передавать данные.
Мы разобрались, что такое SSH и как он работает. Давайте теперь посмотрим, как пользоваться им на практике.
Как подключиться к серверу с помощью протокола
Чтобы подключиться к серверу, вам понадобятся определённые данные:
- IP-адрес машины;
- логин;
- пароль.
На нашем хостинге эта информация есть в личном кабинете, в разделе «Инструкция» к каждому серверу.
Все необходимые данные вы найдёте в первом разделе — «Информация о сервере»:

Если на вашем компьютере стоит Linux или macOS, зайдите в терминал.
В появившемся окне наберите:
Вместо username должен быть указан ваш логин, а вместо 185.211.200.111 — IP-адрес сервера, к которому вы подключаетесь.
Если ОС на вашем устройстве — Windows, вам потребуется установить клиент. В наших примерах мы будем использовать PuTTY.
Запустите программу, нажмите на Session и введите IP удалённого устройства в поле Host Name (or IP address):

После подключения откроется окно консоли.
Если клиент подключается к серверу первый раз, как мы уже говорили выше, он отправит вам fingerprint:
The authenticity of host ’185.211.200.111 (185.211.200.111)’ can’t be established. ECDSA key fingerprint is ed:fe:f5:d7:98:fe:85:64:e1:44:11:af:e7:8d:33:de. Are you sure you want to continue connecting (yes/no)?
Введите yes.
После этого на экране появится запрос пароля. Когда вы его введёте, подключение будет установлено, и вы сможете управлять устройством удалённо.
Доступ по ключу
SSH-ключ — хороший способ не вводить пароль постоянно, когда вы подключаетесь.
Вам понадобится два ключа: публичный и приватный. Приватный ключ — закрытый, его нельзя сообщать никому ни при каких обстоятельствах. Публичный же можно передать тому, с кем вы будете обмениваться зашифрованными данными.
Два ключа нужны, потому что SSH использует метод ассиметричного шифрования. Информация, которую вы передаёте, шифруется одним ключом, а расшифровать её может только тот, у кого есть второй ключ.
Создание ключей на Linux или macOS
1. В терминале введите:
ssh-keygen -t rsa
2. Дальше нужно будет указать место, куда сохранить ключи:
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Укажите путь к папке. Или нажмите Enter — тогда это будет место по умолчанию /.ssh/id_rsa.
3. Следующее сообщение на экране предложит вам создать специальную фразу для дополнительной безопасности:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Если у вас нет желания вводить её при подключении постоянно, просто нажмите Enter.
Приватный ключ находится в ~/.ssh/id_rsa, публичный — в ~/.ssh/id_rsa.pub. Именно там они будут сохранены, если вы ничего не укажете на втором шаге. Если же вы выбрали другой путь, в сообщении будут указаны другие данные.
Публичный ключ вам нужно будет загрузить на сервер. Как это сделать, мы расскажем позже.
Генерация ключей на Windows
Вам понадобится приложение PuTTYgen.
1. Запустите его. Выберите тип ключа — RSA. И проверьте, чтобы его длина была 2048 бит.

2. Кликните на Generate и хаотично подвигайте мышкой. Программа использует движение курсора для создания случайных данных.

В верхней части окна появится публичный ключ.

Лучше сразу копируйте его, чтобы потом загрузить на сервер.
3. Сохранить ключи можно в любой папке на устройстве, нажав на Save public key и Save private key.

Как загрузить ключ на сервер EdgeЦентр
Читайте инструкции в нашей базе знаний:
Основные команды протокола
Вы подключились к удалённому устройству, прошли аутентификацию. Теперь можно управлять машиной со своего компьютера, используя различные команды.
Таких команд существует очень много. Все они одинаково работают при использовании любого SSH-клиента.
Мы перечислим несколько основных.
1. ls — выводит название всех файлов и папок на удалённом устройстве. Её используют вместе с набором команд:
- ls -la — отображает все файлы и информацию о них: права доступа, имя владельца и создателя.
- ls -lha — показывает размер каждого файла в байтах.
- ls -lha | less — постраничный просмотр документов и папок.
2. cd — перемещение между директориями. Введите команду, укажите путь к папке, и вы окажетесь в этой папке.
3. sudo — позволяет выполнять любые команды от имени администратора.
4. mv — переименовывает файлы или перемещает их в директории. Допустим, мы ввели mv name1 name2. Если name2 — это существующая директория, то файл name1 переместится туда. Если директории name2 не существует, name1 будет переименован в name2.
5. rm — команда для удаления документов и директорий. Введите после неё имя файла или папки, и этот файл или папка будут удалены.
6. cp — используется, когда нужно копировать файл или папку. Если вы введёте cp 1file 2file, то 1file будет скопирован в 2file. Если нужно скопировать одну директорию в другую, после cp наберите -r. Выглядеть это будет так:
При этом если директории 2dir не существует, она будет создана.
7. chmod — изменение прав доступа к файлу. Сначала указывается команда, затем права доступа и пользователь, которому эти права даются или отнимаются, и в конце путь к файлу.
Права бывают трёх видов:
- r — чтение;
- w — запись;
- x — выполнение.
И три вида пользователей:
- u — владелец файла;
- g — группа файла;
- о — все остальные пользователи.
Разрешение обозначается знаком +, запрет — знаком -.
Например, мы указываем:
chmod о+r filename
Это значит, что мы разрешили чтение файла filename всем, кроме его владельца и группы.
8. scp — передача файлов с вашего устройства на сервер. После команды вы указываете имя локального файла (или путь к папке), имя пользователя, IP-адрес сервера и адрес папки, где нужно разместить файл.
Выглядеть это будет так:
Это лишь малая часть базовых команд SSH. Их хватит для общего понимания работы с протоколом. Но, конечно, для полноценного применения SSH на практике этого списка будет недостаточно.
Подведём итоги
- SSH — это защищённый протокол передачи данных для удалённого управления компьютерами через интернет.
- Через SSH можно выполнять различные команды на удалённом устройстве, безопасно передавать данные, сжимать их для быстрой передачи и так далее.
- Чтобы использовать протокол, нужны специальные приложения: SSH-сервер и SSH-клиент.
- Когда вы подключаетесь к серверу, SSH сначала устанавливает безопасное соединение. Он открывает защищённый канал и идентифицирует юзера.
- Если у вас нет желания вводить пароль постоянно, когда вы подключаетесь, можно создать SSH-ключ и загрузить его на сервер.
- Когда связь между вашим устройством и удалённой машиной установлена, вы можете вводить в консоли разные команды и с их помощью управлять сервером.
- Серверами на хостинге EdgeЦентр можно управлять с помощью SSH.
Разместите ваши проекты на наших виртуальных и выделенных серверах и управляйте ими из любой точки мира.
Источник: edgecenter.ru
Статья Урок по SSH: азы использования и продвинутые трюки (часть первая)
Безопасный шелл (SSH) — это сетевой протокол, обеспечивающий функции шелла на удалённой машине через безопасный канал. SSH несёт в себе различные улучшения безопасности, среди них аутентификация пользователя/хоста, шифрование данных и целостность данных, благодаря чему невозможны популярные атаки вроде подслушивания (eavesdropping), DNS/IP spoofing, подделка данных (data forgery), перехват соединения (connection hijacking) и т. д. Пользователям ftp, telnet или rlogin, которые используют протокол, передающий данные в виде открытого текста, крайне рекомендуется переключиться на SSH.
OpenSSH — это реализация с открытым исходным кодом протокола SSH, позволяющая шифровать соединение в сети посредством набора программ. Если вам хочется иметь SSH на Linux, вы можете установить OpenSSH, который состоит из сервера OpenSSH и клиентских пакетов.
- OpenSSH сервер: sshd (SSH daemon)
- OpenSSH клиент: scp (безопасное удалённое копирование), sftp (безопасная передача файлов), slogin/ssh (безопасный удалённый вход), ssh-add (дополнение закрытого ключа), ssh-agent (агент аутентификации), ssh-keygen (управление ключами аутентификации).
Если вы хотите установить сервер/клиент OpenSSH и настроить автоматический запуск сервера OpenSSH, следуйте следующим инструкциям, которые различаются в зависимости от дистрибутива.
Debian, Ubuntu или Linux Mint
$ sudo apt-get install openssh-server openssh-client
В системах основанных на Debian, сразу после установки, OpenSSH будет запускаться автоматически при загрузке. Если по каким либо причинам сервер OpenSSH не запускается автоматически при запуске системы, вы можете выполнить следущую команду для однозначного добавления ssh в загрузку при старте системы.
$ sudo update-rc.d ssh defaults
Fedora или CentOS/RHEL 7
$ sudo yum -y install openssh-server openssh-clients $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service
CentOS/RHEL 6
$ sudo yum -y install openssh-server openssh-clients $ sudo service sshd start $ sudo chkconfig sshd on
Arch Linux
$ sudo pacman -Sy openssh $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service
Настройка сервера OpenSSH
Если вы хотите настроить сервер OpenSSH, вы можете редактировать общесистемный файл конфигурации размещённый в /etc/ssh/sshd_config.
Есть пара опций OpenSSH, которые могут заинтересовать:
По умолчанию, sshd прослушивает порт 22 и ожидает входящие соединения ssh. Изменив порт по умолчанию для ssh, вы можете предотвратить различные автоматизированные атаки хакеров.
ListenAddress 192.168.1.1
Если ваша машина имеет более чем один физический сетевой интерфейс, возможно вы заходите уточнить, какой из них связан с sshd, для этого вы можете использовать опцию ListenAddress. Эта опция помогает улучшить безопасность посредством ограничения входящих SSH только через особый интерфейс.
HostKey /etc/ssh/ssh_host_key
Оция HostKey определяет гда размещён персональный хост ключ.
PermitRootLogin no
Оция PermitRootLogin – может ли root входить в систему посредством ssh.
AllowUsers alice bob
Используя опцию AllowUsers вы можете выборочно отключить службу ssh для определённых пользователей Linux. Можно задать множество пользователей, разделяя их пробелами.
После того, как был изменён /etc/ssh/sshd_config , убедитесь, что перезапустили службу ssh.
Для перезапуска OpenSSH на Debian, Ubuntu или Linux Mint:
$ sudo /etc/init.d/ssh restart
Для перезапуска OpenSSH на Fedora, CentOS/RHEL 7 или Arch Linux:
$ sudo systemctl restart sshd.service
Для перезапуска OpenSSH на CentOS/RHEL 6:
$ sudo service sshd restart
Как подключиться к SSH
Подключение к SSH из Linux
Пользователям Linux не нужно устанавливать дополнительных программ.
Подключение к SSH из Windows
Для Windows многие рекомендуют и успешно пользуются PuTTY. Я ничего не имею против этой программы, но сам предпочитаю и рекомендую
Ссылка скрыта от гостей
Cygwin – это не просто клиент SSH. Это мощный комбайн, в котором поддерживаются многие команды Linux. Например, в Cygwin очень легко создавать SSL-сертификаты (точно также, как и в Linux). В Windows для создания самоподписанных сертификатов нужно поплясать с бубном. В Cygwin очень удобно пользоваться cURL (не нужно ничего устанавливать отдельно) и т. д. Те, кому не хватает на Windows командной строки и программ Linux, в лице Cygwin найдут себе отдушину.
Установка Cygwin проста. Переходим на
Ссылка скрыта от гостей
и скачиваем
Ссылка скрыта от гостей
Ссылка скрыта от гостей
Скачается крошечный файл — это установщик. Установщик графический. Хоть он и содержит большое количество опций, все они довольно простые и многие знакомы по другим графическим установщикам. Если что-то непонятно, просто нажимайте «Далее». Пожалуй, только следующее окно может привести в замешательство:
Здесь представленные все доступные для установки элементы. Нам не нужно прямо сейчас разбираться в них. Поскольку самые востребованные уже помечены для установки. А если чего-то в будущем будет не хватать, то легко можно доустановить нужное.
Соединение SSH (общее для Linux и Windows)
Пользователи Linux открывают консоль, пользователи Windows печатают в Cygwin.
- IP или имя хоста
- номер порта
- имя пользователя
- пароль пользователя
ssh 192.168.1.36
Я вижу следующее
Поскольку я подключаюсь к хосту первый раз, то это незнакомый хост. У меня спрашивают, хочу ли я продолжить. Я набираю yes:
После подключения нас встречает примерно такое приветствие:
Linux mint 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Jun 16 15:32:25 2015 from 192.168.1.35
Из него следует, что удалённая машина — это Linux Mint, с ядром 3.16, 64-битная версия.
Также важная информация о времени последнего входа и IP адресе с которого произошло соединение. Если время и IP вам незнакомы, а вы являетесь единственным пользователем, то ваша система скомпрометирована и нужно принимать соответствующие меры.
Наберём несколько команд, чтобы убедиться где мы и кто мы: pwd[/B], [B]uname -a и т. д.:
Чтобы закончить сессию (отключиться), наберите
exit
Или нажмите Ctrl+D .
Вход в SSH без ввода пароля
Во-первых, это просто удобнее. Во-вторых, это безопаснее.
Во-первых, нам нужно создать rsa ключи. Если вы пользователь Linux, то у вас всё в порядке. Если вы пользователь Windows, но вы не послушали мой совет и выбрали PuTTY, то у вас проблема и думайте сами, как её решать. Если у вас Cygwin, то всё также в порядке.
Если вы успели залогиниться на удалённой системе, разлогинтесь. После этого наберите
ssh-keygen -t rsa
У нас спрашивают имя файла, не нужно ничего вводить, будет использовано имя по умолчанию. Также спрашивается пароль. Я пароль не ввожу.
Теперь на удалённой машине нам нужно создать каталог .ssh. Про выполнение команда на удалённой машине ещё будет рассказано ниже. Пока просто копируете команду, не забывая поменять IP адрес и имя пользователя на свои:
Теперь нам нужно скопировать содержимое файла id_rsa.pub на удалённую машину. Сделать это очень просто (не забываем менять данные на свои):
Теперь просто логинимся и больше никакой пароль у нас не спрашивают. И так теперь будет всегда.
Выполнение команд на удалённом сервере без создания сессии шелла
Кроме открытия сессии шелла на удалённой системе, ssh также позволяет выполнять отдельные команды на удалённой системе. Например, для выполнения команды tree на удалённом хосте с именем remote-sys и отображением результатов на локальной системе, нужно сделать так:
ssh remote-sys tree
Мой реальный пример:
Используя эту технику, можно делать интересные вещи, вроде такой, как выполнение команды ls на удалённой системе и перенаправление вывода в файл на локальной системе:
ssh remote-sys ‘ls *’ > dirlist.txt
Реальный пример:
Обратите внимание на одиночные кавычки в вышеприведённой команде. Это сделано потому, что мы не хотим, чтобы раскрытие пути было выполнено на локальной машине; поскольку нам нужно это выполнение на удалённой системе. Также если мы хотим стандартный вывод перенаправить в файл на удалённой машине, мы можем поместить оператор редиректа и имя файла внутри одиночных кавычек:
ssh remote-sys ‘ls * > dirlist.txt’
Передача стандартного вывода с локальной машины на удалённую по ssh
Не менее интересный вариант выполнения команд приведён немного выше:
Для следующего фокуса нужно два компьютера с системой Linux. К сожалению, даже Cygwin с этим трюком не справляется. Причём оба Linux’а должны быть с графическим пользовательским интерфейсом.
Туннелирование с SSH
Среди всего прочего, что происходит когда устанавливается соединение с удалённым хостом через SSH, это создание зашифрованного туннеля, который образуется между локальной и удалённой системами. Обычно, этот туннель используется для того, чтобы набранные на локальной машине команды безопасно были переданы удалённой машине, а результат, также безопасно, прислан обратно.
В добавок к этой базовой функции, протокол SSH позволяет переправлять большинство типов трафика по зашифрованному туннелю, создавая некого рода VPN (виртуальную частную сеть) между локальной и удалённой системами.
Пожалуй самая часто используемая из этих функций — это возможность транслировать трафик систем X Window. На системе с запущенным X сервером (это машины, которые имеют графический пользовательский интерфейс) возможно запустить программу X клиента (графическое приложение) на удалённой системе и видеть результаты её работы на локальной системе. Сделать это просто. Например, я хочу подключиться к удалённому хосту remote-sys и на нём я хочу запустить программу xload. При этом видеть графический вывод этой программы я смогу на локальном компьютере. Делается это так:
ssh -X remote-sys xload
Реальный пример:
Т.е. SSH запускается с ключом -X. А затем просто запускается программа. Посмотрите на скриншот.
Я нахожусь в Kali Linux. Я успешно логинюсь к удалённому компьютеру по SSH. После этого я запустил программу gedit. Этой программы, может быть, даже нет на Kali Linux, но она точно есть в Linux Mint, к которой я и подключился. Результат работы этой программы я могу видеть на экране так, будто бы программа запущена локально.
Но, повторюсь, я хочу, чтобы вы это поняли, запущенной программы gedit на локальном компьютере нет. Если я захочу сохранить результат работы gedit (или любой другой программы, открытой таким образом), то окажется, что она работает в окружении удалённого компьютера, видит его файловую систему и т. д. Это удобно, когда вы хотите настроить удалённый компьютер используя графический интерфейс.
О том, как передать изображение со всего рабочего стола вы узнаете в этой же статье далее, в секции «Как настроить VNC через SSH».
На некоторых системах для этого «фокуса» нужно использовать опцию “ -Y ” вместо опции “ -X ”.
Копирование с/на удалённый компьютер (scp и sftp)
Пакет OpenSSH также включает две программы, которые использует зашифрованный туннель SSH для копирования файлов по сети. Первая программа – scp(«безопасное копирование») – используется чаще, как и схожая с ней программа cp для копирования файлов. Наиболее заметная разница в том, что источником файла может быть удалённый хост после которого следует двоеточие и расположение файла. Например, если мы хотим скопировать документ, названный document.txt из нашей домашней директории на удалённую систему remote-sys в текущей рабочей директории на нашей локальной системе мы можем сделать так:
Реальный пример:
Для копирования файла с локальной машины на удалённую:
scp локальный_файл remote-sys:.
Реальный пример
Вторая программа для копирования файлов через SSH — это sftp. Как следует из её имени, она является безопасным заменителем ftp программ. sftp работает как и оригинальная ftp программа. Тем не менее, вместо отправки чистым текстом она использует зашифрованный туннель SSH. Важным преимуществом sftp перед ftp является то, что для неё не требуется запущенный FTP сервер на удалённом хосте.
Для неё требуется только SSH сервер. Это означает, что любая удалённая машина, которая подключена через SSH клиент может также быть использована как FTP-подобный сервер. Вот пример сессии:
SFTP протокол поддерживается многими графическими файловыми менеджерами, которые можно найти в дистрибутивах Linux. Используя как Nautilus (GNOME), так и Konqueror (KDE), мы можем вводить URI (ссылки) начинающиеся на sftp:// в строку перехода и работать с файлами, расположенными на удалённой системе с запущенным SSH сервером.
Источник: codeby.net
Использование удаленного доступа по SSH
Обычные пользователи почти всегда работают с компьютером локально. То есть они физически находятся у компьютера, используют имеющиеся у него устройства ввода-вывода (клавиатуру, мышь, дисплей) для выполнения необходимых операций. Однако, не всегда есть возможность физически находиться у компьютера, с которым нужно работать.
Например, если вы хотите создать свой сайт, то он будет размещен на компьютере хостинг-провайдера. Этот компьютер может находиться на другом конце света. Вам нужен способ запускать команды на этом компьютере не выходя из своего дома. При профессиональной работе с компьютерами часто возникает потребность выполнять определенные операции на удаленных машинах.
Например, системный администратор может обслуживать компьютерную сеть, состоящую из десятков компьютеров. Было бы очень неудобно постоянно физически перемещаться между компьютерами. Более того, удаленный компьютер может располагаться, например, в центре обработки данных у облачного провайдера, или быть вообще виртуальной машиной на кластере. Такое часто бывает при использовании облачных систем.
Специально для таких случаев существуют протоколы удаленного доступа. Они позволяют подключиться к удаленному компьютеру и работать на нем так же, как вы обычно работаете на локальной физической машине. Такие протоколы разделяются на графические и текстовые.
Графические протоколы, например, RDP (remote desktop protocol) передают по сети изображение графического интерфейса в одну сторону, движения мыши и события клавиатуры — в другую. Текстовые протоколы, такие как Telnet или SSH, передают только текстовую информацию и позволяют работать в терминале удаленной машины. Здесь мы рассмотрим самый популярный текстовый протокол удаленного доступа — SSH.
SSH — защищенный протокол для удаленного доступа к компьютерам. Через SSH можно выполнять операции в командной строке компьютера, который физически находится в другом месте. Иными словами, SSH — это дистанционная командная строка. Визуально вы работаете на своем компьютере, но в реальности — на другом.
Протокол — это набор соглашений, правил, по которым разные программы могут обмениваться информацией. SSH — это набор правил, который известен и вашему компьютеру, и физически отдаленному компьютеру. Пример: вы вводите команду удаления файла, и эта команда передается на другой компьютер и выполняется там. Ответ (или сообщение об ошибке) возвращается и показывается на вашем компьютере.
При удаленной работе обычно используются существующие открытые каналы коммуникации, то есть компьютерные сети. Почти всегда — подключение происходит через Интернет. Поэтому очень важно обеспечить безопасность соединения. При использовании протокола SSH вся информация передается в зашифрованном виде. Подобно тому, как некоторые сайты работают по HTTPS, шифруя информацию.
Например, ваш онлайн-банкинг обязательно должен работать по защищенному соединению. В таком случае даже если всю информацию перехватывает злоумышленник, он не сможет расшифровать её.
Используя SSH можно подключиться к любой удаленной машине при соблюдении некоторых условий. Ни параметры удаленной машины, ни расстояние не имеют значения. Также можно подключаться как к физическим, так и к виртуальным машинам. При подключении, вы даже можете не знать, к чему вы подключаетесь, к физическому компьютеру или к виртуальной машине в датацентре какой-то компании. При работе никакой разницы вы не заметите.
Как и большинство сетевых протоколов, SSH работает по клиент-серверному принципу. То есть на вашем компьютере, за которым вы работаете физически должна быть установлена специальная программа — ssh клиент. С ее помощью вы и будете подключаться к другим машинам. А на удаленной машине, то есть той, к которой вы подключаетесь должна работать другая программа — ssh сервер.
Она будет принимать ваше подключение, выполнять ваши команды, следить за правами доступа и так далее. Как настроить и клиент и сервер мы поговорим далее.
- При работе часто возникает потребность выполнять операции на разных удаленных хостах.
- Обычное незащищенное соединение для этого не подходит из-за проблем с безопасностью.
- Протокол SSH позволяет выполнять команды терминала на удаленной машине.
- Протокол SSH начинает шифровать соединение еще до ввода пароля пользователя.
- Таким образом можно подключаться к любым машинам, физическим и виртуальным.
- SSH является клиент-серверным протоколом. На локальной машине работает клиент ssh, на удаленной — сервер.
Что нужно для успешного удаленного доступа?

Источник: Wikimedia.
Для того, чтобы иметь возможность подключиться к удаленной машине нужно соблюдение нескольких условий. Во-первых, как мы уже говорили, на ней должен быть установлен и работать ssh сервер. Существуют разные сервера, но самым распространенным является свободный и бесплатный сервер openssh. Он существует и для Linux и для Windows и для других операционных систем. Во многие дистрибутивы Linux, ориентированные на серверную работу он устанавливается по умолчанию. Если же его нет, то установить его очень просто командой:
$ sudo apt install openssh-server
Естественно, удаленная машин должна быть доступна по сети с локальной. Если удаленная машина выключена, не подключена к сети или подключена к изолированной сети, куда не пройдут пакеты от локальной машины — подключиться вы к ней не сможете. Другими словами, удаленная машина должна пинговаться с локальной.
Обратите внимание, что удаленная машина не должна быть скрыта NAT’ом или каким-либо сетевым экраном, блокирующим входящие соединения. Кстати, домание компьютеры, выходящие в интернет через обычного провайдера, как правило, как раз скрыты за NAT. Поэтому, находясь в своей домашней сети, вы сможете подключиться к другому компьютеру в ней, а извне — нет.
Протокол ssh никак не связан с интернетом. Вы можете подключаться к машинам, которые подключены в общую локальную сеть, независимо от того, есть ли выход в интернет. В любом случае, вы должны знать адрес удаленной машины, чтобы к ней подключиться. Обычно используется IP-адрес. Но если у сервера есть назначенное доменное имя — можете использовать его.
Кроме IP-адреса нужно знать номер сетевого порта, который прослушивает сервер ssh. По умолчанию любая служба ssh использует порт 22. Однако, администраторам при настройке сервера рекомендуется ради безопасности изменить порт на случайный. Поэтому для подключения надо знать, был ли переназначен стандартный порт и, если да, то на какой.
Еще одно необходимое условие — знание учетной записи пользователя на удаленной машине. Помните, что после подключения вы первым делом должны будете авторизоваться на сервере. Поэтому для этого вы должны знать имя пользователя и его пароль. Этот пользователь должен быть зарегистрирован именно на удаленной машине. Ваш локальный пользователь не подойдет.
Если вы сами настраиваете сервер, то такое надо предусмотреть заранее. Например завести специального пользователя, предназначенного именно для того, чтобы под ним на эту машину заходили по протоколу ssh.
Еще одно предостережение. На реально используемых серверах обязательно должен стоять файерволл — специальная программа, которая блокирует входящие соединения на определенные порты. Она нужна для безопасности. Так вот, по умолчанию, такие программы блокируют все порты. Если вы хотите какие-то определенные порты использовать, их надо добавить в исключения файервола.
Как мы уже говорили, на локальной машине должне быть установле ssh-клиент. В *nix-подобных системах (Linux, macOS) клиент обычно установлен в системе по умолчанию, и достаточно открыть терминал и воспользоваться командой ssh. В Windows нужно скачать сторонний клиент, например, Putty. SSH-клиентов тоже существует много разных. Есть даже графические клиенты.
Но даже в них придется работать в командной строке — ведь сам протокол ssh — чисто текстовый.
- Для подключения нужно знать адрес сервера, логин и пароль, порт подключения (по умолчанию, 22) .
- Еще нужно, чтобы сетевая инфраструктура была правильно настроена.
- Нужно, чтобы на удаленной машине работал сервер SSH.
- Самый распространенный сервер — OpenSSH — бесплатный и открытый.
- Нужно, чтобы удаленная машина была доступна по сети.
- Системные администраторы могут заблокировать доступ к порту ssh.
- По умолчанию, порты обычно закрыты, нужно их открыть.
- На локальной машине должен быть установлен клиент ssh.
- Есть консольные и графические клиенты ssh, но работать все равно придется в терминале.
Как подключиться к серверу из командной строки?
Для подключения нужно воспользоваться командой ssh. при запуске нужно указать адрес сервера, имя пользователя и, опционально, порт подключения. Вот как выглядит команда при использовании консольного клиента (в терминале):
Например, для подключения к серверу 52.307.149.244 в аккаунт user нужно ввести:
Источник: koroteev.site