Для организации подключения по 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$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
Есть возможность просмотреть список сохраненных ключей
bsd$ ssh-add -l
2048 SHA256:19Q3vOQTsTs8nwiXATi/rEGKRiYrcMmQYk9l4rYiG4I ~/.ssh/id_rsa (RSA)
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