我如何通过SSH访问远程(远程服务器上的本地gitlab实例)存储库?



设置如下:

  • 远端专用服务器
  • 远程私有服务器在端口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

最新更新