从 LAN 外部通过 VNC 控制树莓派:没有端口转发如何实现?

从 LAN 外部通过 VNC 控制树莓派:没有端口转发如何实现?

因此,如果我想远程访问我的(Raspberry Pi)桌面,但从我的 LAN 内,通过 VNC(VNC 服务器集成到 Raspberry OS 中,VNC Viewer 安装在控制设备上)就可以了。如何从第二台 PC(LAN 外)向我的 Raspberry VNC 服务器发送指令(他们称之为建立云连接),而无需使 VNC 服务器可从互联网访问?它可以工作,但如果没有转发,它还能工作吗?

是的,建立连接时需要在树莓派上进行身份验证,但如果没有转发端口,这又该如何工作呢?

答案1

使用 ZeroTier。它可以在任何网络(包括 Internet)上创建虚拟 LAN。

您必须在所有设备上安装客户端并将它们连接到同一个虚拟网络。就是这样 - ZeroTier 将负责建立连接。

它使用“打洞”技术来打开端口,而无需永久转发。第三方服务器用于在防火墙和 NAT 上打洞。所有后续通信都是 DirectX。

免费计划应该足以满足您的需求。

答案2

例如,技术人员家庭成员可以使用一种简单的方法来远程修复某人的计算机,这种方法称为 teamviewer。路由器上无需端口转发。

可能有很多简单的方法。

另一种方法是 SSH。您可以通过它来使用 VNC。不过您必须对 SSH 有所了解。

您的路由器上不需要端口转发。

您可以使用中间计算机。

假设你有两台电脑

A 和 B 想要互相连接,现在添加第三台计算机 X 作为中介。

X 可以是 VPS。由 digitalocean 等公司托管的虚拟机。只需单击几下即可设置。它上面有一个开放端口,即端口 22,运行 SSH。

现在,您将 A 连接到 X,将 B 连接到 X。X 在端口 22 上运行 SSH。因此,A 和 B 使用 SSH 客户端软件连接到 X。ssh 客户端软件通常是命令 ssh。

B 应该连接到 X,使用 SSH 选项,即在 X 上打开一个端口,并且在该端口上接收的任何内容都应转发到 B。这可以通过 SSH -R 来完成。

A 应该使用 SSH 选项进行连接,即 A 应打开一个端口,并且该端口上接收的任何内容都将被转发到 B 在 X 上打开的该端口。

然后 A 将 VNC 查看器连接到 A,然后连接到 X,然后连接到 B。

这是 SSH 的相当高级的用法。而且 SSH 是一个相当复杂的工具。

我建议的一些先决知识是正常使用 SSH,我的意思是没有 -L 或 -R。了解无密码登录/ ssh 密钥也是很好的。了解一些 SFTP 知识也很好,只需将文件从一个系统传输到另一个系统即可。之后,只需在两台计算机上使用 ssh -L ,然后使用 ssh -R ,无需中介。

ssh -L 和 ssh -R 用于隧道。将一个协议封装在另一个协议中,封装协议被加密或加密。封装协议由封装协议加密。

从技术上讲,一个人可以设置看起来像 HTTPS 服务器的东西,因为它在端口 443 上运行 TLS 协议,但实际上可能是在 TLS 中加密的 VNC 服务器。因此,如果他们所在的大学封锁了很多,那么大学可能会允许端口 443 上的流量供人们浏览网页。有程序 stunnel 和 corkscrew 可以帮助解决这个问题。

为了学习 SSH 并使用 -L 和 -R,作为先决条件知识。我在这里的部分回答提到了这些。通俗来讲 SSH 隧道

现在回到如何对 SSH 进行操作。

A.. 运行 VNC 查看器/客户端。

B.. 运行 VNC 服务器(被查看)。

X 例如是 VPS。

B$ ssh -R 40500:127.0.0.1:5901 user@hostX

(上面那行将 B 连接到 X,并在 X 上打开了端口 40500,并且在那里接收到的任何内容都将被转发到 B 的 VNC 服务器)。

澳元ssh -L 1234:127.0.0.1:40500 user@hostX

(上面这一行将 A 连接到 X。并且它在 X 上打开了端口 1234,从那里接收到的任何数据都会发往 X,然后转发到 127.0.0.1:40500)

然后从 A,将 VNC Viewer 连接到端口 1234

我最近才做过这件事……我的 VNC 服务器所在的计算机位于没有 ISP 电缆或电话线的地方。所以我有一个带 SIM 卡的路由器。(我想现在不仅电话是计算机,而且电话提供商也是 ISP!)。所以这个路由器里有一张 SIM 卡。但连接经常会断掉。所以我有一个围绕 SSH 命令的 bash while 循环单行代码。

B$ while true; do ssh -R ... user@host; done

相关内容