开源方案的思路:
Windows: FRP + SSH + RDP
Linux: FRP + SSH + VNC
1. FRP 暴露内网 SSH 到公网服务器上.
2. 公网服务器用安全组保护内网 SSH 的端口.
3. 本地用 SSH 的 ProxyJump 功能做公网服务器上的流量转发, 实现公网服务器上在不暴露内网 SSH 的端口的情况下, 实现安全的远程内网 SSH 登陆(安全性由公网服务器的公钥 /私钥验证来保证).
网络拓扑:
本地 <—-公钥 /私钥验证 —-> 服务器 SSH 服务 <—- 转发流量 —-> 转发流量到服务器上的内网 SSH 端口
4. 实现远程 SSH 登陆后, 利用内网 SSH 服务将同在内网的其他主机的 RDP/VNC 端口转发到本地.
网络拓扑:
本地 <—- 私钥验证 —-> 内网的 SSH 服务(这里省略公网流量拓扑) <—- 转发流量 —-> 内网的设备
5. 阅读 OpenSSH 的 ssh_config 相关的 manual. 写一份 SSH alias 配置, SSH 读取本地的 `$HOME/.ssh/config` 中的 alias 配置, 调起本地的远程桌面管理程序. 发起对转发回来的 RDP/VNC 端口的访问. 完成.
最终效果:
在命令行执行一行命令 `ssh alias` 既可.
成本:
1. 内网 SSH 服务运行环境. 比如: 树莓派一台.
2. 一台公网可达的服务器. 构建 FRP 服务. 完善安全组.
3. 阅读 OpenSSH 的 ssh_config 相关的 manual. 授权 /转发 /本地打开远程管理程序并建立连接的所有操作都是通过 SSH 的 alias 配置来实现. 你需要看 SSH 的 LocalCommand / LocalForward 等功能的用法. 编写本地的 `$HOME/.ssh/config`, 提供对应的 alias 配置. 即可实现最终的效果.