Paramiko 在 Windows 上找不到来自 ssh-agent 的密钥

Posted

技术标签:

【中文标题】Paramiko 在 Windows 上找不到来自 ssh-agent 的密钥【英文标题】:Paramiko can't find keys from ssh-agent on Windows 【发布时间】:2021-10-30 00:44:06 【问题描述】:

我正在尝试使用 paramiko 和 SSH 连接到本地网络上的测试设备。如果我指定密钥的文件名及其密码,我可以毫无问题地连接到设备。但是,由于我的脚本要在任何将密钥添加到 ssh-agent 的机器上运行,我正试图找到一种解决方法。

ssh-add -l 显示密钥在我的ssh-agent 中处于活动状态,但如果我使用paramiko.Agent 类中的get_keys() 方法,则只有一个空列表,这对我来说意味着 Paramiko 要么可以' t 连接到ssh-agent 或没有获取密钥的权限。

在 shell 中,我可以使用 ssh root@IPADDRESS 连接到设备。当我尝试使用 Paramiko 连接设备而不指定密钥及其密码的路径时,我只是收到 “身份验证失败” 错误。

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 上那样工作。

【问题讨论】:

【参考方案1】:

Paramiko 无法在 Windows 上与 OpenSSH ssh-agent 通信。

它只能与 PuTTY Pageant 对话。

【讨论】:

以上是关于Paramiko 在 Windows 上找不到来自 ssh-agent 的密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cygwin OpenSSH 在 Windows 上的 Paramiko 找不到 known_hosts 文件

Windows 在 subprocess.call() 上找不到文件

致命错误:在 Windows 上找不到类“MySQLi”

我在 Windows 10 上找不到 /rootfs

在 Windows 10 上找不到 SDK“Microsoft.VCLibs,版本 = 14.0”

科尔多瓦 android 构建失败,在 Windows 上找不到符号