当尝试从我的 Debian 机器通过 SSH 连接到 Cisco 路由器时,我收到以下消息:
Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1
该论坛上有一些类似的问题,声称有答案,但我发现由于细微的差异,它们对我不起作用,所以我决定在这里发布问题和答案。
答案1
要在系统范围内为您想要连接的所有主机完全启用此功能,请将以下内容添加到您的 /etc/ssh/ssh_config 中:
Host *
KexAlgorithms +diffie-hellman-group-exchange-sha1
要仅为您自己的帐户启用它,请将其添加到 ~/.ssh/config:
Host *
KexAlgorithms +diffie-hellman-group-exchange-sha1
要为特定主机启用此功能,请编辑上述文件之一并添加:
Host 192.168.1.1
KexAlgorithms +diffie-hellman-group-exchange-sha1
要为主机组和/或用户组启用此功能,读起来。
答案2
尝试这个
{
echo -n 'Ciphers '
ssh -Q cipher | tr '\n' ',' | sed -e 's/,$//'; echo
echo -n 'MACs '
ssh -Q mac | tr '\n' ',' | sed -e 's/,$//'; echo
echo -n 'HostKeyAlgorithms '
ssh -Q key | tr '\n' ',' | sed -e 's/,$//'; echo
echo -n 'KexAlgorithms '
ssh -Q kex | tr '\n' ',' | sed -e 's/,$//'; echo
} >> ~/.ssh/config
答案3
我想解决“diffie-hellman-group-exchange-sha1”问题后出现的下一个错误将是
“找不到匹配的主机密钥类型。他们的报价:ssh-rsa”
所以完整的解决方案是将其添加到 ~/.ssh/config 文件(而不是主配置):
Host x.x.x.x
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
User root
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
将主机地址和用户名替换为您的地址。
答案4
为 SSH 版本 2 配置 Cisco 路由器和 Linux ssh 客户端
A. 在 Cisco 路由器上:
- 使能够
- 配置终端
- 主机名
- ip 域名 名称
- 加密密钥将 rsa 归零(可选择擦除之前的任何内容)
- 加密密钥生成 rsa(密钥大小 2048)
- ip ssh 超时秒数 30
- ip ssh 身份验证重试 3
- ip ssh 版本 2(1 已过时且 openssl 不支持)
- 出口
B. 在客户端连接(linux):
- 编辑/etc/ssh/ssh_config
- 主机(路由器的 url、主机名或 IP*)
- Kex算法 diffie-hellman-group1-sha1
- 密码 3des-cbc、aes192-cbc、aes256-cbc
- 注意 - 上面,主机必须与 ssh 命令中用作主机部分的内容相匹配,为每个引用的输入构建一个
- 客户端连接语法:
ssh 示例: ssh -p 22 用户@主机名
较旧的 Cisco 设备仅在端口 22 上支持 ssh 即使较旧的设备,尤其是 Catalyst 类型和era 交换机,也根本不支持 ssh。