【问题标题】:git push using port forwarding (SSH tunnel)git push 使用端口转发(SSH 隧道)
【发布时间】:2011-06-18 15:10:05
【问题描述】:

我正在尝试访问托管在防火墙后面的集群上的 GIT 存储库。当我在校园内(位于防火墙后面)时,我可以直接访问集群,并且可以从校园外通过 SSH 连接到特定机器,然后在需要时通过 ssh 连接到集群。

我尝试使用以下方法设置隧道:

sudo ssh -L 9418:cluster:9418 username@ssh.server

但我仍然无法从我的机器上运行“git push”。我知道我遗漏了一些东西,但无法弄清楚。

编辑: 我修改了 ~/.ssh/config 有:

Host cluster
     NoHostAuthenticationForLocalhost  yes
     Hostname localhost
     Port 9418

运行 git push 时出现错误:

ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

【问题讨论】:

    标签: git ssh port portforwarding tunnel


    【解决方案1】:

    我猜 Git 远程 URL 的主机名部分是 cluster 而不是 localhostgit config remote.origin.url 的输出是什么?如果是这样的:

    git://cluster/repo.git
    

    然后改成:

    git://localhost/repo.git
    

    ssh 端口转发的工作原理是 ssh 客户端在您的本地计算机上打开一个端口(在您的情况下为 9418)并侦听连接。每当应用程序连接到该端口时,您的 ssh 客户端都会要求 ssh 服务器(在您的情况下为 ssh.server)打开与隧道远程端的连接(在您的情况下为 cluster 端口 9418)。所有发送到本地端口的数据都通过现有的 ssh 会话转发到 ssh 服务器。然后 ssh 服务器将数据注入到它与目标机器的连接中。因此,从您的角度来看,您正在连接到本地计算机。从目标的角度来看,您是从 ssh 服务器连接的。

    另外,您的 ssh 配置似乎不正确。该配置告诉您的客户端,每当您想通过 ssh 连接到名为 cluster 的机器时,它应该连接到 localhost 端口 9418。根据您提供的 ssh 命令,localhost 端口 9418 将被转发到 cluster 的端口9418.cluster的ssh服务器真的监听的是9418端口而不是默认的22端口吗?我猜cluster 实际上是在端口 9418 上运行一个 Git 服务器,在这种情况下你根本不需要修改你的 ssh 配置。

    【讨论】:

      【解决方案2】:

      很奇怪,因为这通常应该有效:this 有帮助吗?你有 ssh 配置位吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2016-02-07
        • 2021-05-11
        • 2016-11-10
        • 2019-03-11
        相关资源
        最近更新 更多