如何在CentOS 7上安装和配置VNC

在本教程中,我们将引导您完成在CentOS 7系统上安装和配置VNC服务器的步骤。 我们还将向您展示如何通过SSH隧道安全地连接到VNC服务器。

虚拟网络计算(VNC)是一个图形桌面共享系统,可让您使用键盘和鼠标远程控制另一台计算机。

先决条件

在继续本教程之前,请确保您以具有sudo特权的用户身份登录。 我们假设您以名为的用户身份登录 linuxize

安装Xfce桌面环境#

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

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

Xfce软件包可在EPEL存储库中找到。 如果未在服务器上启用存储库,则可以通过键入以下内容来启用它:

sudo yum install epel-release

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

sudo yum groupinstall xfce

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

安装VNC服务器

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

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

sudo yum install tigervnc-server

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

vncserver

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

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/linuxize/.Xauthority does not exist

New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log

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

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

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

在继续下一步之前,请先使用来停止VNC实例。 vncserver 用一个命令 -kill 选项和服务器号作为参数。 在这种情况下,服务器正在端口5901中运行(:1),因此我们将通过以下方式停止它:

vncserver -kill :1
Killing Xvnc process ID 2432

配置VNC服务器

现在,服务器上同时安装了Xfce和TigerVNC,下一步是将TigerVNC配置为使用Xfce。 为此,请打开以下文件:

nano ~/.vnc/xstartup

并从更改最后一行 exec /etc/X11/xinit/xinitrcexec startxfce4

〜/ .vnc / xstartup

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

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

如果您需要将其他选项传递给VNC服务器,请打开 ~/.vnc/config 文件并在每行添加一个选项。 文件中列出了最常用的选项。 取消注释并根据自己的喜好进行修改。

这是一个例子:

〜/ .vnc /配置

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
dpi=96

创建系统单元文件

我们将创建一个systemd单位文件,该文件使我们能够根据需要轻松地启动,停止和重新启动VNC服务,与其他任何systemd服务一样。

使用以下命令复制vncserver单元文件: cp 命令:

sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:1.service

使用文本编辑器打开文件,编辑以黄色突出显示的行,并将“ linuxize”替换为您的实际用户名:

sudo nano /etc/systemd/system/[email protected]:1.service

/etc/systemd/system/[email protected]:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=linuxize
Group=linuxize

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %I
PIDFile=/home/linuxize/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

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

sudo systemctl daemon-reload

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

sudo systemctl enable [email protected]:1.service

号码 1 之后 @ 符号定义将在其上运行VNC服务的显示端口。 在此示例中,这是默认设置 1,并且VNC服务器将监听端口 5901,就像我们在上一节中讨论的那样。

通过执行以下命令来启动VNC服务:

sudo systemctl start [email protected]:1.service

验证服务是否成功启动:

sudo systemctl status [email protected]:1.service
[email protected]:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/[email protected]:1.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
  Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
  Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 923 (Xvnc)
 ...

连接到VNC服务器

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

在Linux和macOS上设置SSH隧道#

如果您在计算机上运行Linux,macOS或任何其他基于Unix的操作系统,则可以使用以下命令轻松创建隧道 ssh 命令:

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

系统将提示您输入用户密码。

别忘了更换 usernameserver_ip_address 以及您的用户名和服务器的IP地址。

在Windows上设置SSH隧道#

如果您运行Windows,则可以使用PuTTY SSH客户端设置SSH隧道。

打开Putty,然后在 Host name or IP address 领域。

在下面 Connection 菜单,展开 SSH 然后选择 Tunnels。 输入VNC服务器端口(5901) 在里面 Source Port 字段并输入 server_ip_address:5901 在里面 Destination 字段,然后单击 Add 按钮,如下图所示:

VNC SSH隧道腻子

回到 Session 页面以保存设置,因此您无需每次都输入它们。

要登录到远程服务器,请选择保存的会话,然后单击 Open 纽扣

使用Vncviewer连接

现在,您已经设置了SSH隧道,现在该打开Vncviewer并在以下位置连接到VNC服务器了: localhost:5901

您可以将任何VNC查看器(例如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre和VNC查看器)用于Google Chrome浏览器。

在此示例中,我们将使用TigerVNC。 打开您的VNC查看器,输入 localhost:5901,然后点击 Connect 按钮。

VNC查看器

出现提示时输入密码,您将看到默认的Xfce桌面。 它看起来应该像这样:

VNC SSH XFCE桌面

现在,您可以使用键盘和鼠标从本地计算机开始与远程XFCE桌面进行交互。

结论#

现在,您应该已经启动并运行了VNC服务器,并且可以使用图形界面轻松管理CentOS 7服务器。

要将VNC服务器配置为为多个用户启动显示,请创建初始配置并使用以下命令设置密码: vncserver 命令并使用其他端口创建新的服务文件。

如有任何疑问,请随时发表评论。

centos vnc

Sidebar