问题

升级了git到2.3.5版本后,从gitlab中拉取代码报错,Unable to negotiate with xxxxxxx port 22: no matching host key type found. Their offer: ssh-rsa, ssh-dss

原因

8.8p1 版的 openssh 的 ssh 客户端默认禁用了 ssh-rsa 算法, 但是对方服务器只支持 ssh-rsa, 当你不能自己升级远程服务器的 openssh 版本或修改配置让它使用更安全的算法时, 在本地 ssh 针对这些旧的ssh server重新启用 ssh-rsa 也是一种权宜之法.

解决

用记事本打开~/.ssh/目录下的config文件。增加以下配置。

  1. Host *
  2. KexAlgorithms +diffie-hellman-group1-sha1
  3. HostkeyAlgorithms +ssh-dss,ssh-rsa
  4. PubkeyAcceptedKeyTypes +ssh-dss,ssh-rsa