Установка SSH-сервера на Ubuntu 18.04 LTS
В основном, 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
В-третьих, запретить вход всем, кроме доверенных пользователей:
AllowUsers evgeniy sergey
Настоятельно рекомендуется отключить аутентификацию по паролю (после настройки аутентификации по ключу):
PasswordAuthentication no
Если аутентификация по паролю все-таки нужна — запрещаем авторизацию с пустым паролем:
PasswordAuthentication yes PermitEmptyPasswords no
После всех настроек перезапускаем ssh-сервер (текущая сессия при этом не обрывается):
$ sudo systemctl restart ssh
Аутентификация по ключу
Наиболее предпочтительным способом авторизации является аутентификация на основе 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 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)
- Создание SSH-туннеля. Часть 2 из 4
- Установка WireGuard на Ubuntu 20.04 LTS. Часть вторая из двух
- Установка WireGuard на Ubuntu 20.04 LTS. Часть первая из двух
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 12 из 12
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 11 из 12
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 10 из 12
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 9 из 12
Поиск: CLI • Linux • SSH • Ubuntu • Настройка • Установка • Служба • Сервер • Ключ