python的paramiko模块报错解决办法


写了一个Python脚本内容如下:
#-*- coding:utf-8 -*-
__author__ = 'kai'
import paramiko
import sys,os
 
host = sys.argv[1]
user = 'zk'
password = '123'
 
cmd = sys.argv[2]
 
s = paramiko.SSHClient()        #绑定实例
s.load_system_host_keys()       #加载本机HOST主机文件
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
s.connect(host,22,user,password,timeout=5)   #连接远程主机
stdin,stdout,stderr = s.exec_command(cmd)               #执行命令
 
cmd_result = stdout.read(),stderr.read()                #读取命令结果
 
for line in cmd_result:
        print line,
 
s.close()
主要是练习用的,执行之后报错:
#python paramkio.py localhost df
No handlers could be found for logger "paramiko.transport"
Traceback (most recent call last):
  File "paramkio.py", line 16, in <module>
    s.connect(host,22,user,password,timeout=5)   #连接远程主机
  File "build/bdist.linux-x86_64/egg/paramiko/client.py", line 296, in connect
  File "build/bdist.linux-x86_64/egg/paramiko/transport.py", line 458, in start_client
paramiko.SSHException: Incompatible ssh peer (no acceptable kex algorithm)
产生的原因是因为安装的paramiko模块版本太低
查看当前的paramiko版本:pip freeze
lxml==3.4.2
MySQL-python==1.2.5
ndg-httpsclient==0.3.2
oauthlib==0.6.1
oneconf==0.3.7
PAM==0.4.2
paramiko==1.7.6
Pillow==2.7.0
piston-mini-client==0.7.5
pyasn1==0.1.7
pyasn1-modules==0.0.5
pycrypto==2.6.1
pycups==1.9.72
然后直接升级模块版本就行了:pip install paramiko --upgrade
 
paramiko==1.15.2

评论关闭