Данная запись написана исключительно для себя, с целью не забыть как это делается. Не стоит ожидать внутри литературного стиля и прочих радостей жизни…​

Автор не претендует на верность последовательности шагов, просто он сделал так и у него все заработало…​

Итак, преамбула. У нас есть сервер с Oracle Solaris 11, названный, например, d3, на котором крутится sshd. И есть рабочий компьютер или ноутбук, на котором есть ssh клиент и владелец которого хочет авторизовываться на сервере по ssh без ввода пароля — по ключу.

Сначала разберемся с sshd. Настраивать в его конфиге что-то специально практически не надо — лично я просто прошерстил его на наличие StrictModes yes и PasswordAuthentication yes, сделал PermitEmptyPasswords yes и PrintMotd no.

После этого, естественно нужно рестартнуть sshd командой:

svcadm restart ssh

Теперь перейдем к рабочему компьютеру с ssh клиентом и сгенерим для текущего пользователя (из под которого мы будем запускать ssh-клиент) пару RSA ключей, закрытый и открытый:

ssh-keygen -t rsa -b 4096

Пароль должен быть пустым (просто жмите Enter). Когда ssh-keygen спросит куда девать сгенеренный закрытый ключ — будьте внимательны, если у вас уже есть пара ключей с дефолтными именами в ~/.ssh — id_rsa и id_rsa.pub!

Теперь, публичный ключ необходимо залить на наш сервер, в каталог пользователя под которым мы будем ходить на сервер через ssh. Нужно добавить содержимое файла с публичным ключом в ~/.ssh/authorized_keys и после этого можно залитый публичный ключ из каталога пользователя можно удалить. Теперь, sshd узнает наш ssh-клиент, когда тот предъявит ему соответствующий закрытый ключ.

Но sshd еще должен узнать машину, с которой мы будем заходить на сервер. Для этого нам нужен публичный RSA-ключ нашей рабочей машинки. Обычно он лежит где-то в /etc/ssh/ssh_host_rsa_key.pub. Если его там нет, то нужно стать рутом, снова запустить ssh-keygen и попросить его сохранить наш новый закрытый ключ в /etc/ssh/ssh_hot_rsa_key. Пароль оставить пустым! Публичный же ключ нужно снова залить на сервер, в каталог соответствующего пользователя, и скопировать его в ~/.ssh/known_hosts.

Остался еще один момент. По умолчанию, в сгенеренные публичные ключи добавляется имя машины, на которой они были сделаны. Но сеть, к которой я периодически подключаю свой ноутбук, слыхом не слыхивала о хосте drag0n-laptop со странным доменом drakia.planet =)

Нужно открыть файлы known_hosts и authorized_keys и для наших ключей поменять "концы" с:

ndv4QsM2DDw== drag0n@drag0n-laptop
cKXuIbxRGUw== root@drag0n-laptop

на:

ndv4QsM2DDw== drag0n@d3
cKXuIbxRGUw== root@d3

После этой правки все начинает прекрасно работать и логиниться по ssh без пароля.

Теперь, после всех манипуляций, нужно запускать ssh, указывая ему наш пользовательский закрытый ключ (ключ машины он видимо подхватывает автоматом):

ssh -i /home/drag0n/.ssh/id_rsa_d3 drag0n@192.168.1.7

И вуаля — мы в системе без всякого ввода паролей и прочих подобных процедур:

@drag0n-laptop ~$ d3ssh
Last login: Tue Nov 15 19:21:52 2011 from 192.168.1.160
      We are the Electrons.
      Resistance is voltage / current.
drag0n@d3:~$

linux