我正在尝试通过 HTTP 建立 ssh 隧道。我的 apache 虚拟主机配置如下:
<VirtualHost *:443>
ServerName proxy.example.org
ProxyRequests On
AllowCONNECT 22
<Proxy *>
Require all denied
</Proxy>
<Proxy ssh-container>
Require all granted
</Proxy>
</VirtualHost>
Proxytunnel 输出以下内容:
proxytunnel -E -p proxy.example.org:443 -d ssh-container:22
->
Via proxy.example.org:443 -> ssh-container:22
HTTP return code: 404 Not Found
ssh-container
是与 apache httpd 容器位于同一网络的 docker 容器。ssh ssh-container
从 apache 容器内部成功。
如果我现在更改ssh-container
为从通过 proxy.example.org 请求隧道到 sshd 的客户端(例如 ssh.example.org:22)可访问的内容(例如 ssh.example.org:22),它就可以工作。
那么这是为什么呢?我假设如果我通过 HTTP CONNECT 建立隧道,则只有代理才能到达目标。我怀疑有一些 DNS 问题(例如客户端必须解析 DNS),但即使通过代理与容器 IP 作为目标连接也不起作用。