服务器SSH指纹验证失败

18

我有一个本地的 Swift Package Manager 包,它使用一个私有的 Github 仓库作为依赖。当我在 Xcode 中打开本地包时,“解决包依赖”失败,并出现以下错误:

获取远程仓库时发生错误:git@github.com:mayoff/Preamble.git

服务器 SSH 指纹验证失败

Xcode error log showing the errors described above

然而,如果我使用命令行的swift程序,它可以克隆私有库。例如,我可以在本地包目录中运行swift package show-dependencies而不会出现问题。我也可以成功地用git clone克隆远程包存储库。所以这不是我的.known_hosts文件或我的SSH密钥的问题。

我该如何解决Xcode的问题?

2个回答

67

原来在Xcode的日志导航器中出现“服务器SSH指纹验证失败”的错误消息是可以双击的。谁能想到呢?

无论如何,双击错误消息会弹出一个对话框,让我告诉Xcode信任Github服务器:

带有信任按钮的Xcode对话框

点击信任按钮后,Xcode就能够克隆远程仓库了。


1
你有尝试查找罪魁祸首吗?是不是Github决定增加了额外的服务器?当前密钥是否过期了? - Eimantas
1
这怎么可能被发现呢?我很好奇...还有其他解决这个问题的方法吗?有人可能认为重置软件包缓存也会(或许)重置ssh指纹吗? - Lee Fastenau
5
震惊了,这不是显而易见的。 - orj
你是如何决定首先尝试双击它的? - SaintTail
1
我能否通过命令行实现相同的行为?因为我需要使用ssh设置多台CI机器,而没有界面。 - dogo
很遗憾,这在我的 Xcode 13.4.1 上崩溃了。 - Luke

1
你还可以编辑~/.ssh/known_hosts文件,删除github.com的条目,然后让它再次尝试解析。这适用于任何其他网站,如果自上次尝试ssh以来其证书发生了更改。

Xcode 保留了自己的已知 SSH 主机列表。而且显示的指纹与 github.com 的任何指纹都不匹配:https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints我自己也看到了这种行为,这让我非常担心。 - Darren Black
这对我来说是个解决办法。与其随机信任一个有问题的域名,我选择直接删除已知主机文件(它只包含了我的 Git 服务器信息),然后 Xcode 的 SwiftPM 部分就能正常工作了。这样,Xcode 仍然会进行通常的检查,你只是绕过了证书已更改的警告,但仍然确保该域名的有效性。 - undefined
(是的,对我来说,在终端中克隆存储库是可以的) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接