Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器
一些用户租用相对便宜的带有Windows的VPS来运行远程桌面服务。 可以在 Linux 上完成同样的操作,而无需在数据中心托管自己的硬件或租用专用服务器。 有些人需要熟悉的图形环境来进行测试和开发,或者需要具有广泛通道的远程桌面来通过移动设备进行工作。 使用基于远程帧缓冲区 (RFB) 协议的虚拟网络计算 (VNC) 系统有多种选择。 在这篇短文中,我们将告诉您如何在具有任何虚拟机管理程序的虚拟机上配置它。

目录:

选择 VNC 服务器
安装与配置
通过systemd启动服务
桌面连接

选择 VNC 服务器

VNC服务可以内置到虚拟化系统中,Hypervisor将其与模拟设备连接起来,不需要额外的配置。 此选项涉及大量开销,并且并非所有提供程序都支持 - 即使在资源密集度较低的实现中,当不是模拟真实的图形设备,而是将简化的抽象(帧缓冲区)传输到虚拟机时。 有时,VNC 服务器与正在运行的 X 服务器绑定,但这种方法更适合访问物理机,而在虚拟机上,它会产生许多技术困难。 安装 VNC 服务器的最简单方法是使用内置 X 服务器。 它不需要物理设备(视频适配器、键盘和鼠标)或使用虚拟机管理程序进行模拟,因此适用于任何类型的 VPS。

安装与配置

我们需要一台默认配置为 Ubuntu Server 18.04 LTS 的虚拟机。 该发行版的标准存储库中有多个 VNC 服务器: TightVNC的, TigerVNC, x11vnc 和别的。 我们选择了 TigerVNC——TightVNC 的当前分支,但开发者不支持它。 设置其他服务器的方式也类似。 您还需要选择桌面环境:我们认为最佳选择是XFCE,因为对计算资源的要求相对较低。 那些愿意的人可以安装另一个DE或WM:这完全取决于个人喜好,但软件的选择直接影响对RAM和计算核心的需求。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

使用以下命令安装具有所有依赖项的桌面环境:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

接下来需要安装VNC服务器:

sudo apt-get install tigervnc-standalone-server tigervnc-common

以超级用户身份运行它是一个坏主意。 创建用户和组:

sudo adduser vnc

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

让我们将用户添加到 sudo 组,以便他可以执行与管理相关的任务。 如果没有这个需求,可以跳过这一步:

sudo gpasswd -a vnc sudo

下一步是使用 vnc 用户权限运行 VNC 服务器,在 ~/.vnc/ 目录中创建安全密码和配置文件。 密码长度可以是 6 到 8 个字符(多余的字符将被删除)。 如有必要,还可以设置密码仅供查看,即无法使用键盘和鼠标。 以vnc用户执行以下命令:

su - vnc
vncserver -localhost no

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器
默认情况下,RFB 协议使用 TCP 端口范围从 5900 到 5906——这就是所谓的。 显示端口,每个对应一个 X 服务器屏幕。 在本例中,端口与从 :0 到 :6 的屏幕关联。 我们启动的 VNC 服务器实例侦听端口 5901(屏幕:1)。 其他实例可以在屏幕为 :2、:3 等的其他端口上工作。在进一步配置之前,您需要停止服务器:

vncserver -kill :1

该命令应显示如下内容:“Killing Xtigervnc process ID 18105... success!”

TigerVNC 启动时,会运行 ~/.vnc/xstartup 脚本来配置配置设置。 让我们创建自己的脚本,首先保存现有脚本的备份副本(如果存在):

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

XFCE 桌面环境会话由以下 xstartup 脚本启动:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

VNC 需要使用 xrdb 命令来读取主目录中的 .Xresources 文件。 用户可以在那里定义各种图形桌面设置:字体渲染、终端颜色、光标主题等。 该脚本必须可执行:

chmod 755 ~/.vnc/xstartup

这样就完成了 VNC 服务器设置。 如果使用命令 vncserver -localhost no (作为 vnc 用户)运行,则可以使用之前指定的密码进行连接,并看到下图:

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

通过systemd启动服务

手动启动VNC服务器不适合实战使用,因此我们将配置一个系统服务。 这些命令以 root 身份执行(我们使用 sudo)。 首先,让我们为我们的服务器创建一个新的单元文件:

sudo nano /etc/systemd/system/[email protected]

名称中的@符号允许您传递参数来配置服务。 在我们的例子中,它指定了 VNC 显示端口。 单元文件由几个部分组成:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

然后你需要通知 systemd 新文件并激活它:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

名称中的数字 1 指定屏幕编号。

停止 VNC 服务器,将其作为服务启动并检查状态:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

如果服务正在运行,我们应该得到类似这样的信息。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

桌面连接

我们的配置不使用加密,因此网络数据包可能会被攻击者拦截。 另外,在VNC服务器中经常 寻找漏洞,因此您不应打开它们以通过 Internet 进行访问。 为了在本地计算机上安全连接,您需要将流量打包到 SSH 隧道中,然后配置 VNC 客户端。 在 Windows 上,您可以使用图形 SSH 客户端(例如 PuTTY)。 为了安全起见,服务器上的 TigerVNC 只监听本地主机,不能从公共网络直接访问:


sudo netstat -ap |more

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器
在 Linux、FreeBSD、OS X 和其他类 UNIX 操作系统中,使用 ssh 实用程序从客户端计算机建立隧道(sshd 必须在 VNC 服务器上运行):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

-L 选项将远程连接的端口 5901 绑定到本地主机上的端口 5901。 -C 选项启用压缩,-N 选项告诉 ssh 不要执行远程命令。 -l 选项指定远程登录的登录名。

在本地计算机上设置隧道后,您需要启动 VNC 客户端并与主机 127.0.0.1:5901 (localhost:5901) 建立连接,使用之前指定的密码访问 VNC 服务器。 现在,我们可以通过加密隧道与 VPS 上的 XFCE 图形桌面环境进行安全通信。 在屏幕截图中,top 实用程序正在终端模拟器中运行,以显示虚拟机对计算资源的低消耗。 那么一切都取决于用户的应用程序。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器
您可以在几乎任何 VPS 上的 Linux 中安装和配置 VNC 服务器。 这不需要使用视频适配器仿真进行昂贵且资源密集的配置或购买商业软件许可证。 除了我们考虑的系统服务选项之外,还有其他选项:系统启动时以守护进程模式启动(通过 /etc/rc.local)或通过 inetd 按需启动。 后者对于创建多用户配置很有趣。 Internet Superserver 将启动 VNC 服务器并将客户端连接到它,VNC 服务器将创建一个新屏幕并启动会话。 要在其中进行身份验证,您可以使用图形显示管理器(例如, LightDM),断开客户端连接后,会话将关闭,所有与屏幕相关的程序将终止。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 VNC 服务器

来源: habr.com

添加评论