连接老旧网络设备时出现以下错误:
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库)默认只支持安全的加密算法,如:
而老旧的网络设备(如早期的Cisco、华为交换机)只支持旧的加密算法:
这导致双方无法协商出共同的加密算法,连接失败。
已在SSH客户端中添加了旧版加密算法支持,包括:
程序默认已启用旧版加密算法支持,无需额外配置。
在Web界面添加设备或扫描时,会自动尝试使用旧版算法连接老旧设备。
如果需要控制是否启用旧版算法,可以在创建SSH客户端时设置:
client := sshclient.NewClient(sshclient.Config{
Host: "192.168.1.1",
Username: "admin",
Password: "password",
InsecureCiphers: true, // 设置为true启用旧版算法
})
⚠️ 注意: CBC等旧版加密算法存在已知的安全漏洞,仅建议在内网环境中使用。
! 配置现代加密算法
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