如何强制 rsync 使用我的代理设置?

如何强制 rsync 使用我的代理设置?

我正在 Mac OS X 上安装 macports,并使用 rsync 协议从存储库中获取二进制文件。不幸的是,似乎无法通过我的机器直接连接访问存储库。因此,我运行了一个本地代理程序(支持 http、https、ftp 和 socks),现在试图找出如何通过我的代理重定向 rsync 连接。有谁知道这个吗?谢谢,

答案1

man rsync是你的朋友。

您可以通过将环境变量 RSYNC_PROXY 设置为指向您的 Web 代理的主机名:端口对来通过 Web 代理建立连接。请注意,您的 Web 代理的配置必须支持与端口 873 的代理连接。

因此假设您的代理在端口 3128 上,RSYNC_PROXY=localhost:3128应该可以执行您需要的操作。

答案2

如果你使用乌贼对于您的 Web 代理,请将两个中心行添加到 squid.conf(大多数 Unix 系统上为 /etc/squid/squid.conf,或 MacPorts 中的 /opt/local/etc/squid/squid.conf):

acl SSL_ports port 443

acl SSL_ports port 873     # ADD THIS FOR RSYNC ACCESS
acl Safe_ports port 873    # ADD THIS FOR RSYNC ACCESS

acl CONNECT method CONNECT

然后,从 shell(如果此方法有效,您可以考虑永久设置它)输入:

export RSYNC_PROXY=proxyhost:proxyport

如果您的代理需要密码:

export RSYNC_PROXY=username:password@proxyhost:proxyport

如果上述方法无法设置,您也可以尝试此方法。它要求您通过以下方式访问远程控制到可以充当代理的服务器。

export RSYNC_CONNECT_PROG='ssh tunnelhost nc %H 873'

ssh 服务器必须安装“netcat”,几乎所有服务器都安装有。如果没有,可以使用类似下面的命令进行安装:

Debian / Ubuntu:

apt-get install netcat

centos/红帽

yum install nc

相关内容