我正在尝试使用 paramiko 和 SSH 连接到本地网络上的测试设备。如果我指定 key 的文件名及其密码,我可以毫无问题地连接到设备。但是,由于我的脚本旨在在将 key 添加到 ssh-agent 的任何计算机上运行,因此我正在尝试找到解决该问题的方法。
ssh-add -l
显示 key 在我的 ssh-agent
中处于事件状态,但如果我使用 get_keys()
从 paramiko.Agent
类中调用方法,只有一个空列表,这对我来说意味着 Paramiko 要么无法连接到 ssh-agent
,要么没有获取 key 的权限。
从 shell 中,我只需使用 ssh root@IPADDRESS
连接到设备。当我尝试使用 Paramiko 连接到设备而不指定 key 路径及其密码时,我只是收到“身份验证失败”错误。
import paramiko
import os
def createSSHClient(server, port, user):
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(server, port, username=user)
return client
ssh = createSSHClient('IPADDRESS', 22, 'root')
检查os.environ
中的SSH_AUTH_SOCK
返回False
,但据我所知,Windows上的SSH不太有效就像在 Unix/Linux 上一样。
最佳答案
Paramiko 仅从 2.10 开始就可以与 Windows OpenSSH ssh-agent
通信(并且它 was buggy in 2.10.3 )。确保您拥有最新版本的 Paramiko。
旧版本只能与 PuTTY Pageant 对话。
关于python - Paramiko 在 Windows 上无法从 ssh-agent 找到 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68998086/