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

标签 svn ssh phpstorm fingerprint rsa-key-fingerprint

我在 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/

相关文章:

svn - 我的构建应该提交吗?

mercurial - 如何通过 TortoisePlink 和 KeyRing 使受密码保护的 PPK 停止在 TortoiseHG 中询问密码

git - pip 从 gitosis 安装

ssh - 通过ssh连接时自动将cd传送到给定的远程路径

javascript - PhpStorm 剪贴板 API

c# - 构建版本与修订号

android - 错误 "can' t 使用颠覆命令行客户端 : svn"when opening android project checked out from svn

dart - Angular Dart的调试已停止在PhpStorm中工作

svn - 我可以不手动解决 SVN 中状态为 'missing' 的树冲突吗?

php - 使用Docker通过终端运行PHPUnit