gpt4 book ai didi

svn - PHPStorm SSH 服务器指纹不匹配

转载 作者:行者123 更新时间:2023-12-01 06:14:29 30 4
gpt4 key购买 nike

我在 PHPStorm 中使用 subversion,当我尝试连接到 SVN 服务器时出现以下错误...

The authenticity of host svn+ssh://svn.example.com:22 can't be established. ssh-rsa key fingerprint is

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

Are you sure you want to continue connecting?

问题是指纹与服务器的指纹不匹配。如果我从我的 ~/.ssh/known_hosts 文件中删除服务器,然后通过 ssh 连接到它会显示一个完全不同的指纹 - 这是该服务器的正确指纹。

我刚刚将 SVN 存储库移动到新服务器,并将 DNS 更改为指向新服务器,所以我希望 PHPStorm 提示指纹不匹配,但令我惊讶的是它没有显示正确的指纹新服务器。指纹也不匹配旧服务器,也不匹配 PHPStorm 曾经连接过的任何其他服务器。在我了解发生了什么之前,我不会让它连接。

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

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

我得出的结论是这是 PHPStorm 中的一个错误,但欢迎任何其他想法。

编辑:

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 中使用哪个哈希函数,将会很有帮助。

关于svn - PHPStorm SSH 服务器指纹不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233866/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com