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

VS Code 远程开发(Remote-SSH)默认不启用 SSH Agent Forwarding,这意味着你在本地机器上已加载的 SSH 密钥(比如通过 ssh-add 添加的私钥)无法自动用于远程服务器上的 Git 操作、git clone 或其他需要密钥认证的场景。
为什么需要开启 Agent Forwarding?
开启后,远程服务器发起的 SSH 连接(例如访问 GitHub、GitLab 或内部 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 依赖工具就能顺滑跑起来。










