此链接提供有关通过 SSH 保护 VNC 的信息。显然,VNC 的服务器调用没有改变。不安全与安全之间的区别在于使用这些参数调用 SSH,然后使用与不安全场景中不同的参数调用查看器。
ssh user@server -L 5901/127.0.0.1/5901
vncviewer 127.0.0.1:5901
阅读 SSH 手册页对该-L
选项的描述一目了然。当然 127.0.0.1 是本地地址,但除此之外,请解释每个参数指示相应程序执行的操作,以及为什么在已知 5900 是 VNC 端口的情况下使用 5901。作者(粗心大意?)是否假设我在服务器端使用了 :1 参数?为什么我们要回送来实现这一点?
答案1
阅读 SSH 手册页对 -L 选项的描述一目了然。当然 127.0.0.1 是本地地址,但除此之外,请解释每个参数指示相应程序执行的操作
该选项-L 5901/127.0.0.1/5901
(通常写为5901:127.0.0.1:5901
)指示 SSH 客户端设置 TCP“隧道”,监听5901
客户端计算机上的端口,并将所有连接转发127.0.0.1:5901
到服务器机器。之后,vncviewer 127.0.0.1:5901
用于连接隧道的客户端。远程控制接受连接,并指示 SSH 服务器(sshd
)在服务器端打开相同的连接。
在客户端:虚拟专用网络查看器⇆ 127.0.0.1:5901 (远程控制)
在服务器上:sshd⇆ 127.0.0.1:5901 (虚拟网络服务器)
如您所见,使用环回是因为虚拟专用网络查看器仅连接到远程控制,在同一台计算机上运行。同样,两者sshd和虚拟网络服务器在同一台服务器上运行。
隧道连接到第三台主机可能会有一个更清晰的例子:
ssh 网关主机-L 1357:安全主机:5901 vncviewer 127.0.0.1:1357
在客户端:虚拟专用网络查看器⇆ 127.0.0.1:1357 (远程控制)
在服务器上:sshd⇆ 安全主机:5901 (虚拟网络服务器)
为什么明明知道 5900 是 VNC 端口,却使用 5901。作者(粗心大意?)是否认为我在服务器端使用了 :1 参数?
是的,通过提供-L <any>/127.0.0.1/5901
作者假设 VNC 服务器正在监听端口 5901(VNC 显示:1
)。