ssh 隧道与 apache 正向代理设置之间的连接被拒绝

ssh 隧道与 apache 正向代理设置之间的连接被拒绝

我正在尝试在小型服务器中设置私有转发代理。我打算在会议期间使用它通过 ssh 隧道将我的互联网访问隧道传输到代理服务器。

因此,我在 apache-2.2 中创建了一个虚拟主机,运行代理、proxy_http 和 proxy_connect 模块。我使用以下配置:

<VirtualHost localhost:8080>
        ServerAdmin xxxxxxxxxxxxxxxxxxxx
        ServerName yyyyyyyyyyyyyyyyyyyy

        ErrorLog /var/log/apache2/proxy-error_log
        CustomLog /var/log/apache2/proxy-access_log combined

        <IfModule mod_proxy.c>
                ProxyRequests On
                <Proxy *>
                        # deny access to all IP addresses except localhost
                        Order deny,allow
                        Deny from all
                        Allow from 127.0.0.1
                </Proxy>
                 # The following is my preference. Your mileage may vary.
                 ProxyVia Block
                ## allow SSL proxy
                AllowCONNECT 443
        </IfModule>
</VirtualHost>

重新启动 apache 后,我创建了从客户端到服务器的隧道:

#> ssh -L8080:localhost:8080 <server address>

并尝试通过该隧道访问互联网:

#> links -http-proxy localhost:8080 http://www.linux.org

我期望看到所请求的页面。但却收到“连接被拒绝”错误。在保持 ssh 隧道打开的 shell 中,我收到以下信息:

通道 3:打开失败:连接失败:连接被拒绝

有人知道为什么这个连接被拒绝吗?

答案1

我同意 CanOfSpam3 的观点,即使用 -D8080 是比使用 Apache 设置代理更好的选择。但是,要回答您的问题,我猜您错过了ListenApache 中除了常用端口之外还监听端口 8080 的那行。<VirtualHost>单独使用 并不能让 Apache 监听提到的 IP:Port,您还需要使用 让 Apache 监听该端口Listen以下是 Apache 的参考

答案2

Raymonds 的回答很可能是(没有看到其余配置)您在 apache 部分遇到的问题。

您是否考虑过使用 SSH Socks 隧道?您可以使用 -D8080 而不是 -L8080:localhost:8080,这样使用 socks 可以让您隧道传输任何符合 socks 规范的内容。因此,对于您的示例,您应该能够使用ssh -D8080 <server address>then links -socks-proxy localhost:8080 http://www.linux.org,这样就可以将 apache 服务器从混乱中解救出来,并且仍然可以让您退出<server address>

相关内容