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 或其他需要密钥认证的场景。
开启后,远程服务器发起的 SSH 连接(例如访问 GitHub、GitLab 或内部 Git 仓库)会“借用”你本地的 ssh-agent,无需在远程机器上存放私钥,既安全又方便。
常见表现:
git pull 报错:Permission denied (publickey)
ssh -T git@github.com 在远程服务器上失败,但在本地成功只需在 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-add ~/.ssh/id_rsa 加载(支持 passphrase 输入)ssh-agent 或重复 ssh-add —— 这会覆盖转发通道,导致失效AllowAgentForwarding,此时需联系管理员基本上就这些。不复杂但容易忽略,开一开关,Git 和其他 SSH 依赖工具就能顺滑跑起来。
# vs code
# 源代码管理
# ssh
# 器上
# 时需
# 的是
# 加载
# 就能
# 你在
# 只需
# 但在
# 机器上
# gitlab
# for
# linux
# git
# windows
# github
# ubuntu
# 工具
# mac
# ai
# macos
# win
# echo
# 或其他