我试图通过使用 HTTPS 上的 SSH 隧道绕过学校的代理服务器,因为它有不必要的限制。我成功地使用了免费 SSH 隧道服务, 和代理隧道,它据称可以通过代理创建到远程服务器的通用 HTTP(S) 隧道。
问题是我使用的隧道服务不是很可靠。9/10 次我尝试使用收到的 命令创建隧道,因此我认为服务器只是超载了。ssh [email protected] -p 443 -ND 1080 -o"ProxyCommand /usr/local/bin/proxytunnel -p proxy.ip.address:port —v -d %h:%p"
ssh_exchange_identification: connection closed by remote host
这个服务器的速度也相当慢,这在免费服务中是可以预料到的。这个方法确实有效,只是不是我想要的。
因此,我家里有一台额外的计算机sshd
在监听 443 端口,并且我在路由器上对 443 端口进行了端口转发。我已从不在代理后面的远程网络连接到家庭服务器,因此我知道可以从外部访问它。
现在,当我从受限网络运行时,会发生一些有趣的事情:。每次我尝试从受限网络连接时,无论如何,都会出现这种情况。ssh [email protected] -p 443 -o"ProxyCommand /usr/local/bin/proxytunnel -p proxy.ip.address:port -v -d %h:%p"
ssh_exchange_identification: connection closed by remote host
那么为什么我可以连接到免费服务器,但它不允许我使用我的家庭服务器?添加-vvv
(对于ssh
命令的命令部分,不是proxytunnel
)不会产生任何有用的信息,除了无法连接到家庭服务器。如果它有帮助,我认为proxytunnel
不是罪魁祸首,因为它打印出Via proxy.ip.address:port -> home.server.ip:port
,这意味着它已连接到代理。proxy.ip.address
是我试图绕过的限制性代理,只是为了澄清一下。
答案1
我发现了问题:
我学校的代理服务器阻止了原始 IP 地址(即123.45.79.911
:),因此我设置了一个 DNS 服务器来将连接重定向hostname.net
到我的家庭 IP 地址。
答案2
我刚刚放了整套代理指令,它们是:
RequestReadTimeout header=0,MinRate=500 body=0,MinRate=500
ProxyRequests on
AllowCONNECT 22
<Proxy localhost>
Order allow,deny
Allow from all
</Proxy>
在 httpd.conf 中的第一个<VirtualHost>
块内,它就成功了 - “405 方法不允许”永远消失了。