Открытый ключ всегда запрашивает пароль и ключевую фразу
Я пытаюсь 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 и других странностей вы можете попробовать сгенерировать пару ключей на хосте, к которому пытаетесь подключиться.