我已经在计算机B上建立了SSH连接,并且可以通过SSH正确连接到它。我想执行一个git pull
命令,以便将存储库拉回计算机A而不是计算机B。这是否太麻烦了,还是有其他选择?
我基本上需要将计算机B上提取的任何git pull
复制到计算机A。我唯一拥有的只是两者之间的ssh连接,并且回购只能从计算机B上进行。
答案 0 :(得分:3)
如果我理解正确,那么您想通过SSH隧道使用Git,以便计算机A可以通过计算机B访问计算机C上的存储库REPO.git
在计算机A上,打开SSH隧道:
ssh -L3333:compC:22 compB
从计算机A上的另一个控制台:
git clone ssh:// git @ localhost:3333 / REPO.git
答案 1 :(得分:1)
我不确定它是否会回答您的问题,但是如果仅用于拉出,则可以在拉到B之后使用scp命令:
scp <source> <destination>
它将通过ssh连接复制为cp命令。
答案 2 :(得分:1)
另一种解决方案(我认为也是最直接的解决方案)是:
答案 3 :(得分:1)
可以在double ssh tunnel上运行git
命令。可接受的答案有些过时,ssh
目前可以在没有netcat
或socat
之类的外部命令的情况下构建隧道。
在您的~/.ssh/config
中进行配置:
Host server
HostName git-server
ProxyCommand ssh -W %h:%p B
这会将ssh
配置为开始与主机B
的连接,并打开一个
通过该连接建立到主机git-server
的隧道。运行
git pull ssh://server/path/to/repository
另一种可能的解决方案是使用ext::
remote helper。请参阅链接的问题的第二个答案。运行
git pull "ext::ssh -t B ssh git-server %S '/path/to/repository'"