文章

在CentOS 7上安装和配置VNC

在CentOS 7上安装和配置VNC

安装Xfce桌面环境

CentOS服务器安装通常没有安装桌面环境,因此我们将从安装轻量级桌面环境开始。

在本指南中,我们将安装 Xfce 。它快速,稳定且系统资源少,非常适合在远程服务器上使用。

Xfce软件包可在EPEL存储库中获得。如果您未在服务器上启用 EPEL信息库,则可以输入以下内容来实现:

yum install epel-release

添加存储库后,请使用以下方法在CentOS上安装Xfce:

yum groupinstall xfce

根据您的系统,下载和安装Xfce软件包以及相关性可能会花费一些时间

安装VNC服务器

我们将使用TigerVNC作为我们的VNC服务器。 TigerVNC 是积极维护的高性能开源VNC服务器。

键入以下命令以在您的CentOS服务器上安装TigerVNC

yum install tigervnc-server

现在已安装VNC服务器,下一步是运行vncserver命令,该命令将创建初始配置并设置密码。运行以下命令时请勿使用sudo:

vncserver

系统将提示您输入并确认密码,以及是否将其设置为仅供查看的密码。如果您选择设置仅查看密码,则用户将无法使用鼠标和键盘与VNC实例进行交互

You will require a password to access your desktops. Password: YOUR_PASSWORD Would you like to enter a view-only password (y/n)? n /usr/bin/xauth: file /home/myfreax/.Xauthority does not exist New 'server2.myfreax.com:1 (myfreax)' desktop at :1 on machine server2.myfreax.com Starting applications specified in /etc/X11/Xvnc-session Log file is /home/myfreax/.vnc/server2.myfreax.com:1.log

第一次运行vncserver命令时,它将创建密码文件并将其存储在~/.vnc目录中;如果不存在,则会创建该文件。

请注意上面输出中主机名后的:1。这表示正在运行vnc服务器的显示端口号。在我们的例子中,服务器在TCP端口5901(5900 + 1)上运行。如果使用vncserver创建第二个实例,它将在下一个可用端口上运行,即:2,这意味着服务器在端口5902(5900 + 2)上运行。

要记住的重要一点是,在使用VNC服务器时,:X是表示5900+X的显示端口。

在继续下一步之前,请先使用vncserver命令(带-kill选项)和服务器编号作为参数来停止VNC实例。在我们的例子中,服务器在端口5901(:1)上运行,因此我们将使用以下命令将其停止:

vncserver -kill :1 Killing Xvnc process ID 2432

配置VNC服务器

现在Xfce和TigerVNC都安装在我们的CentOS服务器上,下一步是将TigerVNC配置为使用Xfce。为此,请打开以下文件

vim ~/.vnc/xstartup

并将最后一行从exec /etc/X11/xinit/xinitrc更改为exec startxfce4

vim 〜/.vnc/xstartup # !/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4

保存并关闭文件。每当您启动或重新启动TigerVNC服务器时,以上脚本都会自动执行。

如果您需要将附加选项传递给VNC服务器,则可以打开~/.vnc/config文件并在每行添加一个选项。文件中列出了最常用的选项。取消评论并根据自己的喜好进行修改。 以下是示例:

vim 〜/.vnc/config # securitytypes=vncauth,tlsvnc # desktop=sandbox # geometry=1920x1080 geometry=1440x900 # localhost # alwaysshared dpi=96

创建一个Systemd服务文件

我们将创建一个systemd单位文件,使我们能够根据需要轻松地启动,停止和重新启动VNC服务,就像其他任何systemd服务一样 使用 cp 命令复制vncserver单元文件

cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

使用文本编辑器打开文件,然后将<USER>替换为您的实际用户名

vim /etc/systemd/system/vncserver@\:1.service [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i" PIDFile=/root/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target

保存并关闭文件。通知systemd我们用以下方法创建了一个新的单位文件

systemctl daemon-reload

下一步是使用以下命令启用单位文件

systemctl enable vncserver@:1.service

符号@后的数字1定义了VNC服务将在其上运行的显示端口,在我们的示例中,这是默认端口1,VNC服务器将监听端口5901,如我们在上一节。

通过执行以下操作来启动VNC服务

systemctl start vncserver@:1.service

验证服务是否成功启动

systemctl status vncserver@:1.service

VNC不是加密协议,可能会受到数据包嗅探。推荐的方法是创建 SSH隧道,该隧道将安全地将流量从端口5901上的本地计算机转发到同一端口上的服务器。

本文由作者按照 CC BY 4.0 进行授权