我想通过代理签出/更新代码,因为我的本地连接速度很慢。我设置了ssh tunnel:ssh -D 8090 user@ssh.proxy.net
将所有数据包转发到我的localhost:8090。
如何设置Subversion以使用此功能?
我想通过代理签出/更新代码,因为我的本地连接速度很慢。我设置了ssh tunnel:ssh -D 8090 user@ssh.proxy.net
将所有数据包转发到我的localhost:8090。
如何设置Subversion以使用此功能?
Answers:
您正在使用SSH设置通过隧道连接到SSH服务器的本地SOCKS服务器。您提到这样做的原因是“本地连接速度很慢”,但我看不到隧道传输到SSH服务器的速度如何。
无论如何,您的问题是Subversion可以通过HTTP代理或SSH隧道进行连接,但是对SOCKS一无所知。因此,您需要通过捕获其所有TCP连接并将它们重定向到SOCKS代理来进行SOCKSify Subversion。
我将向您指出他们的详细解释,而不是对以前做过的那些人进行表述:
或简而言之,主要是从Oliver的页面上剪切下来的:
Debian包含两个socksifier,也可以在sourceforge上使用。最近更新的是ProxyChains,它的配置非常简单。大多数吸湿器的工作方式相似,因此这些说明应是合理的一般情况。要配置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
然后,您要做的就是在ProxyChains中“包装” svn。
proxychains svn commit
在上面的示例中,svn应用程序并不明智,因为它的TCP连接到Subversion服务器的连接已重定向到您的SOCKS代理。
在这里发帖,因为我发现这样做不太费劲。您可以使用Polipo通过在HTTP代理的配置中添加以下几行来通过HTTP代理使用SSH SOCKS隧道:
socksParentProxy = "localhost:8090"
socksProxyType = socks5
polipo
默认监听端口8123
。然后$HOME/.subversion/servers
创建一个组颠覆主机要从,例如,如果你的Subversion版本库的主机(S)被命名为检查proj1.svn.domain.tld
,proj2.svn.domain.tld
等等,然后添加下列[groups]
部分:
[groups]
domain = *.svn.domain.tld
最后,通过为该组主机添加一个块,为刚添加的主机组指定代理配置:
[domain]
http-proxy-host=localhost
http-proxy-port=8123
在这之后,您应该能够正常地在存储库上进行操作,因为您以前无需使用SSH隧道即可工作。
高温超导
我不知道与隧道,ssh -D
但使用类似
ssh -L8090:svn.server.com:22 user@other.server.com
然后,您可以通过使用隧道所在的特定端口向颠覆添加新协议来进行隧道传输。因此,在〜/ .subversion / config中添加一行
pssh = ssh -p8090
在该[tunnels]
部分中,然后使用svn + pssh:// user @ localhost代替svn + ssh://user@original.com
如果您已有工作副本,则可以使用
svn switch --relocate svn+ssh://user@original.com svn+pssh://user@localhost
切换工作副本所链接的地址,而无需进行新的签出。
svn co svn+ssh://code.somewhere.com/prj prj
,则进入prj/
并运行svn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/
将更新wc,使其看起来像是通过svn co svn+pssh://localhost/prj prj
有时在Windows PC 上需要通过socks代理服务器将svn + ssh连接到SVN存储库。可以使用提供SSH功能并且可以与不同代理类型一起使用的Putty解决此问题。建议的解决方案不需要本地端口转发。
这是什么-SVN将使用协议名称来检测应使用plink.exe进行连接,而plink将使用会话名称socks_proxy来标识存在的代理。请记住,PATH_TO_PLINK应该以斜杠而不是反斜杠输入。plink.exe位于文件夹C:\ Program Files \ Putty中的情况的示例:ssh = C:/ Program Files / Putty / PLINK.EXE -load socks_proxy。