генерируем ключи на локальном хосте под тем пользователем, с которого хотим иметь доступ к удаленному хосту
ssh-keygen -b 2048 -t rsa
создаются два ключа
.ssh/id_rsa (закрытый)
.ssh/id_rsa.pub (открытый)
копируем открытый ключ — содержимое файла id_rsa.pub — на удаленный хост в файл .ssh/authorized_keys;
если файла authorized_keys нет, создаем его.
ssh-keygen
-t — тип ключа — dsa или rsa;
-b — длина ключа — для rsa можно и не указывать -b 2048 — потому как это дефолтное значение;
если нужен именно беспарольный доступ по ключам — поле passphrase оставляем пустым;
ssh-keygen -b 2048 -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:
Примечание
! При генерировании и размещении ключей имеют значения пары пользователь-локальный хост и пользователь-удаленный хост.
Вот следующая ситуация, имеем:
Локальный хост — host.example.com, пользователь на нем — user
Удаленный хост — server.example.com, пользователь на нем — admin
Вы — пользователь user на host.example.com и хотите иметь беспарольный доступ по ключам к server.example.com под пользователем admin.
Тогда вы на host.example.com, будучи залогиненым под своим пользователем user, генерируете ключи, которые сохраняются по умолчанию (если не задать другое) в вашем домашнем каталоге в директории .ssh
/home/user/.ssh/id_rsa
/home/user/.ssh/id_rsa.pub
На удаленном хосту в домашнем каталоге пользователя admin в директории .ssh создаете файл authorized_keys и копируете в этот файл одной строкой содержимое ранее сгенерированого на локальном хосту публичного ключа
/home/admin/.ssh/authorized_keys
Все работает:
[user@host ~]$ ssh admin@server.example.com
! При этом если измените пользователя на любой из сторон — без пароля уже не зайдете.
Например, все так же будучи залогиненым под пользователем user на host.example.com, вы ввели команду su и попали в окружение root-а на своем host.example.com, и теперь пытаетесь зайти на удаленный хост
root@host:/home/user# ssh admin@server.example.com Password for admin@server.example.com:
— и у вас спрашивают пароль, а все потому что не тот пользователь.
! Опять-таки но — если вы root, то у вас есть доступ к любым файлам на вашей системе, в том числе и доступ к закрытому ключу /home/user/.ssh/id.rsa
поэтому с roota вы можете попасть на удаленный хост по ключам, просто указав путь к ключу с помощью опции -i
root@host:/home/user# ssh -i /home/user/.ssh/id_rsa admin@server.example.com