如何在CentOS 7上安装和配置VNC
在本教程中,我们将引导我们完成在CentOS 7系统上安装和配置VNC服务器的步骤。
我们还将向我们展示如何通过SSH隧道安全地连接到VNC服务器。
虚拟网络计算(VNC)是一个图形桌面共享系统,可让我们使用键盘和鼠标来远程控制另一台计算机。
准备工作
在继续本教程之前,请确保我们以具有sudo特权的用户身份登录。
我们假设我们以名为'theitroad'的用户身份登录。
安装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/theitroad/.Xauthority does not exist New 'server2.theitroad.com:1 (theitroad)' desktop at :1 on machine server2.theitroad.com Starting applications specified in /etc/X11/Xvnc-session Log file is /home/theitroad/.vnc/server2.theitroad.com:1.log
第一次运行“ vncserver”命令时,它将创建密码文件并将其存储在“~/.vnc”目录中,如果不存在该目录,则会创建该文件。
注意上面输出中主机名后面的“:1”。
这表示正在运行vnc服务器的显示端口号。
在我们的例子中,服务器在TCP端口'5901'(5900 + 1)上运行。
如果我们使用'vncserver'创建第二个实例,它将在下一个空闲端口上运行,例如:':2',这意味着服务器在端口'5902'(5900 + 2)上运行。
要记住的重要一点是,在使用VNC服务器时,':X'是表示'5900 + X'的显示端口。
在继续下一步之前,首先使用带有'-kill'选项和服务器编号作为参数的'vncserver'命令停止VNC实例。
在这种情况下,服务器在端口5901(':1')中运行,因此我们将使用以下命令将其停止:
vncserver -kill :1
Killing Xvnc process ID 2432
配置VNC服务器
现在Xfce和TigerVNC均已安装在服务器上,下一步是将TigerVNC配置为使用Xfce。
为此,请打开以下文件:
nano ~/.vnc/xstartup
并将最后一行从'exec/etc/X11/xinit/xinitrc'更改为'exec 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单位文件
我们将创建一个systemd单位文件,该文件使我们能够根据需要轻松地启动,停止和重新启动VNC服务,就像其他任何systemd服务一样。
使用“ cp”命令复制vncserver单元文件:
sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
使用文本编辑器打开文件,编辑以黄色突出显示的行,然后用实际用户名替换“ theitroad”:
sudo nano /etc/systemd/system/vncserver@\:1.service
/etc/systemd/system/vncserver@:1.service
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking User=theitroad Group=theitroad # 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/theitroad/.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 vncserver@:1.service
“ @”符号后的数字“ 1”定义将在其上运行VNC服务的显示端口。
在此示例中,这是默认的'1',VNC服务器将在端口'5901'上进行侦听,如我们在上一节中所讨论的。
通过执行以下命令来启动VNC服务:
sudo systemctl start vncserver@:1.service
验证服务是否成功启动:
sudo systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2017-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
系统将提示我们输入用户密码。
不要忘记用用户名和服务器的IP地址替换“用户名”和“ server_ip_address”。
在Windows上设置SSH隧道
如果我们运行Windows,则可以使用PuTTY SSH客户端设置SSH隧道。
打开Putty,然后在“主机名或者IP地址”字段中输入服务器的IP地址。
在“连接”菜单下,展开“ SSH”,然后选择“隧道”。
在“源端口”字段中输入VNC服务器端口('5901'),在“目标”字段中输入“ server_ip_address:5901”,然后单击“添加”按钮,如下图所示:
返回“会话”页面以保存设置,这样我们无需每次都输入它们。
要登录到远程服务器,请选择保存的会话,然后单击“打开”按钮
使用Vncviewer连接
现在,我们已经设置了SSH隧道,是时候打开Vncviewer并在'localhost:5901'连接到VNC服务器了。
我们可以将任何VNC查看器(例如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre和VNC查看器)用于Google Chrome浏览器。
在此示例中,我们将使用TigerVNC。
打开VNC查看器,输入“ localhost:5901”,然后单击“连接”按钮。
出现提示时输入密码,我们将看到默认的Xfce桌面。
它看起来应该像这样:
现在,我们可以使用键盘和鼠标从本地计算机开始与远程XFCE桌面进行交互。