paramiko AuthenticationException
问题现象
使用 paramiko 工具包基于 sshd 协议远程连接服务器时候发现 AuthenticationException 异常(账号或密码错误)。但是直接在 secure crt 等工具里连接是正常的,代码在其他同事的电脑上运行也正常。
创建远程 ssh 连接核心代码如下:
def init_ssh_client(ip, username, password, port=22):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=port, username=username, password=password)
return ssh
分析解决
通过调试发现 /paramiko/client.py:779, 793 处对本地的私钥文件进行了处理。恰恰好我本地用户目录下存在 .ssh 目录,且有私钥文件,在 793 行处绑定了。
解决办法:增加 look_for_keys=False 即可。
ssh.connect(hostname=ip, port=port, username=username, password=password, look_for_keys=False)