我遇到以下情况:有些主机只能通过 ssh 隧道访问。假设它
我可以建立 SSH 隧道并将连接所需的 443 端口绑定到本地端口:
ssh -L 1443:example.com:443 -L 2443:other.com:443 -A -l username myproxy.com
到目前为止,一切都很好 - 当我拨打电话时https://localhost:1443
,我可以打开 example.com,如果我拨打电话https://localhost:2443
,我可以调用 other.com
问题:有些应用程序没有意识到这一点,仍然尝试通过常规主机名和端口进行连接。
将以下几行添加到我的hosts
文件中,我就可以更接近最终的解决方案:
127.0.0.1 example.com
127.0.0.1 other.com
这样我就可以在浏览器中调用https://example.com:1443
和https://other.com:2443
- 但端口仍然是个问题。我需要将两个域都映射到我的本地端口,443
才能使其适用于其他应用程序。
我想我需要有一个本地代理服务器监听端口443
并根据主机名转发流量到或者1443
但这2443
就是我迷失的地方。
我该怎么做才能让我机器上的所有应用程序仅使用主机名/端口,但让流量通过我的 SSH 隧道?
答案1
使用ssh -D
。这将在指定端口(通常为 1080 或 9050)上创建一个 SOCKS 5 代理服务器,您可以在浏览器中配置并访问一切通过 SSH 隧道。
这与 OpenSSH、PuTTY(plink)、Bitvise Tunnelier 的工作方式相同;并且不依赖于任何操作系统级功能。
例如,在ssh -D 9050
运行时,您可以像这样配置 Firefox:
(Chrome 可能需要命令行选项反而。)