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更新或手动安装最新稳定版:
- 打开「设置」→「应用」→「可选功能」
- 找到「OpenSSH客户端」,卸载后重新添加安装最新版本
6. 确认服务启动配置
检查ssh-agent服务的启动类型和运行账户:
Get-Service ssh-agent | Select-Object Name, StartType, ServiceType
若启动类型为「手动」,改为自动:
Set-Service ssh-agent -StartupType Automatic
内容的提问来源于stack exchange,提问作者Jarek Rozanski
相关产品推荐
相关产品推荐

