我目前正在做一个项目,它需要我从我的机器X ssh到机器Y,在那里做一个git pull,然后检索编译后的代码,这样我就可以知道我们在哪里了。
我想直接在X上使用git,但我不能,因为我从Y所属的本地网络提取代码。有没有办法以某种方式使用X作为代理,这样我就可以直接在我的机器上使用git,而省去了很多麻烦?
(顺便说一句,我使用的是Linux发行版)
发布于 2012-03-13 15:32:15
如果您在Y上运行sshd (因为您可以在Y上使用ssh并执行操作),您可以:
在X
git clone ssh://user@Y:/path/to/repo/on/Y上安装
git这样,您可以直接在X上获得Y存储库的克隆,进行修改,如果需要,可以将其推回到Y存储库(origin)。
发布于 2012-03-13 15:44:03
您可以使用ssh的代理特性。例如,我有(名字模糊以保护有罪的人:- ):
# tunneling
Host *.secure2.com
ProxyCommand ssh secure1.local.com 'conn %h %p'其中"conn“是我拥有的连接到目标主机/端口对的命令。如果有,您可以使用nc命令。请参阅ssh_config手册页(通常在第5节中)。
发布于 2012-03-13 15:54:19
当您通过ssh进入计算机X时,我只会将一个本地端口转发到计算机Y:
ssh -L2022:Y:22 yourself@Y现在,当您的ssh会话存在时,您可以使用另一个本地shell并对计算机Y运行ssh命令:
git clone ssh://yourself@localhost:2022/repos/Yrepo repo_from_Y当然,从Y克隆/拉到X之后,您可以从X克隆/拉到本地计算机,使X成为代理中间件。如果您使X上的克隆成为Y的裸镜像,则可以添加cron作业以使其保持最新。使用本地转发端口是最简单、非常灵活的。
https://stackoverflow.com/questions/9679855
复制相似问题