You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下Paramiko无法读取ssh-agent中密钥的问题如何解决?

问题根因

你遇到的问题是Windows平台原生OpenSSH Agent使用命名管道而非Unix风格套接字通信,旧版本Paramiko默认仅读取SSH_AUTH_SOCK环境变量指向的套接字路径,因此无法识别Windows系统中运行的ssh-agent。

解决步骤

  1. 升级Paramiko到2.9及以上版本,该版本开始原生支持Windows OpenSSH Agent的命名管道通信:
pip install --upgrade paramiko
  1. 若升级后仍无法读取agent密钥,可在代码头部手动指定Windows ssh-agent的命名管道路径:
import os
# 仅Windows系统需要添加该行
if os.name == 'nt':
    os.environ['SSH_AUTH_SOCK'] = '\\\\.\\pipe\\openssh-ssh-agent'
  1. 调整后的完整连接代码如下:
import paramiko
import os

if os.name == 'nt':
    os.environ['SSH_AUTH_SOCK'] = '\\\\.\\pipe\\openssh-ssh-agent'

def createSSHClient(server, port, user):
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 显式开启agent认证和系统密钥查找,默认参数为True可省略
    client.connect(server, port, username=user, allow_agent=True, look_for_keys=True)
    return client

ssh = createSSHClient('IPADDRESS', 22, 'root')

注意事项

  • 确认运行脚本的用户和执行ssh-add添加密钥的用户为同一用户,Windows下不同用户的ssh-agent服务相互隔离
  • 若使用管理员权限运行ssh-add添加密钥,也需要用相同权限运行脚本
  • 执行ssh-add -l确认目标密钥确实已加载到ssh-agent中

内容的提问来源于stack exchange,提问作者ImanityDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:39:00