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

如何在远程服务器上使用本地SSH私钥向GitHub推送代码仓库

解决方案:无需复制私钥,在远程服务器用本地SSH密钥访问GitHub

核心结论

  • 没必要给每台服务器单独创建SSH私钥绑定GitHub,完全可以复用你本地那把既连服务器又能访问GitHub的私钥
  • 有现成方案:SSH代理转发(SSH Agent Forwarding),不用把私钥复制到远程,就能让远程Shell用本地私钥完成GitHub的推送/拉取

具体操作步骤

1. 先确保本地SSH代理正常运行

在本地终端做以下操作:

  • Linux/macOS 用户:
    # 检查代理是否在运行,有输出说明已启动
    echo $SSH_AUTH_SOCK
    # 没输出的话启动代理
    eval "$(ssh-agent -s)"
    # 把你的私钥添加到代理里
    ssh-add ~/.ssh/你的私钥文件名(比如id_rsa)
    
  • Windows 用户(用Git Bash/WSL)操作和上面一致;用原生OpenSSH的话,在PowerShell里执行:
    # 设置ssh-agent开机自启并启动服务
    Get-Service ssh-agent | Set-Service -StartupType Automatic
    Start-Service ssh-agent
    # 添加私钥
    ssh-add $env:USERPROFILE\.ssh\你的私钥文件名
    

2. 配置本地SSH文件,开启代理转发

编辑本地的SSH配置文件:

  • Linux/macOS 路径:~/.ssh/config
  • Windows 路径:C:\Users\你的用户名\.ssh\config

给每台远程服务器添加下面的配置块:

Host 自定义服务器别名(比如my-server-01)
  HostName 服务器的IP或域名
  User 你在服务器上的用户名
  IdentityFile ~/.ssh/你的私钥文件名
  ForwardAgent yes

这个配置的作用是,当你SSH连远程服务器时,会把本地的SSH代理连接转发过去,远程就能用本地的私钥了。

3. 确认VSCode Remote SSH的代理转发已开启

打开VSCode的设置,搜索remote.SSH.enableAgentForwarding,确保这个选项是勾选状态(默认一般是开的,确认下更稳妥)。

4. 验证配置是否成功

用VSCode连接到远程服务器后,在终端里执行:

ssh -T git@github.com

如果返回类似Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.的内容,说明配置生效了,现在可以正常git push/git pull了。

注意要点

  • 只在你完全信任的服务器上开代理转发,避免不可信服务器滥用你的私钥权限
  • 远程服务器上不用执行ssh-add,所有密钥操作都是通过本地代理完成的
  • 要是连接时有权限问题,检查本地私钥的权限:Linux/macOS下私钥文件权限必须是600,执行chmod 600 ~/.ssh/你的私钥文件名就能搞定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:38:27