是否可以在我的 Web 服务器上托管 Transmission 或 uTorrent Web 界面?它们有一个本地网络 Web 界面,而我不想进行端口转发...我能否以某种方式对其进行配置,以便登录到我的服务器并在那里托管界面?
答案1
好的,既然大家都要求一个解决方案,那就在这里。
您可以进行设置,以便可以访问 Web 界面通过您的网络托管帐户,具有以下限制:
- 实际界面仍将由您的 torrent 客户端托管,但您将能够通过您的网站访问它。
- 您的主机必须允许远程端口转发 (
ssh -R
)。大多数 VPS 主机都允许此功能;共享主机可能不允许。 - 您的主机必须允许您使用指令配置 Apache
ProxyPass
,这意味着您必须对 Apache 配置的某些部分(不是.htaccess
文件)具有写权限,并且您的主机必须加载(或允许您加载)mod_proxy
到 Apache 中。 - 您的主人应该允许安装 SSH 公钥,这样您就可以在 ssh 断开连接后无需输入密码重新连接。
这是基本思路。我们将本地提供 Web 界面的端口称为 L 端口。在 49152-65535 范围内随机选择某个端口并将其称为 S;这是服务器将要监听的端口。
为该设置创建一个 SSH 密钥,并且不要使用密码加密私钥(出现提示时按 Enter)。ssh-keygen
为此使用。(ssh-keygen -f $KEY_OUTPUT_PATH
-- 选择一些文件$HOME/torrentproxy.key
作为输出路径。)然后在服务器上安装公钥:ssh-copy-id -i $KEY_OUTPUT_PATH.pub user@yourwebhost
。
torrent-ssh-proxy.sh
创建一个包含以下内容的shell 脚本:
#!/bin/sh
while true; do
# Replace S and L with the ports chosen above.
# Replace $KEY_OUTPUT_PATH with the path to your SSH private key.
ssh -i $KEY_OUTPUT_PATH -R S:localhost:L user@yourwebhost
echo 'Disconnected from server.'
sleep 5
done
运行此脚本时,您应该会收到来自服务器的 shell 提示,无需输入密码;这很好。让此脚本继续运行。
(此时,您可以通过netstat -tnlp | grep :S
在服务器 shell 中运行来验证远程主机是否确实在监听端口 S。)
现在我们需要配置 Apache。你只需要将其添加到你的 Apache 配置中(它不能从.htaccess
文件中运行):
ProxyPass /torrentweb http://localhost:S/
再次,用所选的监听端口替换 S。重新启动 Apache。
如果这一切都成功了,当您去的时候http://yourwebsite.example.com/torrentweb
您应该会看到您的 torrent 客户端的 Web 界面。
请注意,您可以在与 Web 主机不同的机器上运行 ssh 客户端;只需调整脚本中的“localhost”行ssh
以匹配运行 torrent Web 界面的机器的 IP 地址或主机名。
关于加载mod_proxy
,这是在 Debian 上模块的加载方式:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
mod_proxy.so
根据发行版在文件系统中排列包内容的方式,路径可能会有所不同。
答案2
端口转发本来是一个合适的答案...它运行完美。