LinuxInsider.ru

Как подключиться по SSH из Linux

Для удаленного подключения к серверу есть много способов, но самый популярный и простой среди них это защищенный сетевой протокол SSH (Secure Shell) с помощью утилиты OpenSSH. По-умолчанию утилита дает доступ только к командной строке удаленного севера, но при желании можно запустить программы с графический интерфейсом прямо с сервера. Если вы хотите ознакомиться с полным списком команд утилиты, то это можно сделать здесь. В этой статье мы разберем как подключиться по SSH и самые основные команды, которые требуются чаще всего.

Проверка наличия утилиты и установка OpenSSH

Как правило, во многих дистрибутивах Linux утилита OpenSSH уже установлена по-умолчанию, но конечно же есть исключения. Для проверки наличия утилиты нужно ввести в терминал коротую команду:

ssh

И если вывод будет содержать возможные опции использования в примерно таком виде, значит OpenSSH установлен:

[email protected]:~$ ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [[email protected]]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [[email protected]]hostname [command]
[email protected]:~$ 

Если же вывод содержит сообщение, что команда не найдена, то нужно установить openssh-client.

[email protected]:~$ ssh
bash: ssh: command not found
[email protected]:~$

Если у вас Debian или Ubuntu, то для установки введите:

sudo apt install openssh-client

Если у вас CentOS или Fedora, то введите

sudo yum install openssh-client

Как подключиться по SSH с помощью пароля

Обычное подключение по SSH без дополнительных опций выглядит очень просто. Достаточно ввести логин, IP сервера и пароль. Допустим хостинг-провайдер нам выдал следующие данные после покупки сервера:

  • IP-адрес сервера: 80.90.255.255
  • Логин: root
  • Пароль: xvFkWsIys

Исходя из этого мы формулируем команду в следующем виде ssh логин@IP-адрес:

ssh [email protected]

Если подключение осуществляется впервые, то утилита задаст вопрос, стоит ли добавлять в список доверенных хостов. Соглашаемся, набрав yes и нажав Enter.

[email protected]:~$ ssh [email protected]
The authenticity of host '80.90.255.255 (80.90.255.255)' can't be established.
ECDSA key fingerprint is SHA256:8CbYK1TqAF3f1iSYLoUjSkurPQ0ve5I0GunB7lnPs+k.
Are you sure you want to continue connecting (yes/no)? yes

Далее утилита запросит пароль пользователя

[email protected]'s password:

Его можно ввести вручную или вставить из буфера обмена. При вводе пароля не будут появляться звездочки или какие-либо условные символы, это нормально. После ввода пароля вы попадаете в командную строку сервера, к которому подключались. Это значит, что теперь все введенные команды будут выполнятся именно на сервере.

[email protected]'s password: 
Linux debian9 5.4.40-04224-g891a6cce2d44 #1 SMP PREEMPT Tue Jun 23 20:21:29 PDT 2020 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.
[email protected]:~# 

Как отключиться от севера и прервать SSH сессию

Отключиться от сервера можно двумя простыми способами. Первый это ввести команду exit:

[email protected]:~# exit
logout
Connection to 80.90.255.255 closed.
[email protected]:~$

Также можно нажать комбинацию клавиш Ctrl + D, что также прервет SSH сессию и вернет нас туда, откуда мы подключались.

Как подключиться по SSH с помощью ключа

Выше мы разобрали простое подключение по паролю, но гораздо безопаснее подключаться, используя ключ. В этом случае нужно вводить пароль от ключа, а не юзера сервера. Возможно даже вообще не вводить никаких паролей, а использовать только файл-ключ, что является очень удобным и относительно безопасным. Но обо всем по порядку.

Генерация (создание) SSH-ключа

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

Чтобы создать ключ, нужно ввести команду ssh-keygen -f /папка/где/создать/ключ. В примере мы будем использовать самую распространенную папку для ключей, которая находится в домашней папке пользователя: /home/имя_пользователя/.ssh/название_ключа или ее укороченной версией ~/.ssh/название_ключа:

ssh-keygen -f ~/.ssh/server-key

После ввода утилита попросит задать пароль для ключа. Здесь довольно важный момент. Можно вовсе не задавать пароль и просто нажать Enter. В таком случае подключение к серверу будет осуществляться только по ключу и без всякого ввода пароля.

Но в примере мы будем «параноиками» и зададим пароль на использование ключа. Придумаем именно отдельный пароль, не тот, что от пользователя сервера. Можно выбрать вариант проще, который возможно будет без труда запомнить и ввести вручную, например brandy-coin-13!. Его мы будем в будущем вводить каждый раз, как потребуется использовать ключ. И так, задаем…

ssh-keygen -f ~/.ssh/server-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 

После этого нас попросят ввести пароль еще раз, повторяем его и если вы правильно ввели путь до папки для ключа, то должен получиться примерно такой вывод:

[email protected]:~$ ssh-keygen -f ~/.ssh/server-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/uxumax/.ssh/server-key.
Your public key has been saved in /home/uxumax/.ssh/server-key.pub.
The key fingerprint is:
SHA256:RX489Wcrb1rt/CRlEs08D8T5Wn//qydYZOpOlIs+cGE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|          .  .o. |
|         o . oo= |
|          o + ooB|
|         E ..+ +B|
|        S .o+..+=|
|       . .o...+++|
|        o..oo .+=|
|        ...o .+*.|
|         .o. o+.O|
+----[SHA256]-----+
[email protected]:~$ 

В выводе строка с текстом Your identification has been saved in говорит в какой именно папке сохранился ключ.

Добавление ключа в список доверенных на сервере

В предыдущем этапе мы только создали ключ. Пока он не подходит ни к одному серверу. Чтобы использовать его для входа на наш сервер, необходимо добавить его в список доверенных ключей на этом сервере. Звучит сложно, но на самом деле все обходится лишь одной командой, которая содержит путь до ключа, логин и IP-адрес сервера в своих опциях и имеет такой вид: ssh-copy-id -i /путь/до/ключа логин@IP-адрес.

ssh-copy-id -i ~/.ssh/server-key [email protected]

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

[email protected]:~$ ssh-copy-id -i ~/.ssh/server-key [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/uxumax/.ssh/server-key.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[email protected]:~$ 

Подключение к серверу по ключу

Теперь можно подключаться к серверу, используя ключ. Для этого вводим команду, которая содержит логин, IP-адрес сервера и путь до ключа с опцией -i: ssh логин@IP-адрес -i /путь/до/ключа

ssh [email protected] -i ~/.ssh/server-key

После ввода потребуется ввести пароль от ключа, который мы задавали в прошлом разделе. Если вы тогда просто нажали Enter, ничего не вводили, то вас сразу перекинет на север, без запроса пароля.

[email protected]:~$ ssh [email protected]  -i ~/.ssh/server-key
Enter passphrase for key '/home/uxumax/.ssh/server-key': 
Linux debian9 5.4.40-04224-g891a6cce2d44 #1 SMP PREEMPT Tue Jun 23 20:21:29 PDT 2020 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.
[email protected]:~# 

Как ограничить подключение по паролю

Если ограничить подключение по паролю, то использование утилиты OpenSSH будет более безопасным, потому что даже если украдут ваш пароль, то он будет практически бесполезным, потому что зайти на сервер по SSH, используя его, будет уже невозможным.

Для выставления ограничений необходимо иметь права администратора, вы должны быть авторизованным под root или использовать sudo перед каждой командой. В примерах будет использоваться вариант без sudo, чтобы не было расхождений с предыдущими примерами.

Для начала зайдем на сервер по ключу:

ssh [email protected] -i ~/.ssh/server-key

Используя консольный текстовый редактор nano, откроем под root файл настроек OpenSSH:

nano /etc/ssh/sshd_config
[email protected]:~# nano /etc/ssh/sshd_config 

После чего мы увидим содержимое файла настроек. Нам нужно найти строчку:

...

#PasswordAuthentication yes

...

Убрать # в начале и заменить yes на no. То есть ее надо преобразить вот в такой вид:

...

PasswordAuthentication no

...

Далее нажимаем сначала Ctrl + O , затем Enter, чтобы сохранить. И Ctrl + X, чтобы выйти.

Теперь, чтобы эти настройки вступили в силу, нужно перезапустить службу SSH. Для этого необходимо ввести следующую команду.

systemctl restart sshd

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

[email protected]:~# systemctl restart sshd
[email protected]:~# exit
logout
Connection to 80.90.255.255 closed.
[email protected]:~$ 

И попробуем обратно подключиться к северу по паролю.

[email protected]:~$ ssh [email protected]
Permission denied (publickey).

И видим, что сервер нас больше таким способом пускать не намерен. А теперь попробуем с помощью ключа.

[email protected]:~$ ssh [email protected] -i ~/.ssh/server-key
Enter passphrase for key '/home/uxumax/.ssh/server-key': 
Linux debian9 5.4.40-04224-g891a6cce2d44 #1 SMP PREEMPT Tue Jun 23 20:21:29 PDT 2020 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.
[email protected]:~# 

На этом настройка завершена, ключ не теряйте, а если потеряете, то пишите хостинг-провайдеру, чтобы он дал вам доступ по VNC, с помощью которого вы сможете включить вход по паролю обратно.

Чтобы сервер был в безопасности, советую настроить на нем фаервол и добавить порт SSH в список доверенных.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Сообщить об опечатке

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