【问题标题】:Git clone from remote ssh repository - change the machine on the remote network before executing the clone command从远程 ssh 存储库进行 Git 克隆 - 在执行克隆命令之前更改远程网络上的机器
【发布时间】:2011-06-13 18:55:36
【问题描述】:

我想将一个 git 存储库从我公司的服务器克隆到我的个人计算机。从“外部”访问这些服务器的唯一方法是通过 ssh 登录到“machine1”

ssh user@machine1.company.xy

不幸的是,该特定机器上没有安装 git。所以一个 git clone 像

git clone ssh://user@machine1.company.xy/path/to/repo <local-repo-path>

行不通。我要做的是在通过“machine1”登录网络后更改为安装了 git 的另一台机器“machine2”。所以要让克隆工作,我必须执行一个类似的命令

ssh machine2

在实际执行 git 命令之前。有没有办法做到这一点?可能是预克隆钩子之类的东西?

是否有可能以某种方式将远程存储库打包成一个文件(补丁?),将该文件复制到本地计算机并从该文件克隆?

期待您的提示和建议!

【问题讨论】:

    标签: git proxy ssh git-clone


    【解决方案1】:

    您可以通过配置 ssh 代理命令来做到这一点。注意:这假设netcat 在代理服务器上可用;你可以用 perl 中的类似脚本替换 netcat 或者如果需要的话。

    将以下内容添加到您的 ~/.ssh/config,如果需要,请创建它:

    Host machine1
    User yourusername
    HostName machine1.yourcompany.com
    
    Host machine2
    User yourusername
    ProxyCommand ssh machine1 nc %h %p
    HostName machine2.internal.network
    

    现在您可以ssh machine2,它会自动通过 machine1 建立隧道。这意味着使用 git 就像 git clone ssh://machine2/path 一样简单。

    也可以使用git bundle 命令将存储库捆绑到一个文件中。但是,如果设置了正确的 ssh 代理,则不需要这样做。

    【讨论】:

    • 这听起来是个不错的解决方案。不幸的是,netcat 显然不会在远程机器上退出。这是一个运行 SunOS 10 的 sparc 架构。我可以使用 netcat 的替代品吗?
    • 唯一的要求是你把一些简单的程序放在一起,从标准输入/标准输出到任意远程主机;您可能可以使用那里可用的任何脚本语言编写一些简单的脚本,或者编译 netcat 或 socat 之类的并将它们放在您的主目录中
    • 好的,我明白你的意思了。对我来说似乎是一个挑战,但我会尽力而为。再次感谢!
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2011-04-03
    • 2020-01-02
    • 2016-04-27
    相关资源
    最近更新 更多