【问题标题】:Accessing a git repository via ssh behind a firewall通过防火墙后的 ssh 访问 git 存储库
【发布时间】:2010-12-16 06:46:11
【问题描述】:

我想在仅允许 http 代理访问的公司防火墙后面访问(克隆/推送/拉取)私有(通过 ssh)git 存储库。我已经编写了一个强大的 Java(守护程序)程序(基于 JSCh 类库),它允许我利用本地和远程端口转发,我希望利用它,但是当我尝试设想如何设置时,我的大脑受伤了.

git repo 仓库(创造一个短语)位于 foo.server.com/var/git 因此,忽略fireall,设置克隆的自然倾向是:

$ git clone ssh://foo.server.com/var/git/myrepo.git

但防火墙会阻止此命令。我倾向于尝试类似的东西

$ git clone ssh://localhost:8022/var/git/myrepo.git

其中 localhost:8022 被转发到 foo.server.com:22

那么这条路值得走吗?有没有更简单但仍然安全的解决方案?我应该注意哪些陷阱或陷阱?

【问题讨论】:

    标签: git proxy openssh jsch


    【解决方案1】:

    像这样使用socat.ssh/config

    Host=foo.server.com
    ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd
    

    您应该能够sshfoo.server.com

    git clone ssh://foo.server.com/var/git/myrepo.git
    

    预计会起作用。

    【讨论】:

    • 很好,这是解决这个烦人问题的最终解决方案。惊人的! Small post about this
    • 感谢 Gregor,您的解决方案奏效了!代理是一件很痛苦的事情。任何帮助表示赞赏!
    【解决方案2】:

    您可以进行正常的 ssh(命令行)会话吗?如果是这样,git 也应该可以工作。

    当使用 ssh 时,git 应该在 .ssh/config 中选择你的配置选项。 如果这还不够,您可以将环境变量 GIT_SSH 指向修改后的 ssh 版本(或 shell 脚本包装器)。

    【讨论】:

    • 没有。这就是让这变得如此困难的原因。仅允许 http 通过防火墙。我可以使用 SSH 配置技巧来让正常的 ssh 命令正常工作,但我不相信这些对 git 命令有帮助。我很想知道我错了,我会在上班时尝试一下。
    • 更新了我的答案:你的 SSH 配置黑客也应该通过 git 工作。
    • 实际上 git 在通过 SSH 进行 fetch / push 时只是调用 git-upload-pack / git-receive-pack (它会执行类似于 ssh git.example.com "git-upload-pack '/project.git'" 的操作)。您可以使用适当的选项指定使用适当的选项查找Git-Upload-Pack或Git-Recoption-Pack的位置。 span>
    • @pajato0:您能否发布更详细的答案,您实际上在这里做了什么? IE。你用什么作为 GIT_SSH?
    • 当然。我设置 GIT_SSH=sshx 其中 sshx 是我的 PATH 变量上的一个命令,它指定一个使用开瓶器绕过防火墙的配置文件,即 sshx 是“ssh -F ~/path/to/xconfig $*”并且 xconfig 包含(在 Host *) "ProxyCommand corkscrew proxy-host.foo.com 80 %h %p /path/to/proxyauth"
    【解决方案3】:

    这是我在 Linux 机器下工作的设置(端口 18081 上的本地主机是代理)。

    cat ~/.ssh/config
    Host  github.com
      User git
      ProxyCommand nc -x localhost:18081 -Xconnect %h %p
    

    【讨论】:

    • 在 Debian 上这需要包“netcat-openbsd”(“netcat-traditional”提供的 netcat 版本没有 -x 选项)。
    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 2016-09-14
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2021-10-06
    相关资源
    最近更新 更多