6

У меня есть ключевой файл с именем KEY , который имеет KEY и KEY.pub . Я загружаю паб на authorized_keys и добавляю

ssh-add /home/user/.ssh/KEY

Но когда я пытаюсь соединиться с ssh user@host.com , он продолжает спрашивать у меня пароль.

Если я сгенерирую ключ с помощью ssh-keygen и оставлю имя ключа по умолчанию, загрузив паб и загрузив приват, он не запрашивает пароль.

В чем может быть проблема?

3 ответа3

8

С помощью ssh -vvv user@host.com вы можете получить выходные данные отладки, и он, вероятно, скажет вам, что не может пройти аутентификацию с помощью ~/.ssh/id_rsa (файл ключей ssh по умолчанию). Ответ должен сказать ssh, какой ключ использовать:

ssh -i /home/user/.ssh/KEY user@host.com

Вы также можете добавить свой ключевой файл для каждого хоста в свой файл .ssh/config , тогда вам просто нужно будет ввести ssh host.com и пользователь / ключ будут выбраны автоматически.

Пример записи для .ssh/config (Для получения дополнительной информации см. man ssh_config):

Host mysshserver ssh.host.com
HostName ssh.host.com
User myusername
IdentityFile ~/.ssh/mykeyfile


Объяснение ключевых файлов из man ssh:

 -i identity_file
             Selects a file from which the identity (private key) for RSA or
             DSA authentication is read.  The default is ~/.ssh/identity for
             protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro‐
             tocol version 2.  Identity files may also be specified on a per-
             host basis in the configuration file.  It is possible to have
             multiple -i options (and multiple identities specified in config‐
             uration files).
1

Чтобы правильно настроить файлы ключей (здесь), обратите внимание на следующее:

Если ваш .ssh и файлы хоста не имеют необходимых прав доступа И / ИЛИ ваш домашний каталог удаленного пользователя не имеет необходимых прав доступа, ssh будет продолжать запрашивать пароль, хотя и найдет файл ключа.

Вы можете увидеть, предлагается ли ваш ключевой файл / файлы, используя ssh -vvv user@host

Пример вывода:

debug1: Offering DSA public key: /Users/<user>/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

Проверьте как домашний каталог удаленного пользователя, так и разрешения удаленного каталога .ssh

Например, разрешения должны быть:

$ls -ld .ssh
drwx------ 2 <owner> <group> 4096 2011-12-29 20:39 .ssh

$ls -ld ~/
drwxr-xr-x 28 <owner> <group> 4096 2011-12-29 20:15 /home/<user>/ 
-1

Статья Как настроить SSH Logins на основе ключевого файла объясняет проблему и решение

когда вы находитесь в системе A и набираете «ssh username @ B», система B проверит, находится ли ключ, соответствующий файлу "id_dsa" вашей системы A, среди тех, которые известны вашему пользователю (то есть он находится в файле authorized_keys ключах) в подкаталоге вашего пользователя .ssh). Если это так, он не будет запрашивать системный пароль, он будет запрашивать связанную с ключом ключевую фразу, что означает, что, если вы настроили его без ключевой фразы, вы будете без необходимости что-либо вводить.

Смотрите статью для подробных инструкций.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .