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

47984
Andrew Atkinson

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

19

7 ответов на вопрос

24
andrekeller

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

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

This happened to me when the private key I had was not in OpenSSH format.

I originally generated my key on windows using PuttyGen and was getting bounced with this same thing.

I was able to fix it by loading the key in PuttyGen and clicking "Conversions" to get it to OpenSSH format.

2
nerdwaller

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

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

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

For me since the key itself was encrypted, I followed the following steps:

  • Start ssh-agent: $ ssh-agent bash
  • Add standard identity key to the key manager: $ ssh-add
  • If you want to add a different key, then: $ ssh-add /location/of/key

To inspect at any time, the list of currently loaded keys:

$ ssh-add -l 

More details can be obtained from this link

1
Gon

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

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

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

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

1
mosh442

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

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

PubkeyAcceptedKeyTypes=+ssh-dss 

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

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

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

ssh-add -K /path/to/private_key 

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

ssh-add -K ~/.ssh/id_rsa 

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

Что мне нужно сделать на Linux-клиенте, если Mac-клиент работает? bbaassssiiee 7 лет назад 0