python - Paramiko 有时会引发 'AuthenticationException'

标签 python python-3.x paramiko

这是极少数情况之一,几乎不可能重现,但我见过这种情况发生了 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/

相关文章:

python - 如何按两列值之间的行对 pandas 数据框进行切片?

python - 从 Python 向 shell 脚本传递参数

python拆分字符串并列出完整路径名

python-3.x - 编辑图层中的各个权重和偏差

python - Paramiko stdout.readlines()太慢

python - 合并和删除重复项

python - 如何检查列表中的所有元素是否都是整数

python - 交互式 shell paramiko 如何像 exec_command 一样读取输入

python - 导入错误 : No module named paramiko

python - 如何退出 ipdb 调试器?