我有两台机器,分别叫做 A 和 B。机器 A 是公共网关。机器 B 在我的网络中并在端口 6000 上运行 VNC 服务器。我希望人们通过 VNC 端口 5900(不安全)连接到机器 A。此后,机器 A 应该从自身的 5900 端口到机器 B(安全)上的端口 6000 设置一条隧道。并且人们无需连接到实际主机就可以看到 vnc 输出。
如何做到这一点?有什么办法吗?如果我哪里错了,请告诉我。谢谢
答案1
您应该查看-via
的选项vncviewer
。如果您设置了 SSH 访问host-a
,则可以按如下方式打开访问您的 VNC 服务器:
vncviewer -via host-a host-b:6000
这将打开一个 SSH 会话host-a
,转发host-b:6000
到您的本地计算机,并将 VNC 查看器指向该转发端口,只需一个命令即可完成。从您的主机到 的流量将被加密,而从到 的host-a
流量将不加密。host-a
host-b
编辑:重读你的问题后,我意识到这并不是你真正想问的。我认为你应该能够使用简单的 TCP 代理来实现你想要的,例如简单代理或者rinetd安装在主机 A 上。配置该代理将流量从端口 5900 转发到主机 B。示例rinetd.conf
:
# bindadress bindport connectaddress connectport
0.0.0.0 5900 <ip-of-host-b> 6000
然而,从安全角度来看,涉及 SSH 的解决方案会更可取……
答案2
它不会像那样自动工作。另外,在公共网关上使用不安全的 VNC 也不是一个明智的选择。
您确实应该尝试使用 VPN,您可以在 A 上拥有一个 OpenVPN 甚至 PPTP 服务器,然后客户端可以轻松连接到 VPN,然后连接到 B 上的 VNC 服务器。
另一个选择是 SSH 转发,您可以在 B(或 A,但 B 更容易)上设置 SSH 服务器,将 SSH 端口转发到 B,然后通过 putty 或任何支持转发的 SSH 客户端进行连接。
从 cygwin 上的 linux 或 SSH 客户端:
ssh [hostname] -l username -L 6000:localhost:6000
腻子使用说明:http://oldsite.precedence.co.uk/nc/putty.html
之后,您可以使用 localhost:6000 连接任何 VNC 客户端(例如:vncviewer localhost:6000)