最近在使用 SSH 连接服务器时有报错:
Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
主要原因是服务端较旧,客户端较新,服务端提供的密钥算法在客户端均已经默认被禁用。其中:
- ssh-rsa 在 8.2 版本默认被禁用:openssh.com/txt/release-8.2
- ssh-dss 在 7.0 版本默认被禁用:openssh.com/txt/release-7.0
这里只能进行一个 workaround,在连接时临时允许特定算法/密钥。
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa user@host
如果是 Git 推拉代码的场景,也是同理:
GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-rsa" git clone ssh://user@host/repo
引用
Git error no matching host key type found. Their offer: ssh-rsa – Stack Overflow
发表回复