报错信息
上午的时候数据组的同事跟我说有几个程序报错,经过查看log发现找到报错信息:
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
经过搜索,得知引起该错误的原因是因为banner_timeout默认设置太短,只有15s。
错误分析
经查看paramiko库下面的transport.py下面的Transport代码如下:
class Transport(threading.Thread, ClosingContextManager):
self.banner_timeout = 15
# how long (seconds) to wait for the handshake to finish after SSH
重设banner_timeout属性值
网上的方法大多数是修改源码,重新安装,感觉略麻烦。这里在代码里面进行属性重新设置。
transport = paramiko.Transport((self.host, self.port))
print(transport.banner_timeout)
transport.banner_timeout = 30
print(transport.banner_timeout)
经过测试,两次打印出来的属性值不同,说明属性设置成功,问题解决。