2

Я пытаюсь установить ssh без пароля для себя в системе CentOS6. Я иду через следующие шаги:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Создаются соответствующие файлы открытого и закрытого ключей, а также авторизованные ключи. Содержимое ~/.ssh/id_dsa.pub показано ниже:

SSH-ДСС AAAAB3NzaC1kc3MAAACBAMtCKpsSeE8DxjvMqCl2S62YGmR/UMXpLH+tOuCiHzITUnB44kTBfh16WGRjAKdoFcrx/xIZBXyP5YTo1rIGzLbIK+LILOyaIe17mVYWgBs5k5WENLQKwQ3W0kaNvkN+uTcGArDl9r6o8oi8Lnox0ldCp/zGsNZuJfUnCOxX0PthAAAAFQD9wyrHwmyjMKWUhva+pwzhkYjbgQAAAIAqxFHO/Cb834Wa+PcNB80PvcPlwKHMrPnPZcEl+INsNmENU+khLe812GMD8GEsLbLxMgVKlFVAGXT0WUhCYpx7VTeawZ6/dOYlOf44Bjn2z6KAPkQaZyfTzF9gcunDdBY3uHJnOnj9c2bNfMPNc46D5cfPbAov/cNNnue2VWsmtwAAAIEAvJxL25YgbwJdwusIwcVMGjoFj8pRjYKFJwOLvfW1N+UI9u1ZCEkNmuRuOCSRgqDhL0Zr7qv11S8GT4sDdMat6xR7Qhw/Q3NwG4XIOJ5hGoHqlwIleE095JPQnmy8/ffn4qOYPql19RGwTM3lynGVIXBxcIEKzdmeoZKWG3ejS+I = admin-cloud@computer.network.net

Однако когда я запускаю команду «ssh computer.network.net» или "ssh localhost", у меня запрашивается пароль (первая проблема). После ввода пароля и установления сеанса ssh я выхожу и проверяю файл ~/.ssh/known_hosts, в котором был кэширован следующий ключ:

локальный SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEApHXsA7mMOtqKO1XotKTk5vM5F1LRoqxLLZw2TVLUA36BrkJAMM1EqfnH3mIoNz6sJzOdmQV2ubYGkzvCUb1TX8wUId1KQki8I1l2S52vFEwHkJlFe+KFQcU4SBtxDRDEvHkiLid0D37V+O3W6ElxhhRjkL+nebFPSFEdDlwBUTzAmR3KPD9zFjLP3JJZrwYH1E1sEl52pHbrcr7ROhfRjtz+3glVog9tJC3Xbfwu74JeywYrKQXbtDV84CJ0FoD6WAtJ+V0Dh8hnyBDkdbBc/zVIEDcXfcVNA4yc2noAHdQQ6p11Q8zW94/aJVhi/t0D9vSVMZP8UbHmnM2RfElIww ==

это ключ RSA, а не ключ DSA, который я сгенерировал (вторая проблема). После некоторых копаний я нашел этот ключ RSA в /etc/ssh/ssh_host_rsa_key.pub.

Почему SSH использует ключи в папке /etc /ssh, а не ключи, которые я сгенерировал в папке ~ /.ssh? Как я могу сказать SSH использовать пару открытого личного ключа в папке ~ /.ssh. Взгляд на man ssh, кажется, указывает на то, что это поведение по умолчанию, но оно явно не происходит.

Заранее спасибо.

ОБНОВИТЬ

Вывод попытки ssh -v localhost является многословным, но я нашел один интересный тидбит:

debug1: Next authentication method: publickey
debug1: Offering public key: /home/admin-cloud/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 434
Agent admitted failure to sign using the key.
debug1: Trying private key: /home/admin-cloud/.ssh/identity
debug1: Trying private key: /home/admin-cloud/.ssh/id_rsa
debug1: Next authentication method: password

Похоже, он нашел мой ключ ~/.ssh/id_dsa, получил подтверждение и затем «Агент признал, что не смог подписать ключ». После этого он ищет ~/.ssh/identity (не существует) и ~/.ssh/id_rsa (не существует), а затем, наконец, просто запрашивает пароль. Есть идеи об этой ошибке?

2 ответа2

2

Файл authorized_keys должен содержать открытый ключ, а не частный. Следующая команда должна вместо этого использовать файл id_dsa.pub :

cat ~/.ssh/id_dsa >> ~/.ssh/authorized_keys

Файл known_hosts для ключей хоста, так что это, как и ожидалось.

Кроме того, попробуйте добавить один или несколько флагов -v при запуске ssh, он выведет много полезной информации.

Изменить: Можете ли вы проверить, какие ключи ssh-agent кэшируется с помощью: ssh-add -L ?

Или запустите ssh-add (или ssh-add ~/.ssh/id_dsa), чтобы убедиться, что файл на диске соответствует кешу, и повторите попытку.

1

Проверьте значение вашей конфигурационной переменной IdentityFile в /etc/ssh/ssh_config и убедитесь, что оно не переопределено ~/.ssh/config:

IdentityFile ~/.ssh/id_dsa

И, чтобы быть уверенным (он должен быть избыточным, ssh-keygen создает его с правильными разрешениями), убедитесь, что разрешения для этого файла - 0600, или ssh не будет использовать файл.

Определяет файл, из которого читается аутентификационная идентификация пользователя DSA, ECDSA или RSA. По умолчанию используется ~/.ssh/identity для протокола версии 1 и ~/.ssh/id_dsa, ~/.ssh/id_ecdsa и ~/.ssh/id_rsa для протокола версии 2. Кроме того, любые идентификационные данные, представленные агентом аутентификации, будут использоваться для аутентификации. ssh(1) попытается загрузить информацию сертификата из имени файла, полученного путем добавления -cert.pub к пути указанного IdentityFile.

Имя файла может использовать синтаксис тильды для ссылки на домашний каталог пользователя или один из следующих escape-символов: «% d» (домашний каталог локального пользователя), «% u» (локальное имя пользователя), «% l» (локальный имя хоста), «% h» (имя удаленного хоста) или «% r» (имя удаленного пользователя).

Можно указать несколько файлов идентификации, указанных в файлах конфигурации; все эти идентичности будут опробованы последовательно. Несколько директив IdentityFile добавят к списку опробованных идентификаторов (это поведение отличается от поведения других директив конфигурации).

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