如何通过SSH隧道访问远端私有服务器上部署的私有Gitlab仓库
私有Gitlab跨网访问配置方案
完全可以通过SSH隧道/跳转的方式实现外网访问内网私有Gitlab,配置完成后可以正常执行clone、push、pull等所有Git操作,无需额外安装代理工具。
前置准备
提前将两组SSH密钥存放到本地.ssh目录下:
- 登录远端私有服务器的SSH私钥(用于隧道/跳转鉴权)
- Gitlab专用的独立SSH私钥(用于Gitlab身份验证)
Linux/macOS下需确保私钥权限为600,执行命令:chmod 600 ~/.ssh/私钥文件名
方案1:ProxyJump自动跳转(推荐)
适用于OpenSSH 7.3及以上版本(目前主流Windows/macOS/Linux系统默认SSH均支持),无需手动维护隧道,Git操作时自动完成跳转连接。
- 编辑本地SSH配置文件
~/.ssh/config(Windows路径为C:\Users\你的用户名\.ssh\config),新增如下配置:
# 远端私有服务器跳转配置(如果需要单独登服务器也可以用这个别名) Host remote-server HostName 远端服务器公网IP User 远端服务器登录用户名 Port 远端服务器SSH端口 IdentityFile ~/.ssh/登录远端服务器的私钥路径 IdentitiesOnly yes # 私有Gitlab访问配置 Host private-gitlab HostName XXX.XXX.XX.X # 替换为Gitlab的内网IP User git Port Gitlab的SSH端口 # 默认22,你部署的是XXXX端口就填XXXX IdentityFile ~/.ssh/Gitlab专用的私钥路径 IdentitiesOnly yes ProxyJump remote-server
- 仓库操作
- 新克隆仓库:直接执行
git clone private-gitlab:REPODIR/repo_name.git即可 - 已有存量仓库:进入仓库目录执行
git remote set-url origin private-gitlab:REPODIR/repo_name.git修改远程地址即可
后续所有Git操作和内网使用体验完全一致,无需额外操作。
方案2:手动建立本地端口转发隧道
如果你的SSH版本不支持ProxyJump,可以用手动建隧道的方式实现:
- 执行SSH命令建立本地端口转发隧道:
ssh -L 2222:XXX.XXX.XX.X:Gitlab的SSH端口 remote-server -N -f
参数说明:
2222是本地未被占用的端口,可以自行修改-N表示只做转发不打开远端服务器的shell-f表示隧道后台运行
- 编辑本地SSH配置文件
~/.ssh/config,新增Gitlab配置:
Host private-gitlab HostName 127.0.0.1 Port 2222 # 和你上面指定的本地端口一致 User git IdentityFile ~/.ssh/Gitlab专用的私钥路径 IdentitiesOnly yes
- 仓库操作和方案1完全一致,唯一需要注意的是每次访问Gitlab前需要先运行第一步的隧道命令,如果隧道断开需要重新执行。如果需要长期保活,可以使用
autossh工具管理隧道。
内容的提问来源于stack exchange,提问作者Nicholas Kunes
相关产品推荐
相关产品推荐

