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

Windows到Linux的VSCode SSH代理转发失效问题求助

排查步骤与解决方案

1. 验证代理转发是否实际生效

在VSCode远程终端执行以下命令,检查是否能看到Windows端ssh-agent加载的Github密钥:

ssh-add -l

如果没有列出你的Github密钥,说明代理转发未正确传递密钥:

  • 回到Windows本地终端,执行ssh-add C:\Users\<你的用户名>\.ssh\<github密钥文件名>(若密钥不是默认的id_rsa/id_ecdsa,必须手动添加到ssh-agent)
  • 确保Windows端OpenSSH Authentication Agent服务处于运行状态,可通过services.msc确认

2. 检查Git是否强制指定了本地密钥

Linux端Git可能配置了固定SSH命令,绕过代理转发。执行以下命令查看全局Git配置:

git config --global core.sshCommand

如果输出类似ssh -i ~/.ssh/local_key的内容,说明Git强制使用本地密钥,删除该配置:

git config --global --unset core.sshCommand

3. 确认Linux端sshd配置已生效

即使已启用AllowAgentForwarding,也需重启sshd服务使配置生效:

# 适用于systemd系统(如Ubuntu 16.04+/CentOS 7+)
sudo systemctl restart sshd
# 适用于SysVinit系统
sudo service ssh restart

4. 验证SSH连通性

在远程终端直接测试与Github的SSH连通性,排除Git本身的问题:

ssh -T git@github.com
  • 若提示Hi <你的Github用户名>! You've successfully authenticated...,说明代理转发正常,问题可能出在仓库地址或权限设置
  • 若仍提示permission denied (publickey),回到步骤1重新检查代理转发配置

5. 检查VSCode远程环境变量继承

确认VSCode进程是否正确继承了SSH_AUTH_SOCK变量:

  • 在VSCode内置终端执行echo $SSH_AUTH_SOCK并记录路径
  • 在Linux工作站本地终端(若能直接登录)执行同样命令,对比路径是否一致
  • 若路径不同,尝试重启VSCode的Remote-SSH扩展:按下F1,选择Remote-SSH: Kill VS Code Server on Host后重新连接

6. 升级Windows端OpenSSH版本

旧版本Windows OpenSSH存在代理转发兼容性问题,升级到最新版本:

  • 打开Windows设置 → 应用 → 可选功能 → 添加功能,找到OpenSSH Client并更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:26