python3.6+ paramiko2.12.0私钥连接服务器

尝试了很多次,使用正确的私钥在python2下能执行,但是在python3下总是报如下错误,认证失败

paramiko.ssh_exception.AuthenticationException: Authentication failed.

import paramiko

# 读取本地当前文件夹下的私钥
private_key = paramiko.RSAKey.from_private_key_file('id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.168.168', port=22, username='root', pkey=private_key,
 disabled_algorithms={'pubkeys': ['rsa-sha2-256', 'rsa-sha2-512']})

# 执行命令
stdin, stdout, stderr = ssh.exec_command('pwd')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()

由于在密钥交换过程中,服务器主机密钥的客户端验证现在将优先使用rsa-sha2-512、rsa-sha2-256和传统的ssh-rsa算法,而不仅仅是ssh-rsa。您的目标系统既不支持RSA2,也不支持server-sig-algs协议扩展,则需要采取相应的操作,禁用掉

disabled_algorithms={‘pubkeys’: [‘rsa-sha2-256’, ‘rsa-sha2-512’]}

重点在于上述代码禁用掉上述算法,具体原因参考文档:pramiko文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值