paramiko连接服务器报错“Unable to agree on a pubkey algorithm... “及解决办法
2023-12-27 18:33:30
项目中使用了paramiko作为ssh客户端去连接Linux服务器,之前使用一直正常,今天突然报错了,报错信息如下:
Exception(client): Unable to agree on a pubkey algorithm for signign a 'ssh-rsa' key!
Traceback
...
paramiko.ssh_exception.SSHException:No existing session
我的示例代码如下, paramiko版本是3.1.0
import paramiko
ip = 'xxx.xxx.xxx.xxx'
port = 22
user = 'xxx'
password = 'xxx'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=port, username=user, password=password)
排查思路
- 我先检查了服务器是否可以使用ssh正常连接: 使用终端软件MobaXterm连接正常
- 我又使用paramiko连接了其他Linux服务器,也能正常连接,考虑到可能是服务端的ssh差异导致
- 查看ssh的版本:ssh -V,两个服务器的ssh版本如下:
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 # 可正常连接
OpenSSH_8.3p1, without OpenSSL #连接报错
解决办法
网上查阅了大量资料,其中大部分都是在connect方法中添加参数,如下:
ssh.connect(ip, port,user,password, disabled_algorithms={'keys': ['rsa-sha2-256', 'rsa-sha2-512']})
或
ssh.connect(ip, port,user,password, disabled_algorithms={'pubkeys': ['rsa-sha2-256', 'rsa-sha2-512']})
奈何都不能够解决问题,该报的错一点没少, 😔
最终通过我不断的尝试,使用下面的方式解决了问题,大家拿走不谢~
import paramiko
ip = 'xxx.xxx.xxx.xxx'
port = 22
user = 'xxx'
password = 'xxx'
transport = paramiko.Transport((ip, port))
transport.connect(username=user, password=password)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('pwd')
print(stdout.read().decode('utf8'))
完结撒花?
文章来源:https://blog.csdn.net/momo3507/article/details/135251597
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!