SSH在未设置密码短语的情况下在公用密钥上要求密码短语


27

我已经在服务器上使用公钥认证已有一段时间了,但是在尝试连接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

提前致谢。


@jasonwryan,请将您的评论移至答案。我很确定你是对的。
andcoz 2012年

这有点琐碎,我很早就没有注意到这一点,但是希望您的回答将来会为其他人提供帮助。
EarthmeL12年

Answers:


26

当您使用IdentityFile选项时,您~/.ssh/config指向的是私钥,而不是公钥。

来自man ssh_config

IdentityFile
指定一个文件,从该文件中读取用户的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
我真是个傻瓜。我唯一可以节省的恩典是,这将来可能会帮助其他“失败者”。
EarthmeL12年

1
这是一个容易犯的错误……
jasonwryan 2012年

1
只是帮助了我,让我感谢您的回答!
Topher Fangio 2014年

1
给我涂上糊涂。
jeremiah 2015年

这为我做了。
unity100

2

我们遇到了这个问题,这是一个粘贴错误。%在密钥文件的末尾添加了一个符号(所以最后一行是-----END RSA PRIVATE KEY-----%)。没有错误或调试信息,也没有其他迹象表明密钥长度错误或格式错误,但是ssh要求输入密码。


1
类似的事情发生在我身上。我从另一个终端复制了密钥,并且在没有注意到的情况下复制了太多。
吉列尔莫

1

就我而言,问题是我的SSH客户端不支持ED25519密钥。解决方案是创建一个RSA密钥并使用它。

OpenSSH <6.5(运行ssh -V)和PuTTY <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: ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,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,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96
debug2: kex_parse_kexinit: hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,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: curve25519-sha256@libssh.org,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,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com

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


0

在我的团队中,当发生这种情况时,本地问题就不成问题了。用户的ssh密钥和/或访问权限未在与其连接的服务器(在我们的情况下为托管平台)上正确配置。出于某种原因,这会触发提示输入不存在的ssh密钥。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.