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

19

Я пытаюсь 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» на парольной фразе)

Эндрю Аткинсон
источник

Ответы:

24

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

Вы можете добавить свой ключ к агенту 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
andrekeller
источник
все еще понимаю проблему. Это сработало и дало мне «ваша идентификация была сохранена с новой парольной фразой». но затем все еще просит пароль в следующий раз, когда я пытаюсь войти в систему. Я не уверен, что еще попробовать ...
Эндрю Аткинсон
проверьте мой обновленный ответ ... может быть, это помогает ...
andrekeller
спасибо, кажется, я, возможно, пытался сравнить открытый ключ с открытым ключом ... Мне не нужно было удалять ключевую фразу
Эндрю Аткинсон
Проблема в том, что я использовал свой паб для аутентификации (глупая ошибка). Благодарность!
Qix
6

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

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

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

Locane
источник
2

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

Прежде всего, если 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
nerdwaller
источник
но раздел в отладке, который гласит: debug1: Сервер принимает ключ: pkalg ssh-dss blen 433 Не означает ли это, что ключ был принят? Я воссоздал снова без пароля, все тот же? - У меня нет идей? Спасибо
Эндрю Аткинсон
@AndrewAtkinson Похоже, вы поняли это ниже. Вам нужен закрытый ключ на компьютере с компьютера (локальный, клиентский и т. Д.) И ключ public.pub, добавленный в файлы author_keys. Другие мои предложения должны помочь вам сэкономить время: D Удачи!
nerdwaller
Вы пишете: «Прежде всего, если KEY запрашивает пароль, ключ был сгенерирован с ним». <- да, хотя я только что проверил, что сделал спрашивающий, поэтому, выполняя -i с открытым ключом, $ ssh user@comp -i ~/.ssh/id_rsa.pubон указал неправильные разрешения и закрытый ключ будет проигнорирован .. поэтому я изменил разрешения на 600, как и id_rsa, и он попросил пароль. Таким образом, действительно, он будет запрашивать ключевую фразу, если вы укажете открытый ключ, даже если открытый ключ и закрытый ключ не были созданы с помощью ключевой фразы
barlop
2

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

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

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

$ ssh-add -l

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

Сиби
источник
1

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

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

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

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

Гон
источник
1

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

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

PubkeyAcceptedKeyTypes=+ssh-dss

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

/etc/init.d/ssh restart                     # or equivalent
mosh442
источник
0

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

ssh-add -K /path/to/private_key

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

ssh-add -K ~/.ssh/id_rsa

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

Гроот
источник
Что мне нужно сделать на клиенте Linux, если клиент Mac работает?
bbaassssiiee