2012-03-13 74 views
2

我目前正在处理一个项目,需要我从我的机器ssh到机器Y,在此处执行git pull,然后检索编译的代码,以便我可以看到我们的位置在。与git一起使用“代理”

我想用git直接在X,但我不能因为我从Y属于本地网络拉代码。有没有办法以某种方式使用X作为代理,所以我可以直接在我的机器上使用git并为自己节省很多麻烦?

(我使用的Linux发行版,顺便说一句)

+0

注意自我:这是我第1万次堆栈溢出upvote。 – VonC 2012-03-13 21:03:54

+0

我很荣幸;-) – 2012-03-14 07:47:57

回答

2

如果你有sshd的上Y运行(因为你可以sshY和执行操作),您可以:

这样,哟如果需要,您可以直接在X上获得Y回购的克隆,进行修改并可以推回到Y回购(origin)。

+0

注意:Git和ssh协议:http://progit.org/book/ch4-1.html#the_ssh_protocol – VonC 2012-03-13 07:47:30

1

您可以使用ssh的代理功能。举例来说,我(名字遮挡以保护有罪:-)):

# tunneling 
Host *.secure2.com 
    ProxyCommand ssh secure1.local.com 'conn %h %p' 

其中“conn将”是一个命令我有确实给目标主机/端口对的连接。如果有的话,您可以使用nc命令。请参阅ssh_config手册页(通常在第5节中)。

1

我只想着一个本地端口机器Ÿ当你ssh到机器X:

ssh -L2022:Y:22 [email protected] 

现在,当你的SSH会话存在,你可以使用另一个本地shell和对机器ÿ运行ssh命令:

git clone ssh://[email protected]:2022/repos/Yrepo repo_from_Y 

或者当然,克隆/从Y拉到X,您可以从X克隆/拉到您的本地机器,使X成为代理中间体。如果你使X上的克隆成为Y的一面镜子,你可以添加一个cron作业来保持它的最新状态。使用本地转发端口最简单,非常灵活。