Для организации подключения по SSH с авторизацией при помощи ключей необходимо на сервере в домашней папке пользователя ~/.ssh разместить публичный ключ id_rsa.pub в файле ~/.ssh/authorized_keys, а на стороне клиента в домашней папке пользователя должен находиться приватный ключ ~/.ssh/id_rsa, доступ к которому должен иметь только владелец


DSA-ключи не обладают достаточной стойкостью (длина ключа 1024 бит против 2048 бит в случае RSA-ключа), поэтому по умолчанию они исключены из списка допустимых типов ключей

Тем не менее, возможность создания SSH-аутентификации с DSA-ключами существует


При генерации ключа RSA будет запрошена необязательная парольная фраза (в отличие от пароля можно использовать вообще любые символы и достаточно большую длину)

bsd$ cd ~/.ssh

bsd:~/.ssh $ ssh-keygen -t rsa

...

Теперь необходимо перенести содержимое публичного ключа id_rsa.pub в файл ~/.ssh/authorized_keys сервера, куда будет производится подключение. Простым копированием обойтись нельзя, т.к. в файле authorized_keys уже могут быть внесены другие ключи. Если есть возможность подключения по ssh к данному серверу (предположим, с IP-адресом 10.0.0.1), используя пароль, тогда есть следующая возможность копирования данных

bsd$ cat ~/.ssh/id_rsa.pub | ssh 10.0.0.1 'tee -a .ssh/authorized_keys'

На стороне сервера в конфигурации /etc/ssh/sshd_config нужно выключить аутентификацию по паролям и указать файл с публичными ключами

bsd$ sudo vi /etc/ssh/sshd_config

...

PubkeyAuthentication    yes

AuthorizedKeysFile      .ssh/authorized_keys

...

PasswordAuthentication no

PermitEmptyPasswords no

# Change to no to disable PAM authentication

ChallengeResponseAuthentication no

Обновление конфигурации сервиса после внесения изменений

bsd$ sudo /etc/rc.d/sshd reload

Чтобы при подключении не запрашивалась парольная фраза, можно использовать утилиты ssh-agent и ssh-add (парольная фраза будет сохранена только для текущего экземпляра оболочки)


ssh-agent устанавливает значения экспортируемых переменных и его запуск зависит от рабочей оболочки пользователя, поэтому проще запускать следующей командой eval `ssh-agent`)


bsd$ eval `ssh-agent`

bsd$ ssh-add

Enter passphrase for ~/.ssh/id_rsa:

Есть возможность просмотреть список сохраненных ключей

bsd$ ssh-add -l

2048 SHA256:19Q3vOQTsTs8nwiXATi/rEGKRiYrcMmQYk9l4rYiG4I ~/.ssh/id_rsa (RSA)


http://vds-admin.ru/ssh/ssh-autentifikatsiya-po-klyucham-ispolzovanie-programm-ssh-keygen-i-ssh-agent

FreeBSD 9.0-RELEASE: Fri Feb 22 12:23:16 UTC 2013

Linux-7.2 box 4.2.9-tinycore i686 Sat Jul 11 09:47:29 YEKT 2020