Netmiko密钥认证在Cisco N7K设备上失败的问题求助
解决Netmiko SSH密钥认证Cisco N7K失败的问题
环境信息
- Python 3.8.10
- netmiko 4.1.2
问题描述
使用相同的SSH密钥认证配置可正常连接Cisco N9K设备,但连接Cisco N7K时触发NetmikoAuthenticationException认证失败错误。已验证用户名、SSH密钥文件有效性,且通过用户名+密码认证可正常连接N7K。
解决建议
1. 手动加载密钥并传递参数
N7K的SSH服务对密钥加载的兼容性可能与N9K存在差异,尝试手动通过Paramiko加载密钥,再传入Netmiko配置:
from netmiko import ConnectHandler from paramiko import RSAKey # 手动加载带密码的私钥 private_key = RSAKey.from_private_key_file('~/.ssh/id_rsa', password='Cisco123') n7k_config = { "device_type": "cisco_nxos", "host": "10.1.1.20", "username": "admin", "use_keys": True, "pkey": private_key } target_con = ConnectHandler(**n7k_config)
2. 指定SSH兼容算法
部分N7K设备的SSH服务仅支持特定密钥算法,可在配置中指定允许的公钥算法:
n7k_config = { "device_type": "cisco_nxos", "host": "10.1.1.20", "username": "admin", "use_keys": True, "key_file":"~/.ssh/id_rsa", "passphrase": "Cisco123", "allowed_algorithms": { 'pubkeys': ['ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512'] } } target_con = ConnectHandler(**n7k_config)
3. 检查N7K设备端配置
- 执行
show ssh user admin,确认设备上该用户关联的公钥与本地id_rsa.pub内容完全一致 - 执行
show ip ssh,查看设备支持的SSH算法列表,确保本地密钥类型在支持范围内 - 若设备仅支持SHA-1签名的RSA密钥,可重新生成兼容密钥:
ssh-keygen -t rsa -b 2048 -m PEM
4. 调整Paramiko版本
Netmiko依赖的Paramiko版本可能与N7K存在兼容性问题,尝试降级到稳定兼容版本:
pip install paramiko==2.12.0
内容的提问来源于stack exchange,提问作者Wukong
相关产品推荐
相关产品推荐

