Для повышения безопасности при доступе к удалённому серверу по SSH рекомендуется выпустить пару ключей (открытый и закрытый) и настроить сервер SSH и клиент для их использования.
В целом задачу можно разбить на следующие шаги:
- Генерация пары ключей.
- Копирование открытого ключа на удалённый сервер.
- Настройка удалённого сервера для использования ключей.
- Настройка локального клиента для использования ключей.
- Отключение возможности удалённого входа без использования ключей.
Пойдём по порядку.
Генерация пары ключей.

Генерировать ключевую пару (открытый и закрытый ключи), а также подключаться к удалённому серверу будем с рабочей станции Windows 10. Для этого нам надо установить в системе SSH-клиент PuTTY с официального сайта (https://www.putty.org/).
Установка PuTTY тривиальна: Далее – далее – … – Готово.
В каталоге установки PuTTY находим утилиту PuTTYgen.exe и запускаем.
В открывшемся окне нажимаем кнопку [Generate] и активно двигаем мышкой в окне программы, наблюдая за шкалой прогресса.
После того, как ключ будет сгенерирован в поля [Key passphrase] и [Confirm passphrase] вводим пароль для ключа и его подтверждение. Если оставить пароль пустым, то работать, конечно, будет намного удобнее… Но в случае компрометации ключа злоумышленник легко получит доступ к вашему серверу.
Нажимаем кнопку [Save public key] для сохранения открытого ключа (к примеру, в файл c:\TEMP\keys\id_rsa.pub). И кнопку [Save private key] для сохранения закрытого ключа (к примеру, в файл c:\TEMP\keys\id_rsa.pri).
Копирование открытого ключа на удалённый сервер.
Скопировать на сервер необходимо открытый ключ в файл .ssh/authorized_keys в профиле пользователя.
Для меня самым простым способом оказалось использовать Командную строку Windows (cmd), в которой необходимо ввести команду:
type c:\TEMP\keys\id_rsa.pub | plink.exe –ssh username@host –pw user_password “cat >> .ssh/authorized_keys”
Формат ключа, генерируемый PuTTYgen не принимается SSH-сервером. Если оставить запись всё как есть, то в дальнейшем, при подключении к серверу получим ошибку: Server refused our key.
Для исправления этого, нам необходимо подключиться к серверу по SSH, пока по имени и паролю, и отредактировать файл .ssh/authorized_keys удалив «—- BEGIN SSH2 PUBLIC KEY —-», «Comment: …», «—- END SSH2 PUBLIC KEY —-» и лишние переносы строк. Можно воспользоваться редактором nano.

В итоге каждый ключ в файле .ssh/authorized_keys должен представлять собой одну строку вида:
ssh-rsa {открытый ключ}
Настройка удалённого сервера SSH c использованием ключа.
Приступаем к настройке ssh-сервера. Открываем для редактирования файл sshd_config:
sudo nano /etc/ssh/sshd_config
Находимо параметру PubkeyAuthentication и устанавливаем значение yes.
Находим параметр AuthorizedKeysFile и устанавливаем значение %h/.ssh/authorized_keys.

Настраиваем права доступа на каталог .ssh и файл authorized_keys:
chmod 700 ~/.ssh
chmod 700 ~/.ssh/authorized_keys
chown username:usergroup ~/.ssh –R
Перезапускаем сервер ssh:
sudo service ssh restart
Настройка локального клиента для использования ключей.
Открываем ssh-клиент PuTTY.

На закладке Session в окне [Host Name (or IP address)] вводим имя удалённого сервера или его IP-адрес.
На закладке Connection – SSH – Auth – Credential для параметра [Private key file for authentication:] нажимаем кнопку [Browse…] и выбираем файл с закрытым ключом, сохранённый на первом этапе (c:\TEMP\keys\id_rsa.pri).
Можно вернуться на закладку Session в окне [Saved Sessions] ввести удобное имя для подключения и нажать кнопку [Save], чтобы каждый раз не выбирать закрытый ключ и не вводить адрес сервера вручную.
Внизу окна нажимаем кнопку [Open], вводим пароль для закрытого ключа и проверяем, что произошло подключение с использованием ключа.
Доступ к серверу по SSH с использованием ключа получен, ошибок нет. Остаётся только отключить возможность использования входа по паролю.
Отключение возможности удалённого входа без использования ключей.
После успешного подключения к серверу с использованием ключей, необходимо отключить возможность подключения по ssh по паролю.
Для этого опять открываем на редактирование файл sshd_config:
sudo nano /etc/ssh/sshd_config
Находим параметр PasswordAuthentication и устанавливаем ему значение no.

Перезапускаем сервер ssh:
sudo service ssh restart
Получаем удовольствие от повышения уровня защищённости.