我所在的网络只有一个 http 服务器可以访问互联网。我想通过 ssh 连接到我的服务器。
如果我尝试建立 ssh 连接:
ssh myserver -p 1234
我得到了一个闪烁的光标。我的服务器上的日志没有显示连接尝试。
所以我的第一个想法是使用 corkscrew 通过 http 隧道传输 ssh 流量。但如果我将 corkscrew 设置为我的 ProxyCommand 并尝试连接,它也会失败:
ssh myserver -p 1234
Proxy could not open connnection to myserver: Tunnel or SSL Forbidden
ssh_exchange_identification: Connection closed by remote host
服务器日志也没有显示任何连接尝试。所以我想也许代理阻止了所有不通过端口 80 或 443 的流量。我将服务器的 ssh 端口更改为 443。我仍然无法连接,但其中一条错误消息消失了:
ssh myserver -p 443
ssh_exchange_identification: Connection closed by remote host
服务器日志再次没有显示连接尝试。我最后尝试的是手动使用 corkscrew:
corkscrew myproxy 8080 myserver 443
SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3
这为我提供了 ssh 服务器版本字符串。但之后没有其他任何事情发生。ssh 客户端似乎挂起了。同时,服务器日志显示以下消息:
Did not receive identification string from 1.2.3.4
因此它似乎能够建立连接。我怀疑客户端最初能够连接到服务器,并且服务器会用其版本字符串进行回复。但是当客户端尝试回答时,它会被代理拦截。
但目前我还不知道还能尝试什么。