步骤1:生成本地密钥对
本地执行ssh-keygen -t rsa生成密钥(默认路径~/.ssh/id_rsa私钥、id_rsa.pub公钥)。
步骤2:上传公钥到交换机
通过SSH密码登录交换机,执行:
[Switch] ssh server enable
[Switch] local-user admin class manage
[Switch-luser-admin] service-type ssh
[Switch-luser-admin] authorization-attribute user-role network-admin
[Switch-luser-admin] public-key import ssh username admin from file tftp://x.x.x.x/id_rsa.pub # x.x.x.x为本地电脑IP,需确保交换机能访问
[Switch-luser-admin] password simple YourPassword # 保留密码认证,实现密码+密钥双因子
[Switch-luser-admin] quit
步骤3:Python脚本实现(依赖paramiko库)
python
import paramiko
def get_switch_config(ip, username, password, private_key_path, save_path):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)
密码+密钥认证
ssh.connect(ip, username=username, password=password, pkey=private_key)
执行display current-configuration命令
stdin, stdout, stderr = ssh.exec_command('display current-configuration')
cOnfig= stdout.read().decode()
保存配置到本地
with open(save_path, 'w') as f:
f.write(config)
ssh.close()
批量调用示例
devices = [
{'ip': '192.168.1.1', 'username': 'admin', 'password': 'YourPassword', 'save_path': 'config_192.168.1.1.txt'},
更多设备...
]
private_key_path = '~/.ssh/id_rsa' # 本地私钥路径
for dev in devices:
get_switch_config(dev['ip'], dev['username'], dev['password'], private_key_path, dev['save_path'])
说明
需先安装paramiko:pip install paramiko
确保交换机开启SSH服务,且本地与交换机网络可达
双因子认证通过password+pkey参数实现,增强安全性
暂无评论