Как сгенерировать пару приватного и публичного ключей для 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
Эти действия нужно выполнять от пользователя с правами администратора.