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

7 ответов7

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
6

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

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

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

2

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

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

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

$ ssh-add -l

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

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
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
0

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

ssh-add -K /path/to/private_key

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

ssh-add -K ~/.ssh/id_rsa

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

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