CentOS 7 настройка SSH авторизации по ключу без пароля

Как сгенерировать пару приватного и публичного ключей для ssh соединения? От имени пользователя, для которого нужно создать ключи:

ssh-keygen

Да, команду можно запускать без параметров. И получим примерно такой вывод:

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:
SHA256:8BuNFHHhelqG0yQz7VQv0szFUBeYx5MYDKnW8UEO+wc user@CentOS-74-64-minimal
The key's randomart image is:
+---[RSA 2048]----+
| .+o/X=o|
| o.% B. |
| B B o |
| . B * |
| S + E = |
| . .. o O |
| o .. o . |
| ...+. . |
| ..ooo |
+----[SHA256]-----+

В интерактивном режиме будет запрошен путь по которому сохранять файлы ключей, вполне разумно оставить значение по-умолчанию. Затем дважды будет запрошен passphrase (пароль) для приватного ключа, его тоже можно не задавать, оставив пустым.

Проверим какие файлы были созданы с помощью команды:

ls -la ~/.ssh/

Какой из этих ключей приватный, а какой публичный — легко догадаться.

drwx------ 2 user user 4096 Apr 2 12:22 .
drwx------ 3 user user 4096 Apr 2 12:03 ..
-rw------- 1 user user 1679 Apr 2 12:22 id_rsa
-rw-r--r-- 1 user user 411 Apr 2 12:22 id_rsa.pub

Добавления ключа на сервер

Теперь содержимое файла id_rsa.pub нужно поместить в файл ~/.ssh/authorized_keys на том сервере и для того пользователя сервера, на котором нужно получить авторизацию по ключу. Для примера проделаем это на том же самом сервере для того же самого пользователя:

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

Что делать если Server refused our key

Такая ошибка возникает когда не верно выставлены права на файл authorized_keys. Исправим это:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Не работает авторизация по ssh-ключу

Если авторизоваться всё-равно не удаётся,  то проверьте настройки в файле /etc/ssh/sshd_config, должно быть:

PubkeyAuthentication yes

После чего выполнить:

service sshd reload

Эти действия нужно выполнять от пользователя с правами администратора.

Хитрости при работе с ssh-ключами