Установка SSH-сервера на Ubuntu 18.04 LTS

08.12.2019

Теги: CLILinuxSSHUbuntuКлючКонфигурацияНастройкаСерверУстановка

В основном, SSH реализован в виде двух приложений — SSH-сервера и SSH-клиента. В Ubuntu используется свободная реализация клиента и сервера SSH — OpenSSH. При подключении клиент проходит процедуру авторизации у сервера и между ними устанавливается зашифрованное соединение. OpenSSH сервер может работать как с протоколом ssh1, так и с протоколом ssh2. Протокол ssh1 считается небезопасным, поэтому его использование не рекомендуется.

$ sudo apt install openssh-server

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

$ sudo systemctl start|stop|restart ssh

Разрешить или запретить запуск службы при загрузке системы:

$ sudo systemctl enable|disable ssh

Проверить, что служба ssh.service работает:

$ systemctl is-active ssh

Для службы ssh.service есть алиас sshd.service, что может вызывать некоторые проблемы. Например, удалим службу sshd.service из автозагрузки, используя псевдоним:

$ sudo systemctl disable sshd
Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
Removed /etc/systemd/system/sshd.service.

А после этого попробуем добавить обратно:

$ sudo systemctl enable sshd
Failed to enable unit: Unit file sshd.service does not exist.

Но это легко исправить, обратившись по имени:

$ sudo systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.

Собственно, теперь уже можно подключаться по ssh:

$ ssh evgeniy@192.168.110.12

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

The authenticity of host 'ubuntu-wordpress (192.168.110.12)' can't be established.
ECDSA key fingerprint is SHA256:/HFkWvnH6OhtcZlcyz0EEHisiIP84WlpFy25uZ3B1UA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ubuntu-wordpress,192.168.110.12' (ECDSA) to the list of known hosts.

После нашего согласия все-таки подключиться (yes), ключ хоста будет добавлен в файл ~/.ssh/known_hosts. И при следующих подключениях этого предупреждения больше не будет.

Файл конфигурации

Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в директории /etc/ssh/. Перед тем, как вносить изменения, создадим резервную копию:

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
$ sudo nano /etc/ssh/sshd_config

Первым делом желательно сменить порт, на котором работает ssh-сервер:

Port 2222

Во-вторых, запретить вход от имени суперпользователя:

PermitRootLogin no

Настоятельно рекомендуется отключить аутентификацию по паролю (после настройки аутентификации по ключу):

PasswordAuthentication no

Если аутентификация по паролю все-таки нужна — запрещаем авторизацию с пустым паролем:

PasswordAuthentication yes
PermitEmptyPasswords no

Аутентификация по ключу

Наиболее предпочтительным способом авторизации является аутентификация на основе SSH2 RSA-ключей. При таком способе пользователь генерирует на своей стороне пару ключей, из которой один ключ является секретным, а другой публичным. Публичный ключ копируется на сервер и служит для проверки идентичности пользователя.

Создание ключей

Для генерации ключей на клиенте предназначена команда:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Evgeniy/.ssh/id_rsa): ~/.ssh/rsa-vm-wp
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in C:/Users/Evgeniy/.ssh/rsa-vm-wp.
Your public key has been saved in C:/Users/Evgeniy/.ssh/rsa-vm-wp.pub.
The key fingerprint is:
SHA256:qreJu/Sto0HZ3e9cJBcyKJl0Fb/cOBL9l6ozwtbdPAI Evgeniy@TKMCOMP
The key's randomart image is:
+---[RSA 2048]----+
|        . ..o.   |
|       . + . o   |
|        + . + +  |
|     o . o   = *.|
|    o . S . o B.+|
|   .   .   E =...|
|    o . . . +.+  |
|   . =oo + *.+ + |
|    *==+o ..= . .|
+----[SHA256]-----+

Необходимо ввести имя файла ключа (в моем случае ~/.ssh/rsa-vm-wp), пароль для доступа к ключу (можно оставить пустым, нажав Enter).

Ключи готовы, копируем публичный ключ на сервер:

$ ssh-copy-id -p 2222 -i ~/.ssh/rsa-vm-wp.pub evgeniy@192.168.110.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "rsa-vm-wp.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
evgeniy@192.168.110.12's password: пароль

Включаем на сервере аутентификацию по публичному ключу:

$ sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes

И отключаем возможность аутентификации по паролю:

PasswordAuthentication no

Перезагружаем ssh-службу после изменения настроек и пробуем подключиться к серверу по ключу:

$ sudo systemctl restart ssh
$ ssh -p 2222 -i ~/.ssh/rsa-vm-wp evgeniy@192.168.110.12
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-37-generic x86_64)

И последний момент — добавляем новую запись в файл ~/.ssh/config:

Host vm-wp
  User evgeniy
  HostName 192.168.110.12
  Port 2222
  IdentityFile ~/.ssh/rsa-vm-wp

Теперь к серверу можно подключаться так:

$ ssh vm-wp
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-37-generic x86_64)

Поиск: CLI • Linux • SSH • Ubuntu • Настройка • Установка • Служба • Сервер • Ключ

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.