![在 Windows 10 中通过 SSH 隧道将网络呼叫重新路由到多个域](https://linux22.com/image/1576318/%E5%9C%A8%20Windows%2010%20%E4%B8%AD%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E5%B0%86%E7%BD%91%E7%BB%9C%E5%91%BC%E5%8F%AB%E9%87%8D%E6%96%B0%E8%B7%AF%E7%94%B1%E5%88%B0%E5%A4%9A%E4%B8%AA%E5%9F%9F.png)
我遇到以下情况:有些主机只能通过 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 可能需要命令行选项反而。)