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

VSCode通过Pageant实现SSH代理转发连接NixOS失败求助

问题:NixOS上VSCode远程SSH无法通过Pageant正确转发密钥代理

背景

  • 环境:NixOS机器,使用VSCode远程工作区
  • 限制:受客户要求,只能使用PuTTY/Pageant,无法使用Windows原生ssh-agent
  • 此前尝试不依赖Pageant转发密钥,始终失败且日志无法定位问题

当前配置

VSCode settings.json 配置

{
    "remote.SSH.path": "C:\\Program Files\\PuTTY\\ssh2plink_64bit.exe",
    "remote.SSH.enableAgentForwarding": true
}

说明:ssh2plink是用于让VSCode调用PuTTY的plink工具进行远程连接的辅助程序

SSH 配置(~/.ssh/config)

Host myhost
    HostName x.x.x.x
    User myuser
    ForwardAgent yes

遇到的问题

上述配置可以通过Pageant存储的密钥成功连接远程工作区,但在远程终端执行 ssh-add -L 时显示无身份信息,说明Pageant的密钥代理转发未生效。

临时解决方法

  • 在fish Shell中执行:ssh -A myuser@myhost,该命令会在远程机器的 /tmp/ssh-XXXXXXXX/agent.xxxxxx 路径生成SSH套接字
  • 在已连接的VSCode远程终端中执行:export SSH_AUTH_SOCK=$(ls -t /tmp/ssh-**/* | head -1),将环境变量SSH_AUTH_SOCK指向最新生成的套接字
  • 执行上述操作后,ssh-add -L 可正常显示Pageant中的可用密钥

补充:Pageant配置文件修正

若要让Pageant配合VSCode远程连接,需修改自动生成的pageant.conf文件,否则VSCode控制台会报错“includes不能在主机段外”导致连接失败。修改后的开机自启start_pageant.bat脚本如下:

Start "" pageant.exe --openssh-config %USERPROFILE%\.ssh\pageant.conf --encrypted %USERPROFILE%\path\to\privkey.ppk
timeout /t 2
SET "configfile=%USERPROFILE%\.ssh\pageant.conf"
set /p configcontent=<%configfile%
SET "text=Host *"
:: 复制内容到临时文件
type %configfile%> temp.txt
:: 用变量内容覆盖原文件
echo %text%> %configfile%
:: 在IdentityAgent前添加制表符(需手动输入制表符,复制可能失效)
echo(	%configcontent%>> %configfile%
:: 删除临时文件
del temp.txt

注意:脚本中echo( %configcontent%>> %configfile%的制表符需手动输入,复制粘贴可能无法正确识别

需求

寻求无需手动设置SSH_AUTH_SOCK,让VSCode直接正确配置Pageant代理转发的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:03:10