d0927cbad5
- 支持Cisco、华为、H3C、ASA、Linux、Windows设备 - SSH远程采集设备信息 - 自动发现网络拓扑(LLDP/CDP) - Web可视化界面 - 支持旧版SSH加密算法兼容
114 lignes
3.2 KiB
Markdown
114 lignes
3.2 KiB
Markdown
# 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客户端时设置:
|
|
|
|
```go
|
|
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设备升级示例
|
|
|
|
```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
|
|
```
|
|
|
|
### 华为设备升级示例
|
|
|
|
```huawei
|
|
# 配置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
|