Git Bash - ssh 连接问题

Kis*_*ore 19 git gerrit windows-10

环境:

OS: Windows-10
Git Bash Version: 2.33.1
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021
$ which ssh
 /usr/bin/ssh
Run Code Online (Sandbox Code Playgroud)

SSH 连接到 Gerrit 错误:-

$ ssh -p 29418 user@gerrit.example.com

Unable to negotiate with gerrit.example.com port 29418: no matching host key type found. Their offer: ssh-rsa,ssh-dss
Run Code Online (Sandbox Code Playgroud)

通过Git-2.32.0ssh 连接到 gerrit 可以正常工作。最新的 git 版本是否启用了任何限制?

Von*_*onC 39

Git For Windows 2.33.1附带OpenSSH 8.8,默认情况下禁用使用 SHA-1 哈希算法的 RSA 签名。

对于大多数用户来说,此更改应该是不可见的,并且无需替换 ssh-rsa 密钥。
OpenSSH 自 7.2 版起就支持 RFC8332 RSA/SHA-256/512 签名,现有的 ssh-rsa 密钥将在可能的情况下自动使用更强的算法。

当连接到尚未升级或未密切跟踪 SSH 协议改进的较旧 SSH 实现时,更有可能出现不兼容问题。

对于这些情况,可能需要有选择地重新启用 RSA/SHA1,以允许通过 HostkeyAlgorithms 和 PubkeyAcceptedAlgorithms 选项进行连接和/或用户身份验证。
例如,~/.ssh/config 中的以下节将为单个目标主机启用 RSA/SHA1 以进行主机和用户身份验证:

Host old-host
   HostkeyAlgorithms +ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

注意:Git for Windows 2.34.0并未在 SSH 方面带来任何新元素/演变。


Stefan Prodan(DX @weaveworks,http://flagger.app的创建者和http://fluxcd.io的维护者)在这条推文中提到:

GitHub 已更改其主机密钥

如果您使用 @fluxcd,请参阅此处如何更新 Kubernetes 集群上的已知主机密钥。

Stefan 引用了fluxcd/flux2讨论 2097

GitHub 已将其 SSH 主机密钥从 RSA 更改为 ECDSA

要修复密钥不匹配错误,您有两种选择:

  1. known_hosts使用 ecdsa-sha2-nistp25 值更新Flux-system Secret 中的 :

github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=

  1. 或者使用 Flux boostrap 轮换 SSH 密钥,如下所示:
  • 从集群中删除部署密钥kubectl -n flux-system delete secret flux-system
  • flux bootstrap github使用与之前相同的参数重新运行

Flux 将使用 ecdsa-sha2 SSH 密钥和主机密钥生成密钥

有关#490的更多详细信息fluxcd/source-controller


注意:自 2022 年 1 月起,GitHub SSH 主机密钥可通过元数据端点获取api.github.com/meta
这包括github.com ecdsa-sha2-nistp256价值。


tod*_*dwz 10

面临同样的问题。解决办法是在~/.ssh/config中添加以下内容

HostkeyAlgorithms +ssh-rsa    
PubkeyAcceptedAlgorithms +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

无法像接受的答案中那样拥有主机。一定要和上面的完全一样。我想每个服务器可能以不同的方式配置,个人可能必须进行试验。