通过隧道颠覆

Posted

技术标签:

【中文标题】通过隧道颠覆【英文标题】:Subversion through a tunnel 【发布时间】:2011-08-25 16:39:32 【问题描述】:

为了工作,我在一个封闭的网络中工作。我们设置的一些 IP 地址只能从我们的网络内部访问。不过,有一个盒子,我们可以通过 SSH 进入并通过隧道进入我们各自的开发者盒子。

我知道我可以通过使用 ssh 的 -L 参数从我们的开发人员框中获取流量。我想知道是否有一种方法可以让我通过打开的盒子隧道进入一个封闭的盒子,其中存储了我们的 Subversion (SVN) 存储库?

My computer --> Open box --> Developer boxes/SVN repository

我无法通过 ssh 进入 SVN 盒子,但有没有办法像代理一样使用 ssh 来访问私有 Subversion 盒子?

更新:

1.1.1.1 -> 打开盒子 1.1.1.2 -> SVN盒子

通过打开的盒子后,我可以通过 SSH 连接到 SVN 盒子:

ssh user1@1.1.1.1
ssh user2@1.1.1.2

这将允许我访问 SVN 框。我想,ssh 进入打开的盒子,本地转发 SVN 盒子的 22 端口到我的 22 端口。因此

ssh user1@1.1.1.1 -L 22:1.1.1.2:22

然后在命令行中使用SVN:

svn co svn+ssh://user2@localhost/path

这会返回

svn: 网络连接意外关闭

为什么会这样? svn+ssh 是否使用了我不知道的其他端口?

【问题讨论】:

【参考方案1】:

我们公司也有同样的情况。如果不使用*** 访问“内部”网络,我能想到的唯一选择是在网络上打一个洞以允许访问您的特定盒子。我们通常在 netscalar 中创建一个指向内部框的虚拟 IP 地址,以保护内部框不被“命名”暴露。

我建议与您的网络团队合作创建此设置,或者如果您没有网络团队,请查看路由器设置以创建此连接。

【讨论】:

看,我的工作是大学的技术团队,所以我基本上可以设置我需要的任何东西。一小部分技术人员的好处是,当我们为封闭式工作进行开发时,我们可以随心所欲地设置虚拟机。无需经过多人。我希望尝试让它工作,而不必再弄乱服务器设置。希望我能尽快让它工作。【参考方案2】:

是的,您应该可以使用隧道。我不确定您是否在工作时使用类似 svn co http://..... 或类似 svn checkout svn://...... 的东西连接到 SVN

如果您只使用 svn(不使用 apache),我认为您想通过隧道连接到端口 80(如果使用 http)、端口 443(如果使用 https)和端口 3690。所以你的命令应该是这样的

ssh -f user@publicly.accessible.server.com -L 3690:your.internal.svn.server:3690 -N

然后你应该能够从你的本地主机签出/提交/更新/等,就好像你的本地主机是 svn 服务器一样。

-f 使它进入后台,所以当你想要的只是隧道时,你不会看到终端卡在你的公共服务器 shell 提示符下。 -N 表示不执行远程命令。

【讨论】:

我用svn co svn+ssh://ip/var/svn/project 如果开箱的ip是1.1.1.1,svn服务器是1.1.1.2,我会做ssh -f user @1.1.1.1 -L 3690:1.1.1.2:3690 -N ?当我尝试使用 svn co svn+ssh://localhost/var/svn/project 结帐时,仍然没有返回任何内容 我认为在这种情况下你会想使用没有 ssh 的 svn。原因是您已经通过 ssh 隧道连接到您的公司网络。但是,如果您仍然想要 ssh 部分,我认为您可能需要转发 ssh 而不是 svn 端口。 3690 是 svn 端口。由于您正在通过 ssh(+ssh 部分)执行 svn,因此您需要在您的 svn 服务器上通过隧道连接到 ssh。所以我想你想尝试的是ssh -f user@1.1.1.1 -L 6000:1.1.1.2:22 -N. Then in your svn+ssh command you'll want to do this command svn+ssh://localhost:6000/repository/path/here/` 这在逻辑上是有道理的,但我的服务器似乎没有响应。我会等到星期一上班的时候弄清楚如何安排我的流量。谢谢! 您总是可以尝试在没有 svn 部分的情况下使用 ssh 作为故障排除步骤。这应该更容易测试,因为涉及的部分更少。

以上是关于通过隧道颠覆的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 SSH 隧道克隆 git

通过 SSH 隧道访问端点

通过 JSch 建立 SSH 隧道

scp 通过 ssh 隧道打开

PhpStorm XDebug 通过 ssh 隧道

通过 php 中的 ssh 连接隧道请求