SSH_COMPATIBILITY.md 3.2 KB

SSH加密算法兼容性修复说明

问题描述

连接老旧网络设备时出现以下错误:

failed to connect to 172.16.12.1:22: ssh: handshake failed: 
ssh: no common algorithm for client to server cipher; 
we offered: [aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com aes128-ctr aes192-ctr aes256-ctr], 
peer offered: [aes128-cbc aes256-cbc 3des-cbc des-cbc]

问题原因

现代SSH客户端(包括Go的crypto/ssh库)默认只支持安全的加密算法,如:

  • AES-GCM
  • ChaCha20-Poly1305
  • AES-CTR

而老旧的网络设备(如早期的Cisco、华为交换机)只支持旧的加密算法:

  • AES-CBC
  • 3DES-CBC
  • DES-CBC

这导致双方无法协商出共同的加密算法,连接失败。

解决方案

已在SSH客户端中添加了旧版加密算法支持,包括:

加密算法(Ciphers)

  • aes128-ctr, aes192-ctr, aes256-ctr
  • aes128-gcm@openssh.com, aes256-gcm@openssh.com
  • chacha20-poly1305@openssh.com
  • aes128-cbc, aes256-cbc (新增,用于兼容老旧设备)

密钥交换算法(KeyExchanges)

  • curve25519-sha256, curve25519-sha256@libssh.org
  • ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521
  • diffie-hellman-group14-sha256, diffie-hellman-group16-sha512
  • diffie-hellman-group14-sha1, diffie-hellman-group1-sha1 (新增)

MAC算法

  • hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com
  • hmac-sha2-256, hmac-sha2-512
  • hmac-sha1, hmac-sha1-96 (新增)

使用方法

方式一: 自动启用(推荐)

程序默认已启用旧版加密算法支持,无需额外配置。

在Web界面添加设备或扫描时,会自动尝试使用旧版算法连接老旧设备。

方式二: 代码控制

如果需要控制是否启用旧版算法,可以在创建SSH客户端时设置:

client := sshclient.NewClient(sshclient.Config{
    Host:             "192.168.1.1",
    Username:         "admin",
    Password:         "password",
    InsecureCiphers:  true, // 设置为true启用旧版算法
})

安全说明

⚠️ 注意: CBC等旧版加密算法存在已知的安全漏洞,仅建议在内网环境中使用。

安全建议

  1. 优先升级设备: 如果可能,升级网络设备的SSH配置以支持现代加密算法
  2. 网络隔离: 在使用旧版算法的设备周围实施网络隔离
  3. 访问控制: 限制可以访问这些设备的IP地址
  4. 监控日志: 定期检查SSH连接日志,发现异常及时处理

Cisco设备升级示例

! 配置现代加密算法
ip ssh cipher encryption compatible aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com
ip ssh cipher encryption mandatory aes128-gcm@openssh.com aes256-gcm@openssh.com

华为设备升级示例

# 配置SSH算法
ssh server cipher aes256_gcm aes128_gcm aes256_ctr aes128_ctr
ssh server hmac sha2_256 sha2_512
ssh server key-exchange diffie-hellman-group14-sha256

测试验证

修复后,可以成功连接以下类型的设备:

✅ Cisco IOS 12.x (老旧版本) ✅ 华为 VRP 3.x/5.x ✅ H3C Comware V3/V5 ✅ 其他使用旧版SSH的设备

相关文件

  • internal/ssh/client.go - SSH客户端实现
  • internal/device/parser.go - 设备发现逻辑

更新日期

2026-04-25