PHPStorm SSH服务器指纹不匹配



我在PHPStorm内使用subversion,当我尝试连接到SVN服务器时,我得到以下错误…

host svn+ssh://svn.example.com:22的真实性不能是建立。Ssh-rsa密钥指纹

xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx

您确定要继续连接吗?

问题是指纹与服务器的指纹不匹配。如果我将服务器从我的~/。Ssh/known_hosts文件,然后Ssh到它显示一个完全不同的指纹-这是该服务器的正确指纹。

我刚刚将SVN存储库移动到新服务器,并将DNS更改为指向新服务器,所以我期待PHPStorm抱怨不匹配的指纹,但我很惊讶它没有显示新服务器的正确指纹。指纹也不匹配旧的服务器,或者PHPStorm曾经连接过的任何其他服务器。在我弄清楚是怎么回事之前,我很小心不要让它连接起来。

PHPStorm正确连接到新服务器,所以我不知道它是如何得到错误的指纹的,而且我似乎不太可能看到一个真正的人在中间攻击,因为每当我从命令行ssh它看到正确的指纹。

我不确定PHPStorm缓存服务器指纹。我试过使缓存失效,看看这是否会使它忘记任何过时的指纹数据,但鉴于报告的指纹与旧服务器或新服务器不匹配,这似乎不太可能。

我的结论是这是PHPStorm的一个bug,但是任何其他的想法都是非常受欢迎的。

编辑:

PHPStorm显示一个20字节的指纹。在服务器(debian)上运行

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

显示一个16字节的指纹,所以它们不可能匹配。有没有办法从服务器的公钥中获得20字节的指纹?

所以PHPStorm显示的160位(20字节)哈希是SHA1哈希,而ssh-keygen显示的是128位(16字节)MD5哈希。

两者都不是很明确,所以我只是拼凑了一个快速脚本来显示公钥的各种散列(假设您的公钥位于/etc/ssh/ssh_host_rsa_key.pub

#!/usr/bin/python
import binascii
import hashlib
keyfile = "/etc/ssh/ssh_host_rsa_key.pub"
def showHash(type, hash, data):
    hash.update(data)
    hex=hash.hexdigest()
    hexbytes=[hex[i:i+2] for i in range(0, len(hex), 2)]
    hexstring=":".join(hexbytes)
    print type+" "+hexstring
f = open(keyfile)
words = f.readline().split()
data=words[1]
bindata=binascii.a2b_base64(data)
showHash("md5", hashlib.md5(), bindata)
showHash("sha1", hashlib.sha1(), bindata)
showHash("sha256", hashlib.sha256(), bindata)

证明PHPStorm使用的是SHA1哈希,并且是非常正确的。但是,如果您可以选择在ssh-keygen(我相信您可以在sh-keygen-g3中)或PHPStorm中使用哪个哈希函数,这将是有帮助的。

相关内容

  • 没有找到相关文章

最新更新