【问题标题】:Accessing Subversion repository with 2 hops using svn+ssh protocol使用 svn+ssh 协议访问具有 2 个跃点的 Subversion 存储库
【发布时间】:2010-12-11 08:24:11
【问题描述】:

我的 Ubuntu Subversion 服务器无法直接访问 Internet,192.168.1.2

我的公共 Ubuntu 机器通过 192.168.1.1 的 DMZ 暴露

我已经设置了从 192.168.1.1:3906 到 192.168.1.2:3906 的端口转发,但我不知道这将如何与 svn+ssh 一起工作,因为需要一个额外的跃点才能到达我的 Subversion 服务器

编辑:对于遇到同样问题的任何人,我的困惑来了,因为我试图将端口转发到我的 SVN 服务器(在端口“3906”上运行一个守护程序)但 访问您的通过 SSH 访问 SVN 服务器与访问运行守护程序(在 3906 处)的 SVN 服务器完全不同。您需要将此视为典型的 ssh 连接。一旦我编辑了我的设置,以下两种方法都有效

【问题讨论】:

    标签: svn ssh


    【解决方案1】:

    在你的 .ssh/config 文件中加入这样的内容:

    Host subversionserver
            Host=192.168.1.1
            ProxyCommand = ssh 192.168.1.1 /usr/local/bin/nc -w 60 192.168.1.2 %p
            ForwardX11 = no
            User = myusername
            ForwardAgent = yes
    

    然后您就可以通过以下方式连接到您的 ssh 服务器:

    ssh subversionserver
    

    基本上你将登录到你的公共盒子并在你进入后运行 netcat 命令。你想要的 subversion 服务器的 SSH 连接将通过 netcat 连接。

    显然你需要在你的盒子的某个地方安装 netcat。

    我的 .ssh/config 文件中的版本有一个通配符 Host 并在 netcat 命令中使用 %h。当您想要代理生产环境中必须通过 DMZ 才能到达的所有盒子时非常有用。

    【讨论】:

    • 小错字:“.12”应该是“.2”
    • 我假设这会进入试图进入的外部机器的 .sssh/config 中。如果是这样,当你运行“ssh subverionserver”时,它如何知道位置? (我在您的主机配置中没有看到任何关于 loc 或 ip 地址的信息)
    • 我使用了您为您的机器提供的 IP 地址(在本例中为 192.168.1.1)。您可以将它们替换为实际的主机名。外部机器需要知道外部主机名,面向公众的机器需要知道颠覆服务器的 IP 地址。
    【解决方案2】:

    您的 sshd 是否侦听端口 3906(而不是标准端口 22)?如果是这样,您应该能够连接例如

    $ svn co svn+ssh://MYHOST:3906/svn/trunk/whatever

    如果没有,请将 .1 上的端口 3906 转发到 .2 上的 22。

    如果您不需要在 Intranet 上的其他任何地方进行 ssh,则将 .1 上的端口 22 转发到 .2 上的 22。

    【讨论】:

    • 如果我正确理解端口转发,我会通过 ssh 端口 22 从工作中访问我的公共 PC,所以我不确定我是否可以将其转发到 .2,也许如果我将 3906 添加到我的 sshd 监听端口,那么会被转发吗?是
    猜你喜欢
    • 2010-09-27
    • 2013-12-21
    • 1970-01-01
    • 2011-04-10
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多