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