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

Windows 11 OpenSSH Agent 间歇性无法识别密钥问题排查求助

Windows 11 OpenSSH客户端密钥代理交替丢失身份的排查方案

环境信息

  • 系统:Windows 11
  • OpenSSH客户端版本:OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
  • OpenSSH Authentication Agent服务状态:已运行

问题现象

执行ssh-add -l时结果交替显示The agent has no identities.和已加载的密钥列表,导致每隔一次SSH请求就出现代理无法找到密钥/身份信息的错误。

排查步骤

1. 清理重复的SSH Agent进程

打开任务管理器,检查是否存在多个ssh-agent.exe进程。如果有,执行以下命令彻底重启服务:

Stop-Service ssh-agent
Get-Process ssh-agent | Stop-Process -Force
Start-Service ssh-agent

重启后确认仅保留一个运行的ssh-agent.exe进程。

2. 验证SSH_AUTH_SOCK环境变量的稳定性

每次执行ssh-add -l前后,检查环境变量值是否变化:

echo $env:SSH_AUTH_SOCK

如果路径交替改变,说明有其他程序(如Git Bash、WSL)启动了独立的Agent实例,覆盖了系统Agent的套接字。可手动固定使用系统Agent的套接字路径:

$env:SSH_AUTH_SOCK = (Get-ChildItem -Path "HKCU:\Software\OpenSSH" | Where-Object {$_.Name -like "*Agent*"}).GetValue("DefaultSocket")

3. 检查SSH配置中的密钥自动加载设置

打开%USERPROFILE%\.ssh\config文件,查看AddKeysToAgent配置。若设置为yes或confirm,尝试改为no后测试:

AddKeysToAgent no

手动加载密钥后多次执行ssh-add -l,观察是否仍出现身份丢失现象:

ssh-add $env:USERPROFILE\.ssh\your_private_key_filename

4. 在干净环境中测试

启动无自定义配置的PowerShell会话:

Start-Process powershell -NoProfile

在新会话中启动Agent、加载密钥,多次执行ssh-add -l。若问题消失,说明用户配置文件($PROFILE)中的脚本干扰了Agent运行。

5. 升级OpenSSH客户端

当前使用的8.6p1版本存在已知的Agent连接稳定性问题,可通过Windows更新或手动安装最新稳定版:

  1. 打开「设置」→「应用」→「可选功能」
  2. 找到「OpenSSH客户端」,卸载后重新添加安装最新版本

6. 确认服务启动配置

检查ssh-agent服务的启动类型和运行账户:

Get-Service ssh-agent | Select-Object Name, StartType, ServiceType

若启动类型为「手动」,改为自动:

Set-Service ssh-agent -StartupType Automatic

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:21:06