如何在CentOS 8上安装和配置VNC
虚拟网络计算(VNC)是一个图形桌面共享系统,可让我们使用键盘和鼠标来远程控制另一台计算机。
本文介绍了在CentOS 8上安装和配置VNC服务器的步骤。
我们还将向我们展示如何通过SSH隧道安全地连接到VNC服务器。
准备工作
要遵循本教程,我们需要以具有sudo特权的用户身份在远程CentOS计算机上登录。
安装桌面环境
通常,服务器没有安装桌面环境。
如果要连接的计算机没有GUI,则第一步是安装它。
否则,请跳过此步骤。
运行以下命令在远程计算机上安装Gnome(CentOS 8中的默认桌面环境):
sudo dnf groupinstall "Server with GUI"
根据系统,下载和安装Gnome软件包以及相关性可能会花费一些时间。
安装VNC服务器
TigerVNC是积极维护的高性能开源VNC服务器。
在默认的CentOS存储库中可用它来进行安装:
sudo dnf 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)上运行。
如果创建第二个实例,它将在下一个空闲端口上运行,例如:':2',这意味着服务器在端口'5902'(5900 + 2)上运行。
要记住的重要一点是,在使用VNC服务器时,':X'是表示'5900 + X'的显示端口。
在继续下一步之前,首先使用带有'-kill'选项和服务器编号作为参数的'vncserver'命令停止VNC实例。
在我们的例子中,服务器在端口5901(':1')中运行,因此要停止它,请运行:
vncserver -kill :1
Killing Xvnc process ID 19681
配置VNC服务器
现在,在远程CentOS机器上都安装了Gnome和TigerVNC,下一步是将TigerVNC配置为使用Gnome。
创建新桌面时,VNC服务器使用“~/.vnc/xstartup”文件启动应用程序。
打开文件:
vim ~/.vnc/xstartup
并按如下所示进行编辑:
~/.vnc/xstartup
#!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources vncconfig -iconic & dbus-launch --exit-with-session gnome-session &
保存并关闭文件 。
每当我们启动或者重新启动TigerVNC服务器时,以上脚本都会自动执行。
如果要将其他选项传递给VNC服务器,请打开“~/.vnc/config”文件,然后每行添加一个选项。
文件中列出了最常用的选项。
取消注释并根据自己的喜好进行修改。
这是一个例子:
~/.vnc /配置
# securitytypes=vncauth,tlsvnc # desktop=sandbox geometry=1920x1080 # localhost # alwaysshared
创建一个Systemd单位文件
单位文件使我们可以轻松启动,停止和重新启动服务。
通常,存储用户单元文件的最佳位置是'~/.config/systemd/user'。
创建目录:
mkdir -p ~/.config/systemd/user
复制默认的vncserver单元文件:
cp /usr/lib/systemd/user/[email protected] ~/.config/systemd/user/
通知systemd一个新的用户单元文件存在:
systemctl --user daemon-reload
启动VNC服务并在启动时启用它:
systemctl --user enable vncserver@:1.service --now
“ @:”后面的数字“ 1”定义了VNC服务将在其上监听的显示端口。
我们正在使用'1',这意味着VNC服务器将在上一节中讨论的端口'5901'上进行侦听。
启用延迟,以便用户服务在启动时启动,并在用户未登录时保持运行:
loginctl enable-linger
验证服务是否成功启动:
systemctl --user status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/home/theitroad/.config/systemd/user/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-01-30 22:14:08 UTC; 2s ago Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS) Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) CGroup: /user.slice/user-1000.slice/[email protected]/vncserver.slice/vncserver@:1.service ...
连接到VNC服务器
VNC不是加密协议,可能会受到数据包嗅探的影响。
推荐的方法是创建SSH隧道,以安全地将流量从端口“ 5901”上的本地计算机转发到同一端口上的远程服务器。
在Linux和macOS上设置SSH隧道
如果我们在计算机上运行Linux,macOS或者任何其他基于Unix的操作系统,则可以使用以下“ ssh”命令轻松创建隧道:
ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip
系统将提示我们输入用户密码。
不要忘记用用户名和服务器的IP地址替换“用户名”和“ server_ip_address”。
在Windows上设置SSH隧道
Windows用户可以使用PuTTY设置SSH隧道。
打开Putty,然后在“主机名或者IP地址”字段中输入服务器的IP地址。
在“连接”菜单下,展开“ SSH”,然后选择“隧道”。
在“源端口”字段中输入VNC服务器端口(“ 5901”),在“目标”字段中输入“ server_ip_address:5901”,然后单击“添加”按钮,如下图所示:
返回“会话”页面以保存设置,这样我们无需每次都输入它们。
要登录到远程服务器,请选择已保存的会话,然后单击“打开”按钮。
使用Vncviewer连接
要连接到远程服务器,请打开VNC查看器,然后输入'localhost:5901'。
我们可以将任何VNC查看器(例如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre和VNC查看器)用于Google Chrome浏览器。
我们正在使用TigerVNC:
在出现提示时输入密码,我们应该会看到默认的Gnome桌面。
它看起来应该像这样:
现在,我们可以使用键盘和鼠标从本地计算机开始在远程桌面上工作。