注意:这不是,重复不是关于通过其他方式(例如 SSH)建立 VNC 隧道的问题。一个 完全 不同的 事物。
设置
我在某个网段上有一台机器 M1,可以通过 VNC 从网段外的机器 M2 访问,但(为了讨论方便)任何其他协议都无法访问。该网段上的其他机器都无法从网段外访问。此外,M1 和其本地网段上的其他机器的传出连接有限;具体来说,M1 无法通过 SSH 连接到其本地网段之外的任何机器(甚至可能都无法连接到该本地网段)。
现在,如果我在 M2 上运行 VNC 客户端,将其指向 M2,登录并启动 shell,我基本上可以运行任何我想要的东西并访问 M1 本地段上的机器。但是,我受到 VNC 客户端图形交互的限制。
目标
我希望能够以某种方式将连接从我的机器 M2 隧道传输到 M1 本地网段上的任何机器,以及我能够从 M1 连接的任何地方。
问题
我该怎么做?或者说,是否已经开发出所需的工具,并且可以免费使用?
想法
VNC 是基于像素。我不熟悉该协议,但假设没有有趣的“侧信道”数据,似乎我们需要的是一个 M 上的二进制文件或脚本,它将在 VNC“显示器”上打开一个窗口或任何矩形,使用矩形作为输出,并将该窗口获得的键盘/鼠标移动作为输入。这两个管道可用于与 shell 会话(或nc
您喜欢的会话)进行通信。按键成为输入流(可能将我们自己限制为 base64),像素对应于输出流(我们将有一个非常小的窗口,该窗口变化非常快,或者,嗯,一个更大的窗口,它也必须变化得相当快。
另一方面,VNC“客户端”不能在屏幕上显示任何垃圾信息,也不能接受键盘或鼠标输入,而只能使用端口来输入和输出这些数据。
你怎么认为?
[ 该机器有一个 SSH 服务器,但它只支持本地主机连接