Categories: Программы

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

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

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

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

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

ssh

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

uxumax@debian9:~$ 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 [user@]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]] [user@]hostname [command] uxumax@debian9:~$ 

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

uxumax@debian9:~$ ssh bash: ssh: command not found uxumax@debian9:~$ 

Если у вас 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 root@80.90.255.255

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

uxumax@debian9:~$ ssh root@80.90.255.255 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 

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

root@80.90.255.255's password: 

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

root@80.90.255.255'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. root@server:~# 

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

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

root@server:~# exit logout Connection to 80.90.255.255 closed. uxumax@debian9:~$ 

Также можно нажать комбинацию клавиш 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): 

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

uxumax@debian9:~$ 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 uxumax@debian9 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]-----+ uxumax@debian9:~$ 

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

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

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

ssh-copy-id -i ~/.ssh/server-key root@80.90.255.255

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

uxumax@debian9:~$ ssh-copy-id -i ~/.ssh/server-key root@80.90.255.255 /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 root@80.90.255.255's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@80.90.255.255'" and check to make sure that only the key(s) you wanted were added. uxumax@debian9:~$ 

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

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

ssh root@80.90.255.255 -i ~/.ssh/server-key

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

uxumax@debian9:~$ ssh root@80.90.255.255 -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. root@server:~# 

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

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

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

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

ssh root@80.90.255.255 -i ~/.ssh/server-key

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

nano /etc/ssh/sshd_config
root@debian9:~# nano /etc/ssh/sshd_config 

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

... #PasswordAuthentication yes ... 

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

... PasswordAuthentication no ... 

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

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

systemctl restart sshd

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

root@server:~# systemctl restart sshd root@server:~# exit logout Connection to 80.90.255.255 closed. uxumax@debian9:~$ 

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

uxumax@penguin:~$ ssh root@80.90.255.255 Permission denied (publickey). 

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

uxumax@penguin:~$ ssh root@80.90.255.255 -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. root@debian9:~# 

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

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

admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

2 недели ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

2 недели ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

2 недели ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

2 недели ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

2 недели ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

2 недели ago