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
相关产品推荐
相关产品推荐

