Аутентификация на OpenSSH сервере с помощью файлов ключей
OpenSSH является набором инструментов для защищенной работы с удаленным компьютером.
OpenSSH поддерживает несколько способов аутентификации, одним из которых является, наиболее безопасный и удобный способ, с использованием личных и публичных ключей (Identities/Pubkeys). При использовании данного способа аутентификации, для работы с удаленным компьютером необходимо обладать приватным ключом и кодовой фразой, обычный способ аутентификации (паролем) может быть отключен администратором сервера совсем.
Для использования этого способа нам нужно сгенерировать приватный и публичный ключ, при этом приватный ключ мы защищаем кодовой фразой, чтобы другие пользователи вашего компьютера не могли им воспользоваться. Создание ключей осуществяется утилитой ssh-keygen, в качестве параметра задается тип ключа SSH (RSA1 — для протокола SSH 1 или RSA, DSA для протокола SSH 2).
При генерации ключа можно изменить имя файла ключа и задать ключевую фразу для работы с личным ключом.
# ssh-keygen -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):
После окончания генерации необходимо добавить содержимое файла вашего публичного ключа (в данном случае id_rsa.pub) в файл ~/.ssh/authorized_keys
на удаленном компьютере. Проще всего это сделать так (если директории .ssh или файла authorized_keys еще нет, то они создаются):
#scp id_rsa.pub user@server.ru:id_rsa.pub
Password: вводим пароль
#ssh user@server.ru
Password: вводим пароль
#mkdir .ssh
#chmod 700 .ssh
#cd .ssh
#cat ../id_rsa.pub >> authorized_keys
#chmod 600 authorized_keys
#exit
Также на сервере SSH должен быть разрешен данный вид аутентификации, проверьте наличие указанных ниже строк в файле /etc/ssh/sshd_config
.
#Разрешает аутентификацию ключами по протоколу SSH 1
RSAAuthentication yes
#Разрешает аутентификацию ключами по протоколу SSH 2
PubkeyAuthentication yes
#Адрес файла ключей относительно домашней папки пользователя
AuthorizedKeysFile .ssh/authorized_keys
При необходимости сделайте в файле нужные изменения и перезапустите демон OpenSSH:
#/etc/init.d/sshd restart
Теперь при подключении к серверу сначала будет происходить попытка осуществить аутентификацию с помощью ключа, а в случае неудачи — по паролю:
#ssh server.ru
Enter passphrase for key '/home/xahria/.ssh/id_rsa':
В случае если у Вас несколько приватных ключей для разных целей, то при подключении, с помощью параметра -i ~/.ssh/special_id_rsa
можно указать ключ, который нужно использовать.
# ssh -i ~/.ssh/special_id_rsa server.ru
Также можно создать файл ~/.ssh/config
и указать в нем сервер и ключ необходимый для аутентификации на нем:
Host server.ru
IdentityFile ~/.ssh/special_id_rsa
у меня при после всех процедур при попытке зайти на удаленный компьютер используя мой аккаунт@удаленный комп, все равно запрашивает пароль и ввод пустого пароля или же ввод пароля моего пароля не помогает. Как исправить?
Это наверно потому что ты ключ защитил пассфразой, это ее скорее всего спрашивает, лечится или пересозданием ключика без защиты пассфразой, или вспоминанием этой самой пассфразы.