python - Paramiko 在 Windows 上无法从 ssh-agent 找到 key

标签 python ssh paramiko ssh-agent

我正在尝试使用 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/

相关文章:

python 2.7 : round a float up to next even number

GIT - 致命的 : Could not resolve host: bitbucket. 组织

python - 如何使用 paramiko ssh 对象向 Windows 和 Linux 服务器发送远程调用?

python - 如何检查ssh.exec_command执行成功与否?

python - Fabric 和Paramiko

python - 如何根据 python 上的 tkinter 中的用户输入生成弹出消息?

python - 如何停止在 Django 2.* 管理面板中记录最近的操作和历史记录?

python - 在 Numpy 数组中找到高原

ssh - 让特定的审阅者审阅gerrit上的代码

ubuntu - 无法通过端口 443 连接到 ssh