Git 错误:无法与 XX.XX.XXX.XXX 协商:找不到匹配的主机密钥类型。他们的提议:ssh-dss [重复]

Posted

技术标签:

【中文标题】Git 错误:无法与 XX.XX.XXX.XXX 协商:找不到匹配的主机密钥类型。他们的提议:ssh-dss [重复]【英文标题】:Git error: Unable to negotiate with XX.XX.XXX.XXX : no matching host key type found . their offer: ssh-dss [duplicate] 【发布时间】:2016-05-15 23:57:51 【问题描述】:

我正在尝试连接到通过我的 *** 工作的存储库。我下载了 Git,当我尝试克隆 repo 时,我收到了这条消息:

Unable to negotiate with XX.XX.XXX.XXX : no matching host key type found . their offer: ssh-dss

我有什么遗漏吗?

【问题讨论】:

你的本地用户名和远程机器上的一样吗?也许你的网址是错误的。如果用户名不同,您也必须在 URL 中提供它们,即git clone remote-user@remote-host:/path/to/repo.git 【参考方案1】:

我发现了问题,新的 OpenSSH 版本禁用了 ssh-dss (DSA) 公钥算法。 DSA 被认为太弱,OpenSSH 社区建议不要使用它。

如果您看到类似这样的错误:

无法与 10.96.8.72 协商:找不到匹配的主机密钥类型。 他们的提议:ssh-dss

...那么您必须通过编辑 ~/.ssh/config 文件以添加以下行来重新启用 DSA 密钥:

HostkeyAlgorithms +ssh-dss

如果 ~/.ssh/config 文件不存在,您可能需要创建它。

创建文件后,必须限制访问权限:

chmod 600 ~/.ssh/config

然后进行克隆。 这应该工作得很好!

【讨论】:

或者建议您的服务器管理员设置合理的密钥类型。我相信您不会是第一个或最后一个在该服务器上遇到此问题的人。而且没有合理的理由只提供 DSA 密钥。 这是终极解决方案@Jakuje 我会报告的! @Jakuje 好的,但是如何配置服务器以提供更好的密钥? 通常更新到最新版本就足够了。【参考方案2】:

您正在尝试通过 ssh 协议进行克隆。另一端的 ssh 服务器要求您使用 dss 密钥身份验证,但 git 使用的 ssh 客户端无法访问,可能是因为您尚未创建。

如何创建密钥取决于您使用的 ssh 客户端和操作系统。

当您创建密钥时,您实际上是在创建一个密钥对,其中包含一个私钥和一个公钥。服务器必须知道公钥,服务器才能对您进行身份验证。

如何将公钥添加到服务器 ssh-server,取决于使用的 ssh 服务器(或包装 ssh 服务器的 git 托管软件)。

【讨论】:

我已经创建了密钥先生,并在执行克隆步骤之前将其添加到服务器。但我仍然收到此错误。 @user2628079 你可以用ssh xx.xx.xxx.xxx连接到服务器? 不,它给了我同样的错误信息 @user2628079 那么这可能真的是一个ssh问题。如果您的本地计算机上还没有文件~/.ssh/id_dsa~/.ssh/id_dsa.pub,请使用ssh-keygen -t dsa 创建它们,然后将文件id_dsa.pub 插入服务器上的authorized_keysid_rsa.pubidentity.pub 不行。 以上评论适用于大多数 ssh 客户端。但并非所有人都适用(在 windows 下使用 putty 就是一个例子)。对于所有 git 托管解决方案(如 gitolite 或 gitlab),将密钥添加到服务器 authorized_keys 文件不是正确的过程。

以上是关于Git 错误:无法与 XX.XX.XXX.XXX 协商:找不到匹配的主机密钥类型。他们的提议:ssh-dss [重复]的主要内容,如果未能解决你的问题,请参考以下文章

记录一次线上线程池爆了的问题

filebeat删除多余标签

mysqli 无法使用 ssh 隧道

无效的关键字端口

python统计nginx日志域名下载量

爬虫2.2-scrapy框架-文件写入