如何使用 ssh 隧道为 subversion 设置代理?

24 ssh proxy svn

我想通过代理检出/更新代码,因为我的本地连接很慢。我设置了 ssh 隧道:ssh -D 8090 user@ssh.proxy.net 将所有数据包转发到我的 localhost:8090。

如何设置 subversion 来使用它?

Jea*_*ier 21

您正在使用 SSH 设置一个本地 SOCKS 服务器,该服务器通过隧道连接到您的 SSH 服务器。您提到您这样做的原因是“本地连接速度很慢”,但我看不出通过隧道连接到 SSH 服务器将如何使其更快。

无论如何,您的问题是 Subversion 可以通过 HTTP 代理或 SSH 隧道连接,但它不知道 SOCKS。因此,您需要通过捕获其所有 TCP 连接并将它们重定向到 SOCKS 代理来 SOCKSify Subversion。

我不会转述以前做过的人,而是向您指出他们的详细解释:

或者简而言之,大部分是从奥利弗的页面上剪切的:

Debian 包含两个可以在 sourceforge 上使用的sockifiers。最近更新的是 ProxyChains,它的配置非常简单。大多数sockifiers以类似的方式工作,因此这些说明应该是合理的一般情况。要配置 ProxyChains,您只需要编辑 $(HOME)/.proxychains/proxychains.conf 以仅包含以下几行:

DynamicChain
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 8090
# NB: for some reason 'localhost' doesn't work in the above line
Run Code Online (Sandbox Code Playgroud)

然后你需要做的就是在 ProxyChains 中“包装”svn。

proxychains svn commit
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,svn 应用程序并不明智,它的 TCP 连接到 Subversion 服务器被重定向到你的 SOCKS 代理。”


小智 1

我不知道如何进行隧道挖掘ssh -D,但使用类似的东西

ssh -L8090:svn.server.com:22 user@other.server.com
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过将新协议添加到具有隧道所在特定端口的 subversion 来建立隧道。因此,在 ~/.subversion/config 中添加一行,例如

pssh = ssh -p8090
Run Code Online (Sandbox Code Playgroud)

[tunnels]部分,然后使用 svn+pssh://user@localhost 代替 svn+ssh://user@original.com

如果您有现有的工作副本,则可以使用

svn switch --relocate svn+ssh://user@original.com svn+pssh://user@localhost
Run Code Online (Sandbox Code Playgroud)

切换工作副本链接的地址,而无需进行新的结帐。