如何通过SSH借助个人电脑网络让无法访问GitHub的实验室服务器实现Git同步?
借助SSH端口转发让服务器通过你的电脑访问GitHub
绝对可以搞定!这种场景我帮不少人解决过,用SSH的端口转发就能让服务器借你的电脑的网络访问GitHub,实现Git同步。我给你两种实用方案,按需选择就行:
方案一:动态SOCKS代理(适合临时/全局需求)
如果只是偶尔需要让服务器访问GitHub,或者还要访问其他类似网站,动态代理最方便:
第一步:在你的个人电脑(能正常访问GitHub的那台)上打开终端,运行这条SSH命令:
ssh -D 1080 -C -q -N 你的服务器用户名@服务器IP地址给你解释下关键参数:
-D 1080:创建一个SOCKS5代理,监听你本地的1080端口-C:压缩传输数据,能稍微加快速度-q:安静模式,避免输出太多冗余信息-N:只建立连接,不执行远程命令,保持隧道打开
第二步:在服务器上配置Git走这个代理
临时生效的话,直接在服务器终端运行:export ALL_PROXY=socks5://你的个人电脑IP:1080如果想让Git长期用这个代理,就修改Git全局配置:
git config --global http.proxy socks5://你的个人电脑IP:1080 git config --global https.proxy socks5://你的个人电脑IP:1080注意:这里的「你的个人电脑IP」是服务器能直接访问到的IP(比如你们在同一个局域网的内网IP)
测试一下:在服务器上跑
git clone https://github.com/你的仓库地址.git,应该就能正常克隆了
方案二:定向端口转发(更安全,仅针对GitHub)
如果不想开全局代理,只想让服务器访问GitHub时走你的电脑,定向转发GitHub的443端口更安全,也更轻量化:
第一步:在个人电脑上运行这条命令,建立定向隧道:
ssh -L 8443:github.com:443 你的服务器用户名@服务器IP地址这个命令的作用是:把服务器上8443端口的请求,通过SSH隧道转发到你的电脑,再由你的电脑转发到github.com的443端口(HTTPS端口)
第二步:在服务器上配置Git,让它访问GitHub时用本地的8443端口:
git config --global url."https://localhost:8443/".insteadOf "https://github.com/"这样Git在拉取或推送GitHub仓库时,会自动把地址替换成
localhost:8443,通过隧道走你的电脑的网络测试:同样运行
git clone https://github.com/你的仓库地址.git,验证是否能正常同步
一些实用提示
- 保持你的个人电脑和服务器之间的SSH连接稳定,代理完全依赖这个隧道
- 如果是Windows个人电脑,用Git Bash或者PowerShell运行SSH命令都可以,效果一样
- 用完后取消代理的方法:
- 动态代理:服务器上运行
unset ALL_PROXY,或者重置Git代理:git config --global --unset http.proxy git config --global --unset https.proxy - 定向转发:直接关闭个人电脑上的SSH终端即可
- 动态代理:服务器上运行
内容的提问来源于stack exchange,提问作者Gerrie
相关产品推荐
相关产品推荐

