Общие сведения по настройке SSH сервера
Статья включает:
В первую очередь необходимо сгенерировать RSA и DSA ключи:
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' Generating public/private rsa key pair. Your identification has been saved in /etc/ssh/ssh_host_rsa_key. Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub. The key fingerprint is: 55:1c:1e:33:7d:2e:17:8c:44:90:ea:f6:22:83:37:94 root@localhost The key's randomart image is: +--[ RSA 2048]----+ | o@=o | | +.=.o.| | o . o.| | o . o| | S o | | E o | | o . . | | . = . . | | . + . | +-----------------+
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' Generating public/private dsa key pair. Your identification has been saved in /etc/ssh/ssh_host_dsa_key. Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. The key fingerprint is: eb:f7:9d:bf:57:63:e3:82:e3:a0:6f:9c:02:a3:21:73 root@localhost The key's randomart image is: +--[ DSA 1024]----+ | | | | | | | | | S | | o E o . +.| | + o o o.. . o +| | . o.+oo o o.| | .=o.oo +o+| +-----------------+
После этого необходимо установить корректные права доступа на каталог /var/chroot/sshd
:
chmod 755 /var/chroot/sshd
Права доступа на публичные и личные RSA и DSA ключи ssh-keygen выставляет самостоятельно.
Для успешного запуска SSH-сервера требуется наличие запущенного менеджера random. Убедиться в этом можно путем проверки наличия файла устройства /dev/random
. Таким образом, запуск сервера из скрипта /etc/rc.d/rc.local может выглядеть следующим образом:
random & waitfor /dev/random 5 /usr/sbin/sshd &
![]() | В некоторых случаях недостаточно проверить только наличие файла устройства и требуется проверить готовность менеджера к генерации данных. Выполнить это можно одиним из двух способов:
while ! dd if=/dev/urandom bs=1 count=1 of=/dev/null 2>/dev/null; do :; done или ( while ! read -r -d '' -n 1 var < /dev/random; do :; done ) 2> /dev/null |
![]() | Учетная запись, которая будет использоваться для входа в систему по протоколу SSH, должен иметь пароль. SSH-сервер не разрешает использование пустых паролей. Для его установки следует воспользоваться утилитой passwd. |
Более детальная информация может быть найдена на страницах sshd.
Настройка на стороне сервера
В файле /etc/ssh/sshd_config следует раскомментировать опции PubkeyAuthentication и AuthorizedKeysFile:
#RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
Если требуется вход в систему от имени пользователя root
, то раскомментировать опцию PermitRootLogin:
# Authentication: LoginGraceTime 600 PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
После этого обязательно необходимо перезапустить процесс SSH-сервера.
Настройка SSH-клиента в UNIX-подобной ОС
На стороне SSH-клиента следует сгенерировать ключи и добавить их в список доверенных на сервере. Если пользовательские ключи не были сгенерированы ранее, выполнить это можно командой:
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: d1:d2:fb:ce:7a:31:84:5f:35:57:62:9e:4f:5f:48:58 las@calculate The key's randomart image is: +--[ RSA 2048]----+ | oE o| | o .+ =o| | o o. +.=| | o... .oo| | S .o . o| | .+ | | .o | | o. | | .oo | +-----------------+
Передать файл публичного ключа пользователя можно передать на сервер с помощью утилиты scp (допустим, что сервер доступен по адресу 192.168.0.2
):
$ scp ~/.ssh/id_rsa.pub root@192.168.0.2:~/id_rsa_client.pub root@192.168.0.2's password: id_rsa.pub 100% 395 0.4KB/s 00:00
Теперь следует подключиться к SSH-серверу, добавить ключ в число доверенных и удалить файл публичного ключа:
$ ssh root@192.168.0.2 The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established. RSA key fingerprint is SHA256:CQFTHfnyGszGy6EXmJwEifeN5pYn1rr73xf3J0jrBNw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts. root@192.168.0.2's password: Добро пожаловать в ЗОСРВ "Нейтрино"! Выполнен вход в систему: 20:34:29 09.10.2022 на /dev/ttyp0 Предыдущий вход в систему: 20:34:10 09.10.2022 на /dev/ttyp0 # # # mkdir ~/.ssh # chmod 700 ~/.ssh # # cat ~/id_rsa_client.pub >> ~/.ssh/authorized_keys # chmod 600 ~/.ssh/authorized_keys # rm ~/id_rsa_client.pub
Передачу ключа и его добавление в список доверенных можно выполнить и другими способами:
$ ssh-copy-id root@192.168.0.2
или
$ cat ~/.ssh/id_rsa.pub | ssh root@192.168.0.2 \ 'umask 0077 && mkdir -p ~/.ssh && cat - >> ~/.ssh/authorized_keys'
В заключении следует проверить подключение к серверу и отсутствие необходимости ввода пароля:
$ ssh root@192.168.0.2 Добро пожаловать в ЗОСРВ "Нейтрино"! Выполнен вход в систему: 20:34:29 09.10.2022 на /dev/ttyp0 Предыдущий вход в систему: 20:34:10 09.10.2022 на /dev/ttyp0 # #
Более детальная информация может быть найдена на страницах sshd, /etc/ssh/sshd_config и ~/.ssh/ssh_config.
Сообщения об ошибках на стороне клиента
![]() | Местоположение пользовательских конфигурационных файлов SSH-клиента в зависимости от операционной системы:
|
Предыдущий раздел: перейти