如何让防火墙后的HPC集群通过本地机器代理Git克隆公开仓库?
如何让防火墙后的HPC集群通过本地机器代理Git克隆公开仓库?
我之前帮同事解决过一模一样的问题,刚好你已经有了集群和本地机器的无密码SSH互访条件,直接用两种方案就能搞定:
方案一:临时使用(适合单次克隆或临时需求)
这种方法不用改任何配置,用完就能恢复,很灵活:
- 在clusterhpc上开一个终端,运行下面的命令建立SSH SOCKS代理隧道(这个命令会一直挂着,你可以开个新终端做后续操作,或者加
&放后台):
解释下参数:ssh -D 1080 -N localmachine-D 1080是在本地(clusterhpc)创建一个SOCKS5代理端口1080,-N表示只做端口转发不执行远程命令。 - 接着在clusterhpc的终端里,临时让Git使用这个代理:
git config --global http.proxy socks5://localhost:1080 git config --global https.proxy socks5://localhost:1080 - 现在你就可以正常执行
git clone命令了,所有请求都会通过localmachine转发到外网。 - 用完之后,记得取消代理并关掉隧道:
git config --global --unset http.proxy git config --global --unset https.proxy # 回到运行隧道的终端按Ctrl+C,或者用kill命令杀掉对应的进程
方案二:永久配置(适合经常需要克隆仓库的场景)
如果需要长期用,把配置固定下来更省心:
- 先在clusterhpc的
~/.ssh/config里添加localmachine的SSH快捷配置(如果已经有了可以跳过):Host localmachine HostName 你的本地机器IP/域名 User 你的本地机器用户名 IdentityFile ~/.ssh/id_rsa # 无密码登录的密钥文件,根据实际路径调整 - 配置Git默认使用SOCKS代理,编辑clusterhpc的
~/.gitconfig文件,添加以下内容:[http] proxy = socks5://localhost:1080 [https] proxy = socks5://localhost:1080 - 为了让隧道保持稳定,推荐用
autossh来自动维护SSH连接(大部分HPC集群都预装了这个工具,如果没有可以联系管理员安装):autossh -D 1080 -N localmachine &autossh会在隧道断开时自动重连,适合长期后台运行。 - 以后每次登录clusterhpc,只要确保这个autossh进程在运行,就能直接用git克隆仓库了。
额外小技巧
如果只需要给某个特定仓库用代理,不用全局配置,可以进入仓库目录后执行:
git config --local http.proxy socks5://localhost:1080
备注:内容来源于stack exchange,提问作者mechanics32
相关产品推荐
相关产品推荐

