我怎样才能设置代理与SSH隧道颠覆?

我想通过代理签出/更新代码,因为我的本地连接速度很慢。 我设置了ssh隧道: ssh -D 8090 [email protected]把所有数据包转发到我的localhost:8090。

我如何设置颠覆来使用这个?

您正在使用SSH来设置本地SOCKS服务器,该服务器通过SSH连接到您的SSH服务器。 你提到你这样做的原因是“本地连接速度慢”,但是我没有看到如何通过隧道传送到SSH服务器使其更快。

无论如何,你的问题是,Subversion可以通过HTTP代理或SSH隧道连接,但它不知道关于SOCKS。 所以你需要通过捕获所有的TCP连接并将它们redirect到SOCKS代理来进行SOCKSify Subversion。

而不是解释之前做过的那些人,我会告诉你他们详细的解释:

或者简单地说,大部分都是从奥利弗的页面上切下来的:

Debian包含两个在sourceforge上也可用的socksifier。 最近更新的是ProxyChains,configuration起来非常简单。 大多数袜子以类似的方式工作,所以这些说明应该是一个合理的一般情况。 要configurationProxyChains,您只需编辑$(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 

所有你需要做的是'包装'svn在ProxyChains。

 proxychains svn commit 

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

在这里发帖,因为我发现了一个更less的kludge-y的方式来做到这一点。 您可以使用Polipo通过HTTP代理使用SSH SOCKS隧道,方法是在其configuration中添加以下行:

 socksParentProxy = "localhost:8090" socksProxyType = socks5 

polipo默认侦听端口8123 。 然后在$HOME/.subversion/servers创build一个你想查看的Subversion主机的组,例如,如果你的Subversion版本库主机被命名为proj1.svn.domain.tldproj2.svn.domain.tld ,等等,然后将以下内容添加到[groups]部分:

 [groups] domain = *.svn.domain.tld 

最后,通过为该组添加一个块,为刚添加的主机组指定一个代理configuration:

 [domain] http-proxy-host=localhost http-proxy-port=8123 

在此之后,您应该能够正常操作存储库,就像以前在没有SSH隧道的情况下工作一样。

HTH

我不知道使用ssh -D隧道,但使用类似的东西

 ssh -L8090:svn.server.com:22 [email protected] 

然后你可以通过添加一个新的协议来颠覆隧道所在的特定端口。 所以,在〜/ .subversion / config中添加一行就好

 pssh = ssh -p8090 

[tunnels]部分,然后而不是svn + ssh://[email protected]使用svn + pssh:// user @ localhost

如果你有一个现有的工作副本,你可以使用

 svn switch --relocate svn+ssh://[email protected] svn+pssh://user@localhost 

切换与工作副本链接的地址而不必进行新的结账。

查看〜/ .subversion /的默认configuration文件注释了很多有用的例子。 代理将在〜/ .subversion / servers中设置

Windows PC上有需要通过socks代理服务器获得svn + ssh连接到SVN仓库的场合。 这个问题可以通过提供SSHfunction的Putty解决,并且可以使用不同的代理types。 build议的解决scheme不需要本地端口转发。

  1. 启动putty并创build一个会话(例如socks_proxy)
  2. configuration会话的唯一代理(连接 – >代理),它需要提交代理主机名端口 。 Putty可以select不同的代理types,包括SOCKS4和SOCKS5。 您可以select提供代理访问的用户名密码
  3. 保存会话。 请记住,会话将没有configuration主机名连接。
  4. 打开SVNconfiguration文件Application Data \ Subversion \ config ,find[tunnels]
  5. 把下面的部分标题添加SVN协议说明: ssh = PATH_TO_PLINK / PLINK.EXE -load socks_proxy 。 其实协议名是你的select,所以你可以select任何名称,如果ssh已经使用(例如使用pssh =而不是ssh = )。
  6. configuration用于SSH访问目标服务器的密钥,SSH将用于运行svnserve 。 build议使用pageant来维护密钥。
  7. 使用svn进行svn + ssh访问。 用户名应该在URL中传递 – svn ls svn + protocol_name :// username @ server / repository其中协议名称应该用SVNconfiguration[tunnels]部分使用的实名replace。

这是什么 – SVN将使用协议名称来检测应该使用plink.exe进行连接,并且plink将使用会话名称socks_proxy来标识该代理存在。 请记住,应该使用斜杠inputPATH_TO_PLINK ,而不是反斜杠。 当plink.exe位于文件夹C:\ Program Files \ Putty中时的示例: ssh = C:/ Program Files / Putty / PLINK.EXE -load socks_proxy

你可以试试tsocks 。 用tsocks,你configuration它使用SOCKS代理SSH设置然后像这样运行svn:

 tsocks svn co {etc...}