SSH 要求在未设置密码的情况下提供公钥密码

SSH 要求在未设置密码的情况下提供公钥密码

我在服务器上使用公钥身份验证已经有一段时间了,但我在尝试连接的新“客户端”上遇到了问题github。我已阅读许多线程来验证我的权限设置是否正确并已为 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 身份验证身份的文件。协议版本 1 的默认值为 ~/.ssh/identity,协议版本 2 的默认值为 ~/.ssh/id_dsa、~/.ssh/id_ecdsa 和 ~/.ssh/id_rsa。

因此,您的~/.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]

第一个块描述客户端支持什么,第二个块描述服务器支持什么。正如您所看到的,上半部分没有提到“curve25519”,表明客户端不支持它。

答案4

在我的团队中,当发生这种情况时,本地任何事情都不是问题。用户的 ssh 密钥和/或访问权限尚未在他们连接的服务器(在我们的示例中为托管平台)上正确配置。由于某种原因,这会触发提示输入不存在的 ssh 密钥。

相关内容