VS Code远程会话中的SSH Agent Forwarding

11次阅读

vs code Remote-ssh 默认不启用 SSH Agent forwarding,需在 ~/.ssh/config 对应 Host 块中添加 ForwardAgent yes 才能使远程 git 等操作复用本地 ssh-agent 密钥。

VS Code远程会话中的SSH Agent Forwarding

VS Code 远程开发(Remote-SSH)默认不启用 SSH Agent Forwarding,这意味着你在本地机器上已加载的 SSH 密钥(比如通过 ssh-add 添加的私钥)无法自动用于远程服务器上的 Git 操作、git clone 或其他需要密钥认证的场景。

为什么需要开启 Agent Forwarding?

开启后,远程服务器发起的 SSH 连接(例如访问 githubgitlab 或内部 Git 仓库)会“借用”你本地的 ssh-agent,无需在远程机器上存放私钥,既安全又方便。

常见表现:

  • 远程终端中执行 git pull 报错:Permission denied (publickey)
  • VS Code 的源代码管理面板显示 “Authentication failed”
  • ssh -T git@github.com 在远程服务器上失败,但在本地成功

如何启用 SSH Agent Forwarding

只需在 VS Code 的 Remote-SSH 配置中添加一行:

打开 VS Code 设置 → 搜索 “remote.ssh.configFile”,确认你使用的是哪个 SSH 配置文件(通常是 ~/.ssh/config);然后编辑该文件,在对应 Host 块中加入:

ForwardAgent yes

例如:

Host my-remote   HostName 192.168.1.100   User ubuntu   ForwardAgent yes

保存后,重新连接远程会话(或重启 Remote-SSH 窗口)即可生效。

验证是否成功

连接成功后,在远程 VS Code 终端中运行:

  • echo $SSH_AUTH_SOCK —— 应输出一个非空路径(如 /tmp/ssh-XXXXXX/agent.XXXX
  • ssh-add -l —— 应列出你本地已添加的密钥指纹(不是空列表)
  • ssh -T git@github.com —— 应返回类似 Hi username! You've successfully authenticated...

注意事项与常见问题

Agent forwarding 依赖本地 ssh-agent 正常工作。确保:

  • 本地已启动 ssh-agent(macOS / linux 通常默认开启;windows 使用 OpenSSH for windows 时需手动启动)
  • 私钥已用 ssh-add ~/.ssh/id_rsa 加载(支持 passphrase 输入)
  • 不要在远程服务器上运行 ssh-agent 或重复 ssh-add —— 这会覆盖转发通道,导致失效
  • 某些企业环境或 SSH 服务端可能禁用 AllowAgentForwarding,此时需联系管理员

基本上就这些。不复杂但容易忽略,开一开关,Git 和其他 SSH 依赖工具就能顺滑跑起来。

text=ZqhQzanResources