我有一台运行 Linux 的远程机器,我通过 SSH 进入并用于开发目的(编译、语言服务器、运行等)。
我的本地计算机本质上是一个瘦客户端。我使用远程开发工具来混合环境,并使用 -L 手动转发所需的端口。
某些服务需要活动的 VPN 连接才能访问,但我尚未在遥控器上配置 VPN 连接。
有没有办法让我的远程机器通过本地机器的网络解析网络请求 - 从而当我通过 SSH 连接时与它共享 VPN?
答案1
一般来说,不是。
-R
您可以使用(的反面)转发单个服务-L
,以便远程工具连接到例如“localhost:12345”并通过本地客户端转发。
OpenSSH 有一个“IP 隧道”扩展,-w
可以在任一方向使用,例如,您通过服务器上的 tun0 配置默认路由,以便所有数据包都通过客户端 - 但这需要两端都有 OpenSSH(没有 PuTTY 或其他客户端);它或多或少需要两端都有 root 访问权限(用于 tun 配置);它需要两端都有“tun”支持(这排除了 Windows 上的 ssh.exe);并且路由配置是全局的(适用于远程运行的所有内容 - 而不仅仅是那一个会话),因此您必须非常小心地路由数据包,以免导致隧道尝试无限地自行通过(并使服务器无法访问)。所以我真的不推荐这种方法。
答案2
您可以使用反向转发 TCP 端口-R
(与之前的操作相同-L
,但方向相反)。这样,远程连接到本地主机(或者参数中使用的任何地址-R
,如果在 SSH 服务器中启用了设置监听地址)将通过隧道访问某些定义的资源,并且在访问的资源上将显示为来自本地。
您还可以使用 通过 SSH 隧道设置真正的 VPN -w
。这需要能够tun
本地和远程配置接口,添加地址和可能的路由。