这是极少数情况之一,几乎不可能重现,但我见过这种情况发生了 20 次中有 4 次。
这是我的 open_session 方法:
def open_session:
self.session = paramiko.SSHClient()
self.host = host
self.username = username
self.password = password
self.session.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
self.session.connect(self.host, username=self.username, port=port, password=self.password, timeout=self.connect_timeout)
except paramiko.ssh_exception.BadHostKeyException:
message = "host key could not be verified"
self.sys_conf.logger.warning(message)
raise BadCredentials(message)
except paramiko.ssh_exception.AuthenticationException:
message = "authentication failed."
self.sys_conf.logger.warning(message)
raise BadCredentials(message)
except (paramiko.ssh_exception.SSHException, socket.error) as e:
message = "could not establish connection, an error occurred: {}".format(e)
self.sys_conf.logger.warning(message)
raise ConnectionFail(message)
except socket.timeout:
message = "could not establish connection, time's out!"
self.sys_conf.logger.warning(message)
raise ConnectionFail(message)
Paramiko 这样做有什么特殊原因吗?
最佳答案
应该是:
self.session = paramiko.SSHClient()
self.host = host
self.username = username
self.password = password
self.session.load_system_host_keys() # u missed this
self.session.set_missing_host_key_policy(paramiko.AutoAddPolicy())
load_system_host_keys(文件名=无) 从系统(只读)文件加载主机 key 。使用此方法读取的主机 key 不会被 save_host_keys 保存回来。 poaramiko
关于python - Paramiko 有时会引发 'AuthenticationException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967782/