我的家庭办公室有一个运行 Ubuntu 20.04(即远程)的工作站,它通过以太网电缆连接到互联网。旅行时,我通常会随身携带一个轻便的设备,一台运行 Ubuntu 20.04(即客户端)的笔记本电脑。
我的目标是通过互联网从我的笔记本电脑远程桌面访问我的工作站(即访问文件、终端等)。
我的第一次尝试是使用 Remmina 设置 VNC,如此处所述。这很有效,当两个设备都连接到同一个网络时,我现在可以从我的笔记本电脑访问我的工作站。我搜索了当设备未连接到同一网络时如何使用 VNC,并发现我可以通过“使用远程 Ubuntu 系统在网络上设置虚拟专用网络 (VPN) 服务器”来做到这一点。
因此,我从VyprVPN购买了具有 30 天退款保证的 VPN 服务。我在远程和客户端上都配置了 VPN 连接,如此处所述。两台设备现在都可以毫无问题地连接到 VPN 和上网,但我不能再使用 VNC。
当被要求向 VPN 提供商澄清时,客户服务(机器人)告诉我“VyprVPN 目前不支持远程访问”,并建议在我的路由器上安装他们的应用程序。据我所知,我的家用路由器不符合 VPN 提供商的要求。购买新路由器来满足 VyprVPN 的要求对我来说是可以的,但我不确定这会解决我的问题,也不确定它是否最适合我的情况。考虑到我的目标只是建立从另一台设备对一台设备的远程桌面访问,这似乎有点矫枉过正。
对于通过 Internet 从一台笔记本电脑 (Ubuntu 20.04) 远程桌面访问一台工作站 (Ubuntu 20.04),您会推荐什么解决方案?开源解决方案是首选。
预先感谢您的支持!
VPN的两种用途
1.企业VPN
企业(公司)使用VPN来允许远程用户访问办公网络和计算机资源。例如,公司的远程员工可以使用 VPN 访问办公室的内部网络驱动器。在这种情况下,当远程用户登录到公司 VPN 服务器时,他们的远程计算机将成为办公室本地网络的一部分。然后,远程员工可以使用 VNC 访问办公室台式计算机。
我认为这是您设想的那种 VPN 用途。但是,当您旅行时,您的远程计算机在家,并且您没有 IT 部门来为您设置个人 VPN 服务器。你可以自己设置,但我认为在家庭网络环境中安全地连接一台远程计算机太麻烦了。
2.消费者VPN
VyperVPN 等消费者 VPN 服务提供商使用相同的技术为家庭用户提供略有不同的服务。这些服务提供商在不同的位置和国家设置 VPN 服务器,并允许家庭用户登录这些服务器。
这允许家庭用户向他们自己的互联网服务提供商、政府等隐藏他们的互联网活动。这也允许家庭用户“假装”在另一个国家和“愚弄”视频流服务。
消费级 VPN 服务提供商不会在您的家庭网络中设置 VPN 服务器。事实上,如果您使用 VPN 客户端,例如在您的家庭桌面上使用 VyperVPN,那么您可能无法在旅行时远程连接到该桌面。这是因为 VPN 服务让您的桌面“假装”在其他地方!因此,您必须在旅行时在家中关闭桌面上的 VPN 服务,然后才能使用 VNC 进行远程连接。
为什么不直接使用 VNC?
这是不安全的。VNC 是相当古老的协议,其安全性不符合现代标准。可以在您的家庭桌面中设置 VNC 服务器以接受来自您自己家庭网络外部的连接。但是,不建议这样做,因为互联网上的任何人都可以轻松闯入您的家庭桌面。
SSH 上的 VNC
您需要先
ssh
在家用台式计算机中设置服务器。有关如何执行此操作,请参阅在家庭 LAN 中使用 SSH 连接两台计算机。一旦你
ssh
在你的家庭网络中工作并且你可以ssh
从你的笔记本电脑到家庭桌面,而两者都连接到家庭网络,你将需要设置 Remmina 以通过 SSH 使用 VNC。打开您已经在笔记本电脑中创建的 Remmina 桌面首选项窗口,以便从家庭网络中将 VNC 导入桌面:
注意,Server 字段用上面的 LAN IP 地址填充。你的会有所不同。转到SSH 隧道选项卡:
选中上图中的所有框。端口 22 是
ssh
. 为简单起见,我们将使用此端口。您可以阅读有关如何将默认值更改为其他端口并稍后进行不同设置的信息。请注意,我在设置过程中设置了公钥
ssh
。如果您已这样做,请选择公钥作为身份验证方法。否则选择密码。
尝试一下,确保当两台计算机都连接到家庭网络时,您可以使用 SSH 隧道从笔记本电脑到桌面进行 VNC。
旅行时
如果您想在外出时通过 SSH 进行 VNC,您需要弄清楚两件事。
1.端口转发
这是您的路由器设置的一部分。当请求来自端口 22 时,您需要告诉路由器远程连接请求应该发送到哪个设备。
在上图中,我家桌面的 IP 地址为 192.168.0.101。这是我的家庭网络中的本地 IP 地址。它在我的家庭网络之外没有任何意义。路由器将此 IP 地址分配给我的家庭桌面。
您应该将路由器设置为将通过端口 22 发送的所有包转发到您家庭桌面本地 IP 地址的端口 22。
确切的过程因路由器而异,如何做到这一点超出了本网站的范围,因为它与 Ubuntu 无关。
2.动态域名系统(DDNS)
大多数家庭 Internet 服务不会从其 Internet 服务提供商 (ISP) 获得静态 IP 地址。如果您的 ISP 分配了静态 IP 地址,请忽略此部分。
您可以将 Remmina 中的远程桌面首选项复制到一个新的,并将服务器 IP 地址更改为您的 ISP 提供的静态 IP 地址。
如果您的 ISP 为您的家庭动态分配 IP 地址,那么您的家庭(外部)IP 地址可能会不时更改。当您连接到家庭网络时,您可以通过谷歌搜索我的 IP 地址来找到您的外部 IP 地址。
问题是当您旅行时,您的 ISP 更改了您的外部 IP 地址,您无法知道它是什么。因此,您将无法连接到您的家庭桌面。
您需要使用 DDNS 服务提供商。有一些免费的,例如duckdns.org 您需要在其中一个中创建一个帐户。拥有帐户后,您需要设置您的家庭桌面,以定期与您选择的 DDNS 服务提供商通信,并更新对您的家庭 IP 地址的任何更改。DDNS 服务提供商将为您的家庭创建一个 Internet 地址,例如 ivapshome.duckdns.org,
ivanpshome
您将在哪里选择。在您的家庭桌面上设置 DDNS 客户端的确切方法取决于 DDNS 服务提供商。如果您在设置 DDNS 时遇到问题,请搜索此站点并提出其他问题(如果需要)。
注意:某些路由器可以更新某些特定的 DDNS 服务。您必须检查您的路由器和您使用的特定 DDNS 服务。确切的方法各不相同,超出了本网站的范围。
在 Remmina 中,在 Server 字段下,输入 DDNS 提供的 Internet 地址,例如
ivapshome.duckdns.org
.现在,您应该能够在旅行时从笔记本电脑连接到家用台式计算机。
希望这可以帮助
您不需要使用任何 VPN 从一个网络中的设备远程连接到另一个网络中的设备。您需要做的是在目标机器所在的路由器上设置端口转发(具体如何设置取决于路由器,您应该查看路由器的手册)。
如果您在目标机器的端口 5900 上有工作的 VNC 服务器,只需设置从该机器内部 IP 地址上的端口 5900 到路由器外部接口上的端口 5900(或任何其他端口)的端口转发。
然后,从另一个系统,用 Remmina 连接到目标路由器的公共 IP 地址,端口 5900(或您设置的另一个端口号)。
这应该可以工作,假设您的 ISP 不对他们的传入连接进行防火墙保护。
关于下面关于 VNC 协议不安全的评论:是的,它不是。我在这里只描述了最简单的解决方案。
正如有人已经提到的,您可以通过 ssh 隧道传输 VNC 流量。也就是说,在您的目标机器上安装一个 ssh 服务器,并且转发的不是端口 5900,而是端口 22(ssh 端口)。
在另一台机器上,只需通过 ssh 连接到您的公共 IP 地址和转发端口,然后告诉 ssh 将目标机器上的 5900 端口隧道连接到本地机器上的端口 5901(您要连接的机器)。您可以使用以下命令执行此操作:
ssh -L 5901:localhost:5900 -l <username> <ip_address>
目标机器上的用户名在哪里
<username>
(如果与本地机器上的用户名相同,则可以跳过该-l <username>
部分),并且<ip_address>
是目标路由器的公共IP地址。(如果您已将目标机器的 22 端口转发到路由器上的 22 以外的其他端口,则需要
-p <port>
在上述命令中另外包含该部分)。建立 ssh 会话后,使用 Remmina 连接到本地计算机上的端口 5901。本地机器上的 5901 端口将通过 ssh 安全地连接到目标机器上的 5900 端口。
Remmina 可以选择在内部使用 ssh 隧道,而无需先手动建立 ssh 会话,但对我来说,明确地进行隧道总是比尝试破译特定应用程序的配置方式和参数更容易,正如我在这里展示的那样我需要输入:)