Paramiko线程paramiko.ssh_exception.SSHException:不兼容的版本(1.5而不是2.0)

时间:2018-02-06 11:45:50

标签: python multithreading ssh paramiko cisco

def trylogin(ipaddress):
  global user, passwd
  vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr)
  jhost = paramiko.SSHClient()
  jhost.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  jhost.connect(line, username=user, password=passwd, sock=vmchannel,)

vm = paramiko.SSHClient()
vm.set_missing_host_key_policy(paramiko.AutoAddPolicy())
vm.connect('57.255.35.71', username='xxxx', password='xxxx')
vmtransport = vm.get_transport()
local_addr = ('57.255.35.71', 22)
dest_addr = (IP, 22)
threading.Thread(target=trylogin, args=(IP,)).start()

在使用线程在多个设备IP上循环运行上述代码时,它显示以下异常

Exception: Incompatible version (1.5 instead of 2.0)
Traceback (most recent call last):
  File "C:\Users\mostafa.katary\AppData\Local\Programs\Python\Python36-32\lib\site-packages\paramiko\transport.py", line 1856, in run
    self._check_banner()
  File "C:\Users\mostafa.katary\AppData\Local\Programs\Python\Python36-32\lib\site-packages\paramiko\transport.py", line 2032, in _check_banner
    raise SSHException(msg.format(version))
paramiko.ssh_exception.SSHException: Incompatible version (1.5 instead of 2.0)

但已使用SSH版本2.0的设备,如果在单个IP上运行或根本不使用线程,则此代码可以正常运行。

1 个答案:

答案 0 :(得分:0)

  

不兼容的版本(1.5而不是2.0)

该错误消息表示远程服务器宣布它实现了SSH版本1.5。 Paramiko需要2.0版本。

我猜测远程系统是某种类型的cisco设备?您应该调查重新配置设备以使用SSH版本2.我随机找到this page描述命令(" ip ssh版本[1 | 2]")以配置其中一个系统。我不知道相同的命令是否适用于您的系统。

请注意,Paramiko有FAQ section表示他们不支持非典型SSH服务器,包括Cisco设备。即使在重新配置后,您仍可能无法让Paramiko使用该设备。