Paramiko 无法从 Windows 上的 ssh-agent 找到密钥
Paramiko can't find keys from ssh-agent on Windows
我正在尝试使用 paramiko 和 SSH 连接到本地网络上的测试设备。如果我指定我的密钥的文件名及其密码,我可以毫无问题地连接到设备。但是,由于我的脚本旨在 运行 在任何将密钥添加到 ssh-agent
的机器上,我正在尝试找到解决方法。
ssh-add -l
显示密钥在我的 ssh-agent
中处于活动状态,但是如果我使用 paramiko.Agent
-class 中的 get_keys()
方法,只有一个空列表,这对我来说意味着 Paramiko 无法连接到 ssh-agent
或者没有获取密钥的权限。
从 shell 开始,我可以使用 ssh root@IPADDRESS
连接到设备。当我尝试使用 Paramiko 连接到设备而不指定密钥及其密码的路径时,我只是收到 "Authentication failed" 错误。
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 不像在 [=32 上那样工作=].
Paramiko 无法在 Windows 上与 OpenSSH ssh-agent
对话。
它只能与 PuTTY Pageant 对话。
我正在尝试使用 paramiko 和 SSH 连接到本地网络上的测试设备。如果我指定我的密钥的文件名及其密码,我可以毫无问题地连接到设备。但是,由于我的脚本旨在 运行 在任何将密钥添加到 ssh-agent
的机器上,我正在尝试找到解决方法。
ssh-add -l
显示密钥在我的 ssh-agent
中处于活动状态,但是如果我使用 paramiko.Agent
-class 中的 get_keys()
方法,只有一个空列表,这对我来说意味着 Paramiko 无法连接到 ssh-agent
或者没有获取密钥的权限。
从 shell 开始,我可以使用 ssh root@IPADDRESS
连接到设备。当我尝试使用 Paramiko 连接到设备而不指定密钥及其密码的路径时,我只是收到 "Authentication failed" 错误。
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 不像在 [=32 上那样工作=].
Paramiko 无法在 Windows 上与 OpenSSH ssh-agent
对话。
它只能与 PuTTY Pageant 对话。