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

How do I access a remote (local gitlab instance on remote server) repository over SSH?

设置如下:

如何将该存储库克隆到我的本地计算机上,并根据该设置远程 push/pull 数据?

这是我在离远程私服不远很远的时候本地访问的方式:

git clone git@XXX.XXX.XX.X:REPODIR/repo_name.git

在这种情况下,XXX.XXX.XX.X 是本地 git-lab 实例在远程网络上的 IP。

是否有隧道进入远程网络并通过代理访问 gitlab 实例(请原谅我可能用错了这个词)。

谢谢。

好的,这主要要感谢@o11c,尽管这是我的发现,使我能够远程克隆我的存储库。

免责声明:ProxyJump(-J 请参阅 ssh 联机帮助页)是 shorthand 更现代的版本,但我无法让它工作——如果有人想更新他们的 ProxyJump 实现会有用的!

使用您的主要身份(这可以在 ~/.ssh 中,或者您可以手动引用它 -一)

ssh -ND 3131 nkunes@XXX.XXX.1.146 -i ../../keys/XXX-ssh &

然后我在 shell 中获取这个 bash 脚本我打算 运行 git 命令(注意 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