Я уже некоторое время использую аутентификацию с открытым ключом на своих серверах, но у меня возникли проблемы с новым «клиентом», пытающимся подключиться кгитхаб. Я прочитал много тем, чтобы убедиться, что мои разрешения настроены правильно, и сгенерировал новый ключ для github. Проблема, с которой я столкнулся, заключается в том, что ssh запрашивает мою парольную фразу, хотя я ее не устанавливал. Я даже переделал ключ, чтобы быть на 100% уверенным, что я не вводил парольную фразу.
ssh -vvvдает следующий связанный вывод:
debug1: Offering public key: /home/me/.ssh/github.pub
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Remote: Forced command: gerve mygithubusername c3:71:db:34:98:30:6d:c2:ca:d9:51:a8:c6:1b:fc:f7
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp c3:71:db:34:98:30:6d:c2:ca:d9:51:a8:c6:1b:fc:f7
debug3: sign_and_send_pubkey
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/home/me/.ssh/github.pub':
Я пытался выяснить, почему он мне это говорит.PEM_read_PrivateKeyне удалось, но я не могу найти решение.
Я не использую агента или что-то еще. Я настраиваю свой файл ~/.ssh/config примерно так:
Host github
Host github.com
Hostname github.com
User git
PubkeyAuthentication yes
IdentityFile /home/me/.ssh/github.pub
Заранее спасибо.
решение1
Когда вы используете IdentityFile
опцию в своем ~/.ssh/config
вы указываете на приватный,не публика, ключ.
От man ssh_config
:
ФайлИдентификации
Указывает файл, из которого считывается идентификатор аутентификации DSA, ECDSA или DSA пользователя. Значение по умолчанию — ~/.ssh/identity для протокола версии 1 и ~/.ssh/id_dsa, ~/.ssh/id_ecdsa и ~/.ssh/id_rsa для протокола версии 2.
Итак, ваша ~/.ssh/config
запись должна выглядеть так:
Host github.com
Hostname github.com
User git
PubkeyAuthentication yes
IdentityFile /home/me/.ssh/github
решение2
У нас была эта проблема, и это была ошибка копирования и вставки. Один %
символ был добавлен в конец файла ключа (поэтому последняя строка была -----END RSA PRIVATE KEY-----%
). Не было никакой ошибки или отладочной информации или чего-либо еще, что могло бы указать на то, что ключ был неправильной длины или плохо отформатирован, но ssh запросил парольную фразу.
решение3
В моем случае проблема была в том, что мой SSH-клиент не поддерживает ключи ED25519. Решение — создать ключ RSA и использовать его.
Эта проблема возникает сOpenSSH < 6.5(бежать ssh -V
) иШпатлевка < 0,68.
Это можно увидеть в следующем выводе ssh -vvv
:
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,[email protected]
debug2: kex_parse_kexinit: hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96
debug2: kex_parse_kexinit: hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
Theпервый блок описывает то, что поддерживает клиент, а второй — то, что поддерживает сервер. Как вы можете видеть, в верхней половине нет упоминания «curve25519», что указывает на то, что клиент его не поддерживает.
решение4
В моей команде, когда это происходит, это не проблема с чем-то локальным. Ключ ssh пользователя и/или доступ не были правильно настроены на сервере, к которому он подключается (в нашем случае это хостинговая платформа). По какой-то причине это вызывает запрос на несуществующий ключ ssh.