Introduction
SSH («Secure SHell») is a protocol for securely accessing one computer from another. Despite the name, SSH allows you to run command line and graphical programs, transfer files, and even create secure virtual private networks over the Internet.
To use SSH, you will need to install an SSH client on the computer you connect from, and an SSH server on the computer you connect to. The most popular Linux SSH client and Linux SSH server are maintained by the OpenSSH project.
The OpenSSH client is included in Ubuntu by default. For information on connecting to an SSH server, see Connecting to an OpenSSH Server.
Resources
Some information on using an SSH server is available below. To use these guides, you must be an Ubuntu user that’s comfortable using the command-line, editing configuration files, and starting and stopping daemon programs.
SSH (последним исправлял пользователь matugm 2015-02-27 02:54:48)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Как подключиться по SSH
SSH — это основной протокол для удаленного управления серверами на базе операционной системы Linux. Все действия при подключении к SSH выполняются в командной строке, но при достаточном уровне знаний и привилегий в системе там можно сделать практически все что угодно, в отличие от того же FTP где можно только передавать и редактировать файлы.
Если вы покупаете VPS сервер или продвинутый хостинг, обычно в письме вместе с другими данными авторизации есть данные доступа по SSH. В этой статье мы рассмотрим как подключиться по SSH к серверу из Linux или Windows.
Что такое SSH?
Поскольку эта статья рассчитана именно на новичков, то перед тем, как перейти дальше давайте подробнее разберемся что из себя представляет SSH. Исторически так сложилось что на большинстве серверов используется операционная система Linux, во многом этому посодействовала ее бесплатность. Графический интерфейс на серверах Linux не используется для экономии ресурсов, поэтому единственным способом администрирования сервера остается командная строка.
Но это не является недостатком, потому что в командной строке Linux можно сделать больше чем графическом интерфейсе. Протокол SSH позволяет вам выполнять команды в удаленной системе так, как будто вы это делаете в своей системе. Вам доступен буфер обмена, вы вводите команды и можете использовать их вывод. Недоступны разве что файлы из вашей файловой системы. Например, когда вы подключитесь к серверу по SSH из Ubuntu, то все будет выглядеть так, как будто вы открыли терминал в своей системе.
Как подключиться по SSH
Для подключения по SSH нам необходимо знать такие данные:
- ip адрес сервера, к которому мы собираемся подключится;
- порт, на котором ожидает подключения SSH сервер, по умолчанию используется 22, но в целях безопасности порт подключения ssh часто изменяют;
- имя и пароль пользователя на удаленном сервере.
Больше ничего не нужно, обычно эти данные присылают в письме вместе с описанием VPS. Теперь перейдем к практике.
1. Подключение через SSH в Linux
В Linux подключение по SSH выполняется с помощью утилиты ssh. Мы более подробно рассматривали работу с ней в статье как пользоваться ssh. Для подключения к удаленному компьютеру ее синтаксис будет выглядеть следующим образом:
$ ssh имя_пользователя @ айпи_адрес
Это самый простой вариант, если вам также нужно задать порт, используйте опцию -p:
$ ssh имя_пользователя @ айпи_адрес -p порт
Чтобы выполнить подключение по SSH Linux нажмите Ctrl+Alt+T для открытия терминала и наберите команду, заменив нужные значения:
Или, с нестандартным портом:
ssh sergiy@192.168.1.2 -p 2223
Если ip_адрес и порт правильные, то на следующем шаге программа попросит у вас ввести пароль:

Если пытаетесь подключится через SSH к этому серверу первый раз, то утилита также попросит подтвердить добавление нового устройства в свой список известных устройств, здесь нужно набрать yes и нажать Enter:

Теперь вы подключены, и все вводимые далее команды будут выполнены на удаленном сервере:

Если же произошла ошибка и IP адрес или порт введены неверно, то вы получите ошибку Connection Refused:

Просто убедитесь что порт введен верно. Если это ваш сервер, то, возможно на нем еще нужно разрешить подключение SSH в брандмауэре. В Ubuntu/Debian для этого на удаленном сервере выполните:
sudo ufw allow 22/tcp
А в CentOS/Fedora:
firewall-cmd —permanent —zone=public —add-port=22/tcp
Если вы используете другой порт для SSH, то замените 22 на свой порт. Для удобства подключения по SSH в дальнейшем можно настроить авторизацию по ключу ssh, чтобы не вводить каждый раз пароль.
Теперь вы знаете как подключиться по ssh linux и решить проблемы с подключением. А теперь перейдем к Windows.
2. Подключение через SSH в Windows
Раньше подключение по SSH из Windows выполнялось только с помощью сторонних утилит, например PuTTY. Но в Windows 10 был добавлен встроенный OpenSSH клиент и работает он точно так же, как и в Linux. По умолчанию этот компонент не активирован. Для его установки откройте Параметры -> Приложения:


Затем выберите Управление дополнительными компонентами:

Здесь нажмите добавить новый компонент и в открывлемся меню выберите OpenSSH Client и нажмите Устанвоить:

Дальше вернитесь назад и дождитесь завершения установки. После того, как SSH клиент будет установлен нужно обязательно перезагрузить компьютер.

После перезагрузки нажмите Win+R чтобы открыть окно запуска команд и наберите в нем cmd:

Далее нажмите Enter. Перед вами откроется командная строка Windows. Здесь можно использовать утилиту ssh. Синтаксис у нее абсолютно такой же, как и для Linux:
ssh имя_пользователя @ айпи_адрес -p порт
Например, такой командой можно подключится по SSH к Raspberry Pi, который находится в вашей локальной сети по адресу 192.168.1.5:
Утилита предложит добавить устройство в список известных:

Затем предложит ввести пароль:

Все следующие команды будут выполняться уже на Raspberry Pi или другой удаленной машине, к которой вы подключились.

Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.
Выводы
В этой статье мы рассмотрели как выполняется подключение к серверу по SSH из Linux или Windows. Как видите, это очень просто. А дальше, для работы с удаленным сервером вам понадобятся команды терминала Linux.
Установка и настройка подключения по SSH
Я подключаюсь с Windows машины или из под Ubuntu к серверу с Debian или Ubuntu. Чтобы установить SSH используем в debian-based дистрибутивах.
После завершения установки будет запущен SSH-сервер в режиме демона. Это можно проверить командой:
Теперь сервер работает с базовыми настройками по-умолчанию. К серверу уже можно подключиться по SSH, и это нормально работает в частных сетях, однако лучше бы исправить некоторые параметры для работы в публичных сетях. Настройки хранятся в файле по адресу /etc/ssh/sshd_config. Посмотреть его можно командой
Для редактирования вы можете использовать любой редактоор, я использую nano.
Обратим внимание на параметры Port, AddressFamily, ListenAddress Port задает номер порта, через который будет работать соединение, стандартный порт 22, часто подвергается сканированию ботами. Чтобы задать параметр убираем символ # в начале строки и указываем нужное значение, например 58292. Главное, чтобы порт не конфликтовал с другими портами в системе, mysqld использует порт 3306, httpd — 80, ftpd — 21, поэтому выбирайте пятизначное значение, но не больше 65535.
AddressFamily задает семейство используемых адресов, IPv4 и IPv6, если используются только IPv4 адреса, то IPv6 можно отключить. AddressFamily inet — для IPv4 адресов и AddressFamily inet6 для IPv6 адресов. По-умолчанию значение any.
PubkeyAuthentication позволяет проводить авторизацию и шифрование трафика с помощью SSH-ключей.
Также серверу можно явно указать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности. Для общего файла:
Для каждого пользователя. Благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.
Обратите внимание, что вариант по-умолчанию
Также безопасности ради можно отключить парольный доступ. Но прежде чем его отключать, настрой подключение по SSH-ключам, об этом ниже.
И обязательно отключить идентификацию по пустому паролю:
Следует также отключать root-доступ:
Значение по-умолчанию PermitRootLogin prohibit-password т.е. удалённый вход под пользователем root с парольной и интерактивной аутентификацией теперь запрещён. При указании значений without-password или prohibit-password допускается только аутентификация по ключам.
Для применения сделанных настроек необходим перезапуск SSH-сервера:
Для подключения к серверу используется команда:
Где user_name — имя пользователя. А host_name имя или ip адрес узла к которому производится подключение. Например:
При этом утилита ssh запросит (в зависимости от настроек сервера) логин, пароль или парольную фразу для разблокировки приватного ключа пользователя.
Создание и настройка SSH ключей
Чтобы сгенерировать SSH-ключи на клиентской машине (то есть на той, на которой ты работаешь, не на сервере), выполни:
Введи путь к файлу, в который будут помещены ключи, каталог по-умолчанию указан в скобках, если не знаешь зачем, не меняй его. Если хочешь оставить расположение по умолчанию: нажми Enter. Пароль (passphrase) используется для огранчения доступа к закрытому ключу, пароль усложнит использование ключа третьми лицами в случае утраты. Если не хочешь использовать пароль: нажми Enter без заполнения строки.
При успешной генерации ключей ты увидишь что-то вот такое: 
Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub, закрытый — /домашний_каталог/.ssh/id_rsa.
Можем посмотреть на них при помощи cat : 
Осталось скопировать открытый ключ на сервер в файл /домашний_каталог/.ssh/authorized_keys.
Внимание! Если на сервере еще нет папки .ssh в домашнем каталоге. Позаботься о его создании. Подключись к серверу, как ты подключаешься сейча, вероятно по паролю, и создай каталог:

Команда chmod устанавливает права доступа к папке: “Владелец может читать, записывать и запускать на выполнение; никто другой не имеет права выполнять никакие действия”.
Итак, если папка уже есть, или мы ее создали. Отключаемся от сервера, переходим в папку с нашими ключами на клиенте. Т копируем ключ на сервер:
Также можно открыть файл authorized_keys на сервер редактором, например, nano и вставить строку с открытым ключом после ssh-rca 
Еще один способ скопировать ключ в authorized_keys: команда echo , которая помещает строку в конец файла:

Другой способ перенести открытый ключ на сервер предлагает beget.com Копируем открытый ключ на удаленную систему при помощи scp
Авторизуемся на удаленном сервере:
Заносим открытый ключ нашей локальный системы в авторизованные ключи удаленной системы, устанавливаем правильные права и “убираем за собой мусор”:
Теперь можно перейти к настройкам и отключить аутентификацию по паролю. Подключаемся к серверу, открываем sshd_config:
Раскомментируем строку PasswordAuthentication и вместо yes укажем no:
Перезапускаем службу sshd:
Теперь можно подключаться к серверу:
Или если вы меняли и порт, то
Понятно, что вместо 58292 должен быть наш номер порта. Также можно указать логин при помощи -l
Если тебе нужно подключаться к серверу с нескольких машин есть два решения, одно хорошее, другое простое.
-
Первое. Нужно сгенерировать на каждой машине новую пару ключей, и скопировать публичные ключи вручную на сервер, в файл
Использование SSH для подключения к удаленному серверу

Одним из важнейших инструментов в работе системного администратора является SSH.
SSH, или Secure Shell, — это протокол, используемый для безопасного входа на удаленные системы. Это самый распространенный способ получения доступа к удаленным серверам Linux.
В этом руководстве мы обсудим, как использовать SSH для подключения к удаленной системе.
Базовый синтаксис
Чтобы подключиться к удаленной системе с помощью SSH, мы будем использовать команду ssh . В самом базовом виде команда имеет следующую форму:
remote_host в этом примере является IP-адресом или доменным именем узла, к которому вы пытаетесь подключиться.
Эта команда предполагает, что ваше имя пользователя на удаленной системе совпадает с именем пользователя в локальной системе.
Если ваше локальное имя пользователя отличается от имени пользователя в удаленной системе, вы можете задать его, используя следующий синтаксис:
После подключения к серверу вам, возможно, потребуется подтвердить вашу личность с помощью пароля. Позже мы рассмотрим, как сгенерировать ключи, которые можно использовать вместо паролей.
Чтобы завершить сеанс ssh и вернуться в сеанс локальной оболочки, введите следующую команду:
Как работает SSH?
SSH выполняет подключение клиентской программы к серверу ssh с именем sshd .
В предыдущем разделе команда ssh использовалась для вызова клиентской программы. Сервер ssh уже запущен на удаленном хосте remote_host , который мы указали.
На вашем сервере должен быть запущен сервер sshd . Если это не так, вам может потребоваться подключение к серверу через веб-консоль или локальную последовательную консоль.
Процесс запуска сервера ssh зависит от дистрибутива Linux, который вы используете.
В Ubuntu вы можете запустить сервер ssh с помощью следующей команды:
Эта команда должна запускать сервер sshd, после чего вы сможете выполнять удаленный вход.
Настройка SSH
При изменении конфигурации SSH вы меняете настройки сервера sshd.
В Ubuntu основной файл конфигурации sshd находится в каталоге /etc/ssh/sshd_config .
Выполните резервное копирование текущей версии этого файла перед началом редактирования:
Откройте файл в текстовом редакторе:
Скорее всего, вы захотите оставить большинство опций в этом файле без изменений. Однако существует несколько настроек, на которые вам стоит обратить особое внимание:
Объявление порта указывает, подключения к какому порту будет отслеживать сервер sshd. По умолчанию используется порт 22 . Вам, скорее всего, не придется изменять данную настройку, если только у вас нет конкретных причин для иного решения. Если вы решите изменить порт, позже мы покажем, как подключиться к новому порту.
В объявлениях ключей хоста указывается, где нужно искать глобальные ключи хоста. Мы обсудим, что такое ключ хоста, позже.
Эти две строки указывают на уровень логирования, который необходимо использовать.
Если вы сталкиваетесь с проблемами при работе с SSH, увеличение объема логируемых данных может быть хорошим решением, которое поможет понять, в чем заключается проблема.
Эти параметры определяют некоторые данные для входа в систему.
Опция LoginGraceTime определяет количество секунд, в течение которых следует сохранять подключение при отсутствии успешных попыток входа в систему.
Возможно, вам может быть полезным задать для этого параметра чуть большее количество времени, чем то, которое вам обычно требуется для входа.
PermitRootLogin определяет, разрешен ли вход с помощью пользователя с правами root.
В большинстве случаев необходимо изменить значение на no , если вы создали учетную запись пользователя, которая имеет доступ к высокому уровню привилегий (через su или sudo ) и может использоваться для входа в систему через ssh.
strictModes — это защитник, который будет препятствовать попыткам входа, если файлы аутентификации доступны для чтения всем.
Он позволяет предотвратить попытки входа в систему, когда файлы конфигурации не находятся в безопасном состоянии.
Эти параметры используются для настройки такой возможности, как X11 Forwarding. X11 Forwarding позволяет просматривать графический пользовательский интерфейс (GUI) удаленной системы на локальной системе.
Эта функция должна быть активирована на сервере и передана клиенту SSH во время подключения с помощью опции -X .
После внесения изменений сохраните и закройте файл, введя CTRL+X , Y , а затем нажмите ENTER .
Если вы внесли изменения в какие-либо настройки в файле /etc/ssh/sshd_config , необходимо перезапустить ваш сервер sshd, чтобы изменения вступили в силу:
Вы должны тщательно протестировать ваши изменения, чтобы убедиться, что все работает так, как вы ожидаете.
Вы можете использовать несколько активных сеансов во время внесения изменений. Это позволит вам вернуться к первоначальной конфигурации, если это потребуется.
Выполнение входа через SSH с использованием ключей
Хотя возможность входа в удаленную систему с помощью паролей может быть полезна, гораздо лучшей идеей будет настройка аутентификации с помощью ключей.
Как работает аутентификация с помощью ключей?
Аутентификация с помощью ключей реализуется путем создания пары ключей: приватного ключа и публичного ключа.
Приватный ключ располагается на клиентском компьютере, этот ключ защищен и хранится в секрете.
Публичный ключ может передаваться любому лицу или размещаться на сервере, доступ к которому вы хотите получить.
При попытке подключения с использованием пары ключей сервер будет использовать публичный ключ для создания сообщения для клиентского компьютера, которое может быть прочитано только с помощью приватного ключа.
Затем клиентский компьютер отправляет соответствующий ответ обратно серверу, после чего сервер будет знать, что клиент не является поддельным.
Весь этот процесс выполняется в автоматическом режиме после того, как вы настроите ключи.
Создание ключей SSH
Ключи SSH необходимо генерировать на компьютере, откуда вы хотите войти в систему. Как правило, это ваш локальный компьютер.
Введите следующую команду в командной строке:
Нажмите ENTER, чтобы принять используемые по умолчанию значения. Ваши ключи будут сгенерированы в файлах
Перейдите в каталог .ssh с помощью следующей команды:
Просмотрите данные о разрешениях для файлов:
Как вы можете видеть, файл id_rsa доступен для чтения и записи только владельцу. Именно такие разрешения позволяют сохранить его в секрете.
В то же время файл id_rsa.pub может использоваться совместно и имеет соответствующие разрешения для данной деятельности.
Как передать ваш публичный ключ на сервер
Если в настоящее время вы используете доступ к серверу с помощью пароля, вы можете скопировать ваш публичный ключ на сервер, воспользовавшись данной командой:
В результате будет создан сеанс SSH. Когда вы введете пароль, ваш публичный ключ будет скопирован в файл авторизованных ключей сервера, что позволит не использовать пароль при входе в следующий раз.
Опции для клиентской стороны
Существует ряд опциональных флагов, которые вы можете использовать при подключении через SSH.
Некоторые из них могут быть необходимы при наличии определенных настроек конфигурации sshd на удаленном хосте.
Например, если вы изменили номер порта в конфигурации sshd , вам потребуется указать этот порт на клиентской стороне с помощью следующей команды:
Если вы хотите выполнить отдельную команду на удаленной системе, вы можете указать ее после имени хоста следующим образом:
В результате будет установлено подключение к удаленному компьютеру, а после успешной аутентификации команда будет выполнена.
Как уже отмечалось ранее, если функция X11 forwarding активирована на обоих компьютерах, вы можете получить доступ к данному функционалу, воспользовавшись следующей командой:
При наличии соответствующих инструментов на вашем компьютере программы GUI, которые вы используете на удаленной системе, теперь будут открываться в отдельном окне на локальной системе.
Отключение аутентификации по паролю
Если вы создали ключи SSH, вы можете повысить уровень безопасности вашего сервера, отключив аутентификацию только по паролю. Помимо консоли единственным способом входа на ваш сервер будет использование приватного ключа, который используется в паре с публичным ключом, установленным на сервере.
Предупреждение: перед выполнением этих действий необходимо убедиться, что публичный ключ установлен на сервере. В противном случае вы заблокируете доступ к серверу!
Откройте файл конфигурации sshd , воспользовавшись пользователем root или пользователем с привилегиями sudo:
Найдите строку Password Authentication и раскомментируйте ее, удалив символ # в начале строки. Теперь вы можете указать значение no :
Вы должны также изменить значения двух других настроек (если вы не вносили изменения в этот файл ранее) — PubkeyAuthentication и ChallengeResponseAuthentication . Значения устанавливаются по умолчанию и выглядят следующим образом:
После внесения изменений сохраните и закройте файл.
Теперь нужно перезапустить демон SSH:
Теперь аутентификация по паролю должна быть отключена, а ваш сервер должен быть доступен только с помощью аутентификации по ключу SSH.
Заключение
Обучение работе с SSH точно будет полезным, хотя бы потому, что это очень распространенный инструмент.
По мере знакомства с разными опциями вы будете открывать для себя более продвинутый функционал, который поможет сделать вашу жизнь проще. SSH остается популярным благодаря своей безопасности, легковесности и пользе в самых разных ситуациях.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.