Git Bash - ssh连接问题
Posted
技术标签:
【中文标题】Git Bash - ssh连接问题【英文标题】:Git Bash - ssh connection issue 【发布时间】:2021-12-07 21:59:44 【问题描述】:环境:
OS: Windows-10
Git Bash Version: 2.33.1
OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021
$ which ssh
/usr/bin/ssh
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
在Git-2.32.0
ssh 连接到 gerrit 有效。最新版本的 git 是否启用了任何限制?
【问题讨论】:
看起来最新版本的 git 正在弃用不安全的算法,并且您的 Gerrit 实例无法连接到更现代的选项 这不是 git 的问题。当您搜索“ssh”时,您更有机会找到解决方案。 【参考方案1】:Git For Windows 2.33.1 附带OpenSSH 8.8,默认情况下使用 SHA-1 哈希算法禁用 RSA 签名。
对于大多数用户来说,这种变化应该是不可见的,并且有 无需更换 ssh-rsa 密钥。 OpenSSH 已支持 RFC8332 自 7.2 版以来的 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
注意:Git for Windows 2.34.0 不会在 SSH 前端带来任何新元素/演变。
Stefan Prodan(DX @weaveworks,http://flagger.app 的创建者和http://fluxcd.io 的维护者)在this tweet 中提到:
GitHub 已更改其主机密钥 ?
如果您使用的是 @fluxcd,请在此处查看如何更新 Kubernetes 集群上的已知主机密钥。
Stefan 指的是fluxcd/flux2
discussion 2097:
GitHub 有changed its SSH host keys from RSA to ECDSA!
要修复密钥不匹配错误,您有两种选择:
使用 ecdsa-sha2-nistp25 值更新通量系统机密中的
known_hosts
:
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
或者像这样使用 Flux boostrap 轮换 SSH 密钥:
从集群中删除部署密钥kubectl -n flux-system delete secret flux-system
使用与以前相同的参数重新运行flux bootstrap github
Flux 将使用 ecdsa-sha2 SSH 密钥和主机密钥生成密钥
更多详情请关注
fluxcd/source-controller
#490
【讨论】:
~/.ssh/config
方法也不起作用。仍然存在相同的错误。即使在Git Windows - 2.34.0
版本中也是同样的问题。
只是为了测试,老版本的Git会更好用吗? (例如 2.30?)
是的,直到这个 Git Client version for Windows -2.32.0
工作正常。
@user4948798 是否可能使用了错误的 SSH? (Windows 代替 Git 打包 SSH:github.com/git-for-windows/build-extra/pull/367)
@user4948798 我相信我找到了一个可能的解决方案:查看我编辑的答案并更新您的客户~/.ssh/known_hosts
,如上述答案中所述。以上是关于Git Bash - ssh连接问题的主要内容,如果未能解决你的问题,请参考以下文章