近日服务器新安装CentOS8操作系统,安装有GNOME桌面。工作需要访问远程桌面,因此需要安装tigervnc-server支持。
安装tigervnc-server:
[root@server ~]# yum install tigervnc-server*Last metadata expiration check: 0:00:18 ago on Sun 06 Oct 2019 11:15:13 PM CST.Package tigervnc-server-minimal-1.9.0-9.el8.x86_64 is already installed.Dependencies resolved.=================================================================================================================================================================================================================== Package Arch Version Repository Size===================================================================================================================================================================================================================Installing: tigervnc-server x86_64 1.9.0-9.el8 AppStream 252 k tigervnc-server-applet noarch 1.9.0-9.el8 AppStream 601 k tigervnc-server-module x86_64 1.9.0-9.el8 AppStream 252 kInstalling dependencies: copy-jdk-configs noarch 3.7-1.el8 AppStream 27 k java-1.8.0-openjdk x86_64 1:1.8.0.222.b10-0.el8_0 AppStream 297 k java-1.8.0-openjdk-headless x86_64 1:1.8.0.222.b10-0.el8_0 AppStream 32 M javapackages-filesystem noarch 5.3.0-1.module_el8.0.0+11+5b8c10bd AppStream 30 k javapackages-tools noarch 5.3.0-1.module_el8.0.0+11+5b8c10bd AppStream 44 k ttmkfdir x86_64 3.0.9-54.el8 AppStream 62 k tzdata-java noarch 2019a-1.el8 AppStream 188 k xorg-x11-fonts-Type1 noarch 7.5-19.el8 AppStream 522 k lksctp-tools x86_64 1.0.18-3.el8 BaseOS 100 kEnabling module streams: javapackages-runtime 201801 Transaction Summary===================================================================================================================================================================================================================......Installed: tigervnc-server-1.9.0-9.el8.x86_64 tigervnc-server-applet-1.9.0-9.el8.noarch tigervnc-server-module-1.9.0-9.el8.x86_64 copy-jdk-configs-3.7-1.el8.noarch java-1.8.0-openjdk-1:1.8.0.222.b10-0.el8_0.x86_64 java-1.8.0-openjdk-headless-1:1.8.0.222.b10-0.el8_0.x86_64 javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch javapackages-tools-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch ttmkfdir-3.0.9-54.el8.x86_64 tzdata-java-2019a-1.el8.noarch xorg-x11-fonts-Type1-7.5-19.el8.noarch lksctp-tools-1.0.18-3.el8.x86_64Complete!
执行vncserver,启动VncServer。第一次启动要设置当前用户的密码,输入后,还要确认密码。确认后,会提示是否设置只读密码,这里不设置,避免意外。完整流程如下图所示。按上述流程执行成功后,会在用户的.vnc目录下创建启动脚本、配置、日志等文件。
默认是从1开始,如果要多个运行,则会递增。
[root@server ~]# vncserverYou will require a password to access your desktops.Password:Verify:Would you like to enter a view-only password (y/n)? nA view-only password is not usedxauth: file /root/.Xauthority does not existNew 'server:1 (root)' desktop is server:1Creating default startup script /root/.vnc/xstartupCreating default config /root/.vnc/configStarting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/server:1.log
查看.vnc目录文件:
[root@server ~]# ls -al /root/.vnc/total 24drwxr-xr-x. 2 root root 90 Oct 6 23:18 .dr-xr-x---. 17 root root 4096 Oct 6 23:18 ..-rw-r--r--. 1 root root 332 Oct 6 23:18 config-rw-------. 1 root root 8 Oct 6 23:18 passwd-rw-r--r--. 1 root root 616 Oct 6 23:18 server:1.log-rw-r--r--. 1 root root 6 Oct 6 23:18 server:1.pid-rwxr-xr-x. 1 root root 509 Oct 6 23:18 xstartup
查看开启了几个vncserver:
[root@server ~]# vncserver --listWARNING: The first attempt to start Xvnc failed, possibly because the fontcatalog is not properly configured. Attempting to determine an appropriatefont path for this system and restart Xvnc using that font path ...Could not start Xvnc.......
如出现此信息,则需要安装字体:
[root@server ~]# yum install pixman pixman-devel libXfont2 Last metadata expiration check: 0:26:58 ago on Sun 06 Oct 2019 11:15:13 PM CST.Package pixman-0.36.0-1.el8.x86_64 is already installed.Package pixman-devel-0.36.0-1.el8.x86_64 is already installed.Package libXfont2-2.0.3-2.el8.x86_64 is already installed.Dependencies resolved.Nothing to do.Complete!
查看vnc进程(可以看到当前用户已经启用了vncserver,默认连接端口为5901。如要多个启用,端口也会递增。,需要注意。):
[root@server ~]# ps -ef | grep vncroot 8540 1 0 23:28 pts/0 00:00:02 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop server:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -httpd /usr/share/vnc/classes -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000root 8559 1 0 23:29 pts/0 00:00:00 /bin/sh /root/.vnc/xstartuproot 18193 8206 0 23:39 pts/0 00:00:00 grep --color=auto vnc
注意:记得要开放5901端口,以便远程能够访问。
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=5901/tcpsuccess[root@server ~]# firewall-cmd --reloadsuccess
服务器安装好之后。可把vncserver做成系统服务。
root@server ~]# touch /etc/systemd/system/vncserver@\:1.service
VIM编辑添加如下内容,并保存:
# The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@.service# 2. Replace with the actual user name and edit vncserver# parameters appropriately# (ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"# PIDFile=/home//.vnc/%H%i.pid)# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:.service`## DO NOT RUN THIS SERVICE if your local area network is# untrusted! For a secure way of using VNC, you should# limit connections to the local host and then tunnel from# the machine you want to view VNC on (host A) to the machine# whose VNC output you want to view (host B)## [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB## this will open a connection on port 590N of your hostA to hostB's port 590M# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).# See the ssh man page for details on port forwarding)## You can then point a VNC client on hostA at vncdisplay N of localhost and with# the help of ssh, you end up seeing what hostB makes available on port 590M## Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.## Use "-localhost" to prevent remote VNC clients connecting except when# doing so through a secure tunnel. See the "-via" option in the# `man vncviewer' manual page.[Unit]Description=Remote desktop service (VNC)After=syslog.target network.target[Service]Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/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.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]WantedBy=multi-user.target
开机自动启动服务:
[root@server ~]# systemctl enable vncserver@\:1.service Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /etc/systemd/system/vncserver@:1.service.
启动服务:
[root@server ~]# systemctl start vncserver@\:1.service
查看状态:
[root@server ~]# 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 Sun 2019-10-06 23:56:23 CST; 1min 23s ago Main PID: 8292 (Xvnc) Tasks: 0 (limit: 26213) Memory: 2.6M CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 8292 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop server:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -httpd /usr/share/vnc/classes -pn -rfbauth /root/.vnc/passwd -rfbport 590>Oct 06 23:56:20 server systemd[1]: Starting Remote desktop service (VNC)...Oct 06 23:56:23 server systemd[1]: Started Remote desktop service (VNC).
如查看状态出现此错误,与SeLinux有关,可配置或关闭SeLinux解决:
[root@server ~]# systemctl status vncserver@:1.service● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled) Active: failed (Result: protocol) since Sun 2019-10-06 23:53:04 CST; 17s ago Process: 8378 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver :1 (code=exited, status=0/SUCCESS) Process: 8375 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)Oct 06 23:53:01 server systemd[1]: Starting Remote desktop service (VNC)...Oct 06 23:53:04 server systemd[1]: vncserver@:1.service: Can't convert PID files /root/.vnc/server:1.pid O_PATH file descriptor to proper file descriptor: Permission deniedOct 06 23:53:04 server systemd[1]: vncserver@:1.service: Can't convert PID files /root/.vnc/server:1.pid O_PATH file descriptor to proper file descriptor: Permission deniedOct 06 23:53:04 server systemd[1]: vncserver@:1.service: Failed with result 'protocol'.Oct 06 23:53:04 server systemd[1]: Failed to start Remote desktop service (VNC).
服务端到此配置完成。
在CentOS 客户端执行vncviewer,启动VNC客户端。(如有其他系统,也可以使用其他系统的VNC客户端)
接着会弹出个界面,输入服务端地址、端口。点击connect即可连接。
如地址和端口正确,会弹出输入密码的界面。输入服务器端密码,点击OK即可成功登录。
如密码正确,将可看到远程服务端界面。接下来可进行服务器端的操作了。
本文只是描述在CentOS8.0系统的vnc服务端的安装和配置过程。此流程应当是兼容Redhat及其衍生的linux发行版的。此过程没有考虑一些异常安装情况和处理方法,后续整理后再描述。
注:本文为Toyo Lau原创,未经许可不得在任何平台转载,侵权必究。如需转载,可关注微信公众号:技术训练营,在后台留言,与作者联系,取得许可才能转载~
微信扫一扫,发现更精彩。