Открытый ключ всегда запрашивает пароль и ключевую фразу

Я пытаюсь SSH из NAS на веб-сервер, используя открытый ключ. Пользователь NAS - "root", а пользователь веб-сервера - "backup"

У меня все права установлены правильно, и когда я отлаживаю соединение SSH, я получаю: (последний маленький кусочек отладки)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Я использую команду:

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

Тот факт, что он запрашивает парольную фразу, безусловно, является хорошим признаком, но я не хочу, чтобы он запрашивал этот пароль или пароль (который приходит позже, если я нажимаю "return" на парольной фразе)

8 ответов

Решение

Это потому, что ваш закрытый ключ зашифрован...

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

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


РЕДАКТИРОВАТЬ

О, я только что понял, что вы пытаетесь использовать свой открытый ключ для аутентификации... Вы хотите использовать закрытый ключ:

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

И просто чтобы убедиться, что содержимое файла id_dsa.pub переходит в ~backup/.ssh/authorized_keys на веб-сервере. Вы можете использовать следующую команду, чтобы сделать это автоматически

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

Это случилось со мной, когда закрытый ключ у меня был не в формате OpenSSH.

Первоначально я сгенерировал свой ключ на окнах, используя PuttyGen, и мне стало все равно.

Мне удалось это исправить, загрузив ключ в PuttyGen и нажав "Конверсии", чтобы получить его в формате OpenSSH.

Есть несколько вещей.

Прежде всего, если KEY запрашивает пароль, ключ был сгенерирован с ним. Во-вторых, если система запрашивает пароль после, ключ не проходит проверку подлинности. Это значит, что вам нужно будет заново сгенерировать свой SSH-ключ (или изменить его, как предложено @rbtux) и исправить файлы авторизованные ключи.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "необязательный комментарий" -f id_examplekey

Пункты в фигурных скобках - это параметры, тип и размер бита (чтобы указать очевидное: dsa > rsa, 4096 > 1024 - в терминах "безопасность").

Затем вам нужно добавить открытый ключ (.pub) к authorized_keys а также authorized_keys2 файлы (это распространенное заблуждение, чтобы сказать, что.pub для локального использования, однако он предназначен для сравнения с) Так в сервере .ssh папка.

$ cat id_examplekey.pub >> authorized_keys {, 2}

Затем, с вашей стороны, вы должны убедиться, что ключевые разрешения chmod 600 id_example и чтобы облегчить ввод всего этого, вы можете настроить файл конфигурации: ~/.ssh/config на вашем локальном ящике (это скелет, вы можете настроить эту тонну):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

Для меня, так как сам ключ был зашифрован, я сделал следующие шаги:

  • Запустите ssh-agent: $ ssh-agent bash
  • Добавьте стандартный ключ идентификации в менеджер ключей: $ ssh-add
  • Если вы хотите добавить другой ключ, то: $ ssh-add /location/of/key

Для проверки в любое время список загруженных ключей:

$ ssh-add -l

Более подробную информацию можно получить по этой ссылке

Попробуйте https://wiki.gentoo.org/wiki/Keychain

Это своего рода обертка на ssh-agent а также ssh-add

Плюсы: нет необходимости вводить пароль повторно, если вы не перезагружаетесь. Может быть использован в crontab,

Это может помочь

Это может быть потому, что вы используете DSA pubkey, который по умолчанию отключен в OpenSSH v7.

Если вы не можете изменить пару ключей, возможный обходной путь - попросить вашего демона SSH на webserver.com принять эти типы ключей, обновив /etc/ssh/sshd_config или эквивалентное добавление следующей строки

PubkeyAcceptedKeyTypes=+ssh-dss

А затем перезапустить службу

/etc/init.d/ssh restart                     # or equivalent

В Mac OSX вы можете добавить свой закрытый ключ в цепочку для ключей, используя команду:

ssh-add -K /path/to/private_key

Если ваш закрытый ключ хранится в ~/.ssh и называется id_rsa:

ssh-add -K ~/.ssh/id_rsa

Затем вам будет предложено ввести пароль, который будет храниться в вашей цепочке для ключей.

Из-за несогласованных версий OpenSSH и других странностей вы можете попробовать сгенерировать пару ключей на хосте, к которому пытаетесь подключиться.

Другие вопросы по тегам