如何将 VNC 与 SSH 隧道一起使用 - “这是如何保护的”?

信息安全 linux SSH 远程桌面
2021-08-15 10:50:03

PC-A:本地机器,我想从那里查看远程机器 [Fedora]
PC-B:远程机器,vnc 服务器将在其中 [Ubuntu]
安装 vnc 客户端 [从您要连接的地方] PC-A

yum -y install vinagre

ssh 到目标机器 [从 PC-A 到 PC-B],然后:[如果 PC-B 在 NAT 之后,则端口转发 ssh 端口!]
在 PC-B 上使用 root
您将需要“universe”存储库 [ vi /etc/apt/sources.list ]

apt-get update; apt-get -y upgrade; apt-get install -y tightvncserver
exit

普通用户仍在 PC-B 上

tightvncserver give a very-very-very good password!!
echo 'gnome-session &' >> ~/.vnc/xstartup

如果您在 OpenWrt 路由器中需要有关端口转发规则的帮助 [在 10.03 上测试]
添加端口转发规则

iptables -t nat -I prerouting_wan -p tcp --dport 22 -j DNAT --to REMOTE-PC-B-PRIVATE-IPADDRESS:22
iptables -I forwarding_wan -p tcp --dport 22 -d REMOTE-PC-B-PRIVATE-IPADDRESS -j ACCEPT

删除端口转发规则

iptables -t nat -D prerouting_wan -p tcp --dport 22 -j DNAT --to REMOTE-PC-B-PRIVATE-IPADDRESS:22
iptables -D forwarding_wan -p tcp --dport 22 -d REMOTE-PC-B-PRIVATE-IPADDRESS -j ACCEPT

请记住,未加密的 vnc 流量!所以 ssh 隧道到目标机器 [从 PC-A 到 PC-B]

ssh -f -L 5901:localhost:5901 USERNAME@REMOTE-PC-B-PUBLIC-IPADDRESS -N -p 22

然后在 PC-A 上连接 vinagre: "127.0.0.1:5901"

ps:如果你按“d”键,它有“显示桌面”的效果,然后按“ALT+F2”然后输入:“gnome-keybinding-properties”

重要:完成后删除目标端的 vnc!

pkill vnc
apt-get purge -y tightvncserver


问题来了:这是否足够安全?VNC 连接真的只通过 SSH 隧道吗?

3个回答

如果您在 ssh 转发端口(您转发的 5901)上连接到 localhost (127.0.0.1),那么是的,您与远程主机的连接是加密的。

请记住,任何能够连接到 localhost 的本地应用程序都不会阻止攻击正在侦听的 vnc 服务,因此至少仍要确保 vnc auth 保持启用状态。

如果您想 100% 确保它是安全的,请确保远程主机上唯一开放的端口是端口 22,即 SSH 端口。您绝对不想在端口 59xx 上看到任何内容。如果它们是开放的,那么有人可以直接连接到 VNC。当您进行防火墙更改时,请始终使用nmap或其他端口扫描程序来验证您的开放端口:

nmap ip_of_your_remote_host

或者

nmap -PN -p 22,5900-5999 ip_of_your_remote_host