我正在运行带有 OpenSSH Server 6.0 的 Debian Linux 3.2.46-1+deb7u1 服务器,并使用 2048 位 RSA 密钥保护登录安全。
尽管从另一台计算机与 OpenSSH 客户端的连接成功,但在 Windows 7 计算机上使用 Putty 0.63 时连接被拒绝,并显示以下消息:
Server refused public-key signature despite accepting key!
因为问题只发生在 Putty 上,所以我认为所有服务器配置都是正确的。当使用 Debian 2.6.32 和 OpenSSH 5.5 运行服务器时,Putty 运行良好。
以下是 auth.log 的内容:
matching key found: file /root/.ssh/authorized_keys, line 2
Oct 8 14:53:43 serverx sshd[28964]: Found matching RSA key: XX:XX
Oct 8 14:53:43 serverx sshd[28964]: debug1: restore_uid: 0/0
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_answer_keyallowed: key 0x7fb3828774c0 is allowed
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_send entering: type 22
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_key_verify entering [preauth]
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_send entering: type 23 [preauth]
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_key_verify: waiting for MONITOR_ANS_KEYVERIFY [preauth]
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_receive_expect entering: type 24 [preauth]
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_receive entering [preauth]
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_receive entering
Oct 8 14:53:43 serverx sshd[28964]: debug3: monitor_read: checking request 23
Oct 8 14:53:43 serverx sshd[28964]: error: hash mismatch
Oct 8 14:53:43 serverx sshd[28964]: debug1: ssh_rsa_verify: signature incorrect
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_answer_keyverify: key 0x7fb382871f80 signature unverified
Oct 8 14:53:43 serverx sshd[28964]: debug3: mm_request_send entering: type 24
发生这种情况后,服务器切换到密码验证,我就可以正常登录了。
我已经尝试从 Windows 注册表中清除 Puttys known_hosts,但我认为错误是关于私钥的公钥,而不是服务器主机密钥。
我的问题是:有谁知道哪里出了问题,或者 OpenSSH 从 5.5 到 6.0 的哪些变化可能导致了这个问题?有什么修复建议吗?
答案1
我在 Pageant 和 FileZilla 中遇到过这个问题,升级 Pageant 后问题就解决了。