设置如下:
- 远端专用服务器
- 远程私有服务器在端口XXXX上有私有的gitlab实例
- 远程私有服务器配置为允许通过SSH密钥SSH登录
- 远程私有服务器XXXX端口上的gitlab实例需要使用不同的SSH密钥进行SSH密钥认证
如何将该存储库克隆到本地机器上,并远程推送/拉取数据?
当我离远程私有服务器不远时,这是我在本地访问它的方式:
git clone git@XXX.XXX.XX.X:REPODIR/repo_name.git
在此例中,XXX.XXX.XX.X是远程网络中本地git-lab实例的IP。
是否有隧道进入远程网络并通过代理访问gitlab实例(原谅我使用了错误的可能这个词)。
谢谢。
好的,这主要归功于@o11c,尽管这里是我的发现,使我能够远程克隆我的repo。
免责声明:ProxyJump (-J见ssh手册)是这个的简写,更现代的版本,但我无法让它工作-如果有人想更新他们的ProxyJump的实现,这将是有用的!
SSH到您的远程帐户到主服务器,端口到您的gitlab或其他应用程序实例,使用您的主身份(这可以在~/。或者您可以使用-i)
手动引用它ssh -ND 3131 nkunes@XXX.XXX.1.146 -i ../../keys/XXX-ssh &
然后我将这个bash脚本放在我打算运行git命令的shell中(注意使用ProxyCommand而不是ProxyJump,这是执行此操作的旧方法,但它对我来说效果很好)。还要注意127.0.0.1:PORT应该与应用程序的端口交换)
alias ssh="ssh -o ProxyCommand='/usr/bin/nc -X 4 -x 127.0.0.1:3131 %h %p'"
export GIT_SSH=~/Desktop/XXX-eng/ssh-access/ssh-proxy.sh
export PRE_SSH_ALIAS_PROMPT="$PS1"
export PS1="<< SSH ALIAS >>$PS1"
其中ssh-proxy.sh
定义如下:(再次,为您的应用程序交换端口,如果需要现代实现,可能使用ProxyJump)
ssh -o ProxyCommand='/usr/bin/nc -X 4 -x 127.0.0.1:3131 %h %p' "$@"
然后,你可以正常克隆使用:
git clone git@XXX.XXX.XX.X:REPODIR/repo_name.git