d0927cbad5
- 支持Cisco、华为、H3C、ASA、Linux、Windows设备 - SSH远程采集设备信息 - 自动发现网络拓扑(LLDP/CDP) - Web可视化界面 - 支持旧版SSH加密算法兼容
3.2 KiB
3.2 KiB
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等旧版加密算法存在已知的安全漏洞,仅建议在内网环境中使用。
安全建议
- 优先升级设备: 如果可能,升级网络设备的SSH配置以支持现代加密算法
- 网络隔离: 在使用旧版算法的设备周围实施网络隔离
- 访问控制: 限制可以访问这些设备的IP地址
- 监控日志: 定期检查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