SSH 到 Cisco 设备失败并显示 diffie-hellman-group1-sha1

SSH 到 Cisco 设备失败并显示 diffie-hellman-group1-sha1

当尝试从我的 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 路由器上:

  1. 使能够
  2. 配置终端
  3. 主机名
  4. ip 域名 名称
  5. 加密密钥将 rsa 归零(可选择擦除之前的任何内容)
  6. 加密密钥生成 rsa(密钥大小 2048)
  7. ip ssh 超时秒数 30
  8. ip ssh 身份验证重试 3
  9. ip ssh 版本 2(1 已过时且 openssl 不支持)
  10. 出口

B. 在客户端连接(linux):

  1. 编辑/etc/ssh/ssh_config
  1. 主机(路由器的 url、主机名或 IP*)
  2. Kex算法 diffie-hellman-group1-sha1
  3. 密码 3des-cbc、aes192-cbc、aes256-cbc
  • 注意 - 上面,主机必须与 ssh 命令中用作主机部分的内容相匹配,为每个引用的输入构建一个
  1. 客户端连接语法:

ssh 示例: ssh -p 22 用户@主机名

较旧的 Cisco 设备仅在端口 22 上支持 ssh 即使较旧的设备,尤其是 Catalyst 类型和era 交换机,也根本不支持 ssh。

相关内容