Авторизация по SSH-ключу в Debian/Ubuntu

Генерируем ключ:

ssh-keygen -t rsa

Вводим название файла: id_rsa
Вводим пароль (passphrase)
В директори /root/ появится два файлика: id_rsa и id_rsa.pub
Создаём здесь директорию .ssh, если её ещё нет, в ней создаём файл authorized_keys.

cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Копируем к себе файлы id_rsa и id_rsa.pub, с сервера их удаляем.

Запускаем puttygen у себя на компе, загружаем в него файл id_rsa (без расширения), вводим passphrase.

Жмём "Save private key", сохраняем как id_rsa.ppk.

Всё, теперь эти 3 файла мы должны хранить как зеницу ока.

Создаём новый конфиг: /etc/ssh/sshd_config.d/my.conf и удаляем стандартные конфиги из этой папки, если есть.

Содержимое:

PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys
AuthenticationMethods publickey
PasswordAuthentication no

Идём в конфиг /etc/ssh/sshd_config, ищем там эту строчку и переносим её в самый конец файла:

Include /etc/ssh/sshd_config.d/*.conf

Перезагружаем конфиг SSH.

sudo systemctl reload ssh

Или, если systemctl list-units | grep ssh показывает ssh.socket:

sudo systemctl restart ssh.socket

Это безопасно, текущая сессия не разорвётся.

Пробуем авторизоваться по ssh-ключу:
Запускаем тулзу Pageant, загружаем в неё свой ключ id_rsa.ppk.
Заходим в Putty, вводим root - если вас сразу залогинило, не спросив пароль, значит всё нормально.

После этого вы можете попробовать закрыть Pageant и выполнить вход в Putty по логину и паролю - ничего не выйдет. А это значит, что доступ к серверу теперь имеет только владелец файлов id_rsa*, который в добавок должен знать passphrase.