linux – 什么可能导致SFTP主机密钥指纹不匹配?

前端之家收集整理的这篇文章主要介绍了linux – 什么可能导致SFTP主机密钥指纹不匹配?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
远程用户尝试使用Mac OS X下的“传输”客户端首次连接到我的SFTP / SSH服务器,并发现主机密钥指纹与预期值不匹配.

我有显示指纹的屏幕截图,并将其与ssh-keygen -lf / etc / ssh / ssh_host_dsa_key和ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub的输出进行了比较,并且它与这些.

我还没有成功地将指纹与cut -d” – f 2<的输出进行比较. /etc/ssh/ssh_host_dsa_key.pub | base64 -d | sha1sum和cut -d'' - f 2< /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha1sum(因为似乎有不同的指纹识别算法在使用?). 客户端的消息框标题为(翻译成英文)

Unknown host key for < hostname >

和州

The server is unknown. The fingerprint of the host key is < 16 octets >. ( Allow ) ( Deny ) [ ] Always

因此,没有指示是使用RSA还是DSA密钥,或者是否使用MD5或某些SHA算法来创建指纹.

显示给远程用户的指纹有16个以冒号分隔的八位字节,因此它似乎不使用SHA-224或更高的值.更新:我刚刚注意到即使SHA-1哈希也会有20个八位字节,因此显示的指纹显然不是任何SHA格式.

连接最终会转到正确的服务器,因为如果用户允许连接,我可以在我的服务器日志中看到登录尝试.因此,似乎在客户端正确输入了主机名/ IP.

与另一个(完全不相关的)SFTP服务器的连接也显示不正确的指纹(但与第一个服务器不同).

如果我尝试使用OpenSSH从其他主机(或本地服务器本身)连接到服务器,我会看到正确的指纹(RSA主机密钥的MD5指纹).

服务器使用标准的OpenSSH服务器运行Debian 6 LTS.

什么可能导致这种指纹不匹配?我该如何调试这个问题?

解决方法

如果这是他们第一次连接,那么是否存在不匹配并不重要……客户端只是有一些不相关的旧条目恰好具有与之关联的相同主机名或IP地址.只需清除它:
ssh-keygen -R $name_or_ip

在你这样做之后,它应该在你下次连接时说出它是RSA,ECDSA等.如果没有,尝试使用适当的客户端,如Linux上标准的OpenBSD OpenSSH客户端,或尝试-v(或-vvvv等详细选项).然后验证并接受新密钥.旧客户端的密钥指纹格式是md5(新的是sha256,有些奇怪的base64格式而不是ascii-hex),在服务器端获取指纹的正确方法是:

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

猜你在找的Linux相关文章