paramiko连接服务器报错“Unable to agree on a pubkey algorithm... “及解决办法

项目中使用了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'))

完结撒花❀

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 10:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 10:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 10:34:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 10:34:02       20 阅读

热门阅读

  1. centos 7.9 安装 qt5.15.11

    2023-12-28 10:34:02       48 阅读
  2. 【后端】拷贝数据字典

    2023-12-28 10:34:02       39 阅读
  3. C# 基于事件的观察者模式

    2023-12-28 10:34:02       33 阅读
  4. Django信号机制源码分析(观察者模式)

    2023-12-28 10:34:02       41 阅读
  5. 基数(Radix)排序

    2023-12-28 10:34:02       36 阅读
  6. C# LINQ

    C# LINQ

    2023-12-28 10:34:02      30 阅读
  7. MySQL8 一键部署

    2023-12-28 10:34:02       29 阅读
  8. etcd故障节点

    2023-12-28 10:34:02       25 阅读
  9. SpringBoot集成etcd,实现实时监听,实现配置中心

    2023-12-28 10:34:02       33 阅读
  10. Ubuntu安装WordPress并使用Nginx作为Web服务器

    2023-12-28 10:34:02       31 阅读