【问题标题】:git clone from remote server with ssh chaining使用 ssh 链接从远程服务器进行 git 克隆
【发布时间】:2011-10-18 07:25:37
【问题描述】:

我们在删除服务器 A 上有一个 git 存储库。我通常通过 ssh 从我的工作机器访问它,例如

git clone user@A:/path/to/repo

但是,不能从外部工作直接访问 A。还有另一台服务器 B,我通过 ssh 进入,然后可以 ssh 进入 A。我现在要做的是在家里的机器上克隆存储库。我试过像

这样的东西 git clone B:A:/path/to/repo git clone user@B:A/path/to/repo

这两种方法都不起作用。我想我可以复制 B 上的 repo 并从那里克隆,但是将更改合并回 A 会很麻烦。有什么建议我可以直接访问 A 吗?

【问题讨论】:

    标签: git ssh


    【解决方案1】:

    如果您在服务器 A 和服务器 B 之间设置了无密码 SSH,那么您可以编写一个简单的包装脚本,通过 SSH 连接到服务器 A,并使用来自 Git 的参数运行 SSH 命令。

    创建脚本:

    cat << EOF > ssh-wrapper.sh
    #!/bin/sh
    ssh -T serverB.example.com ssh ${@}
    exit $?
    EOF
    chmod 755 ssh-wrapper.sh
    

    然后将 GIT_SSH 设置为 ./ssh-wrapper.sh 并调用 Git:

    GIT_SSH='./ssh-wrapper.sh' git clone user@A:/path/to/repo
    

    【讨论】:

    • 太好了,谢谢。给读者的快速说明:使用标准语法提交,例如“git 提交 -m”。通过指定包装器的路径进行推送:GIT_SSH='./ssh-wrapper.sh' git push
    • 我需要使用特定的部署密钥调用 ruby​​ 的捆绑器。经过多年的搜索,我终于在您的答案中找到了神奇的 env 变量。谢谢!
    【解决方案2】:

    我认为您需要一个 SSH 隧道来通过 A。 看看这个: http://www.revsys.com/writings/quicktips/ssh-tunnel.html

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      相关资源
      最近更新 更多