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

ash*_*osh 9 mac rsync macports

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

Jam*_*ley 9

man rsync 是你的朋友。

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

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


Orw*_*ile 6

如果您使用squid作为您的 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
Run Code Online (Sandbox Code Playgroud)

然后,从 shell(如果可行,您可以查看永久设置它),键入:

export RSYNC_PROXY=proxyhost:proxyport
Run Code Online (Sandbox Code Playgroud)

如果您的代理需要密码:

export RSYNC_PROXY=username:password@proxyhost:proxyport
Run Code Online (Sandbox Code Playgroud)

如果上面的设置对你来说是不可能的,你也可以试试这个。它要求您可以通过ssh访问可以充当代理的服务器。

export RSYNC_CONNECT_PROG='ssh tunnelhost nc %H 873'
Run Code Online (Sandbox Code Playgroud)

ssh 服务器必须安装“netcat”,几乎所有人都这样做。如果没有,它可以使用类似的东西安装:

Debian/Ubuntu:

apt-get install netcat
Run Code Online (Sandbox Code Playgroud)

centos/红帽

yum install nc
Run Code Online (Sandbox Code Playgroud)