RHEL/CentOS 7安装和配置vnc服务器
在本文中,将介绍在RHEL/CentOS 7 Linux中安装和配置vnc服务器的分步指南。
默认情况下,在CentOS 7和RHEL 7中,我们使用TigerVNC(老虎虚拟网络计算)作为VNC服务器。
因此,"我们将使用Tigervnc在RHEL/CentOS 7中安装和配置vnc服务器"
" TigerVNC"是用于图形化桌面共享的系统,它使我们可以远程控制其他计算机,并按照客户端-服务器原理工作。
服务器共享其输出(vncserver
),而客户端(vncviewer
)连接到服务器以查看输出。
什么是vncserver?
vncserver是启动VNC(虚拟网络计算)桌面的实用程序。
它使用适当的选项运行Xvnc,并在VNC桌面上启动窗口管理器。
vncserver允许用户在计算机上并行运行单独的会话,以便任何数量的客户端都可以从任何位置访问该节点。
为了使VNC有用,它还需要与窗口管理器一起安装X Windows系统。
在CentOS 7上安装和配置vnc服务器
我们建议使用" yum"来安装rpm,否则,如果我们没有有效的Internet连接,那么我们始终可以使用CentOS/RHEL DVD来获取软件包并执行安装。
因为对我们来说我们有一个活动的互联网连接,所以我们将使用yum安装rpms在CentOS 7上安装和配置vnc服务器。
# yum -y install tigervnc tigervnc-server
如何配置TigerVNC服务器?
要开始在CentOS 7上安装和配置vnc服务器的步骤,我们需要一个配置文件。
默认情况下,我们将从tigervnc-server
rpm获取一个示例配置文件,如下所示
# rpm -ql tigervnc-server-1.8.0-5.el7.x86_64 /etc/sysconfig/vncservers /usr/bin/vncserver /usr/bin/x0vncserver /usr/lib/systemd/system/[email protected] /usr/lib/systemd/system/xvnc.socket /usr/lib/systemd/system/[email protected] /usr/share/man/man1/vncserver.1.gz /usr/share/man/man1/x0vncserver.1.gz
在本示例中,我们将为root用户和普通用户hynman创建vncservice。
为此,我们将使用两个不同的"显示号"将默认配置文件复制到以下位置。
# cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service # cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:2.service
提示:
更改每个实例的vncserver @:<num> .service
号。
我们应该为每个用户创建一个单位文件
其中vncserver @:1.service
将充当root用户的配置文件,而vncserver @:2.service
将被Deepap用户使用。
重要的提示:
在RHEL 7.8和更高版本中,配置vnc服务器的步骤已更改。
如果我们使用的是CentOS,则次要版本可能会有所不同,因此请通过以下方法查找示例配置文件,然后选择一个与示例配置文件匹配的示例文件。
方法一
我有rpm的tigervnc-server-1.8.0-5.el7.x86_64
版本的服务单元文件。
使用文本编辑器编辑/etc/systemd/system/vncserver @:1.service
文件,并将字符串" USER"替换为适当的vncuser用户名。
在此示例中,用户将是" root"用户
# 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
说明:
如果用户是root,则将PIDFile行中的路径更改为/root/.vnc /%H%i.pid
。
接下来,类似地为普通用户在CentOS 7上安装和配置vnc服务器,我们将为hynman用户修改其他配置文件。
# vim /etc/systemd/system/vncserver@:2.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 hynman -c "/usr/bin/vncserver %i" PIDFile=/home/hynman/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target
重要的提示:
确保使用用户的原始路径(即" /home/hynman/.vnc/%H%i.pid")更改PIDFile的路径,如果用户的原始路径为"/export/home",则该路径应该是/export/home/hynman/.vnc /%H%i.pid
要使更改立即生效,请发出以下命令:
# systemctl daemon-reload
方法2
在这种方法中,对于root用户和普通用户而言,我们没有任何特殊处理即可使用vnc服务器。
我有CentOS 7.7的tigervnc-server-1.8.0-19.el7.x86_64
版本rpm的这个单位文件。
以下是vncserver服务的示例单位文件。
其中将<USER>替换为要为其配置vnc服务器的用户名。
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple # 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_wrapper <USER> %i ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target
在此示例中,我将 <USER>
替换为hynman
。
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple # 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_wrapper hynman %i ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target
其中不需要将" PIDFile"行中的路径更改为" /root/.vnc/%H%i.pid"。
除了替换<USER>外,不要替换其余的单元文本。
接下来,要激活更改,请重新加载systemd守护程序。
# systemctl daemon-reload
为用户分配vnc密码
为配置文件中定义的一个或者多个用户设置密码。
# vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? n
说明:
要将密码分配给普通用户,我们必须首先以" root"用户身份登录,然后切换用户
# su - hynman $vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? n
重要的提示:
存储的密码未加密;有权访问密码文件的任何人都可以找到纯文本密码。
启动vncserver服务
接下来,完成安装和配置vnc服务器的步骤,我们必须启动vnc服务器服务。
要启动或者启用服务,请直接在命令中指定显示编号。
上面配置的文件用作模板,其中"%i"由systemd替换为显示编号。
# systemctl enable vncserver@:1.service Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:1.service to /etc/systemd/system/vncserver@:1.service. # systemctl enable vncserver@:2.service Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:2.service to /etc/systemd/system/vncserver@:2.service.
让我们为用户" root"启动vncservice
# systemctl start vncserver@:1.service # 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 Sat 2016-09-22 23:18:57 IST; 2min 17s ago Process: 10897 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS) Process: 10892 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 10934 (Xvnc) CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 10934 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop openstack.example:1 (root) -fp catalogue:/etc/X11/fontpath.d -g... Sep 22 23:18:54 openstack.example systemd[1]: Starting Remote desktop service (VNC)... Sep 22 23:18:57 openstack.example systemd[1]: Started Remote desktop service (VNC).
同样为用户hynman启动vncservice
# systemctl start vncserver@:2.service # systemctl status vncserver@:2.service ● vncserver@:2.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:2.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2016-09-26 20:01:41 IST; 16min ago Main PID: 27325 (Xvnc) CGroup: /system.slice/system-vncserver.slice/vncserver@:2.service ‣ 27325 /usr/bin/Xvnc :2 -auth /home/hynman/.Xauthority -desktop openstack-test:2 (hynman) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/hynman/.vnc/passwd -... Sep 26 20:01:38 openstack-test systemd[1]: Starting Remote desktop service (VNC)... Sep 26 20:01:41 openstack-test systemd[1]: Started Remote desktop service (VNC).
说明:
由于超出已配置的资源限制,尝试启动服务vncserver服务失败时可能会遇到以下错误
配置防火墙
运行防火墙配置工具并添加TCP端口5950,以允许到系统的传入连接。
# firewall-cmd --permanent --zone=public --add-port=5950/tcp success # firewall-cmd --reload success
配置桌面环境
vnc的用户特定配置文件位于用户主目录中的" .vnc"目录中。
(例如/home/username/.vnc /
)。
在我们喜欢的编辑器中打开.vnc/xstartup
并进行如下编辑。
在配置文件中进行任何更改后,重新启动vnc服务器服务。
对于Gnome," xstartup"文件应如下所示
# cat ~/.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 &
对于KDE," xstartup"文件应如下所示
# cat ~/.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 & startkde &
终止或者停止VNC会话
与启用vncserver服务类似,我们可以在系统启动时禁用该服务的自动启动:
# systemctl disable vncserver@:display_number.service
或者,当系统正在运行时,我们可以通过以超级用户身份发出以下命令来停止服务:
# systemctl stop vncserver@:display_number.service