首先, 配置好yum源,查詢vncserver需要安裝什麼包,然後安裝。
[root@localhost ~]# yum provides vncserver Loaded plugins: langpacks, product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. yum | 4.1 kB 00:00:00 (1/2): yum/group_gz | 134 kB 00:00:00 (2/2): yum/primary_db | 3.4 MB 00:00:00 yum/filelists_db | 3.0 MB 00:00:00 tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 : A TigerVNC server Repo : yum Matched from: Filename : /usr/bin/vncserver [root@localhost ~]# yum install tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 -y .... Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7 Complete!
這樣vncserver就安裝好了,通過命令vncserver可以啓動或進行管理,首次啓動vncserver,會提示修改密碼。此密碼爲vnc客戶端連接時使用。
[root@localhost ~]# vncserver New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1 Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/localhost.localdomain:1.log 用vncserver啓動,默認會從最低端口(1)啓動,之後依次遞增,如果想指定vnc端口,可以使用ncserver [:<port_number>] [root@localhost ~]# vncserver :2016 New 'localhost.localdomain:2016 (root)' desktop is localhost.localdomain:2016 Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/localhost.localdomain:2016.log 通過vncserver -list 可以查看當前運行的vnc信息 [root@localhost ~]# vncserver -list TigerVNC server sessions: X DISPLAY # PROCESS ID :1 8167 :2016 8670 通過vncserver -kill :<port_number> 可以關閉vnc端口 [root@localhost ~]# vncserver -kill :1 Killing Xvnc process ID 8167
當然,客戶端要訪問vnc還得經過防火牆的同意,需要在防火牆放行vnc或者直接關閉防火牆。這裏測試了下,在防火牆放行之後,默認通過vncserver啓動的端口訪問,但是通過vncserver :port_number指定端口啓動的還是無法訪問,求解。
防火牆配置放行vncserver [root@localhost ~]# firewall-cmd --permanent --add-service=vnc-server success [root@localhost ~]# firewall-cmd --reload success 或者關閉防火牆,並且禁止防火牆開機自啓。 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service'
以上,vnc的安裝配置就基本完成了。 接下來需要配置vncserver開機啓動了。
使用rpm- qc tigervnc-server查詢vncserver的配置。
得知配置文件被轉移到了/lib/systemd/system/[email protected],文件的頭部有詳細的說明。
[root@localhost ~]# rpm -qc tigervnc-server /etc/sysconfig/vncservers [root@localhost ~]# cat /etc/sysconfig/vncservers # THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/[email protected] [root@localhost ~]# head /lib/systemd/system/[email protected] # The vncserver service unit file # # Quick HowTo: # 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service # 2. Edit <USER> and vncserver parameters appropriately # ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2") # 3. Run `systemctl daemon-reload` # 4. Run `systemctl enable vncserver@:<display>.service` # # DO NOT RUN THIS SERVICE if your local area network is
配置方法:
1.複製當前文件(/lib/systemd/system/[email protected])到/etc/systemd/system/vncserver@:<display>.server 這裏<display>爲啓動的端口
2.編輯複製後的文檔,把兩處<USER>替換成需要啓動的用戶。需要注意的是如果用root啓動,root的家目錄爲/root,而非/home/root
3.運行systemctl daemon-reload 重新加載配置
4.運行systemctl enable vncserver@:<display>.service 配置成開機自啓
[root@localhost ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service [root@localhost ~]# 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=/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@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl start vncserver@:1.service (此處手動啓動) [root@localhost ~]# systemctl status vncserver@:1.service (查看運行情況 爲active) vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled) Active: active (running) since Fri 2016-01-22 17:00:34 CST; 7s ago [root@localhost ~]# vncserver -list TigerVNC server sessions: X DISPLAY # PROCESS ID :1 9959 [root@localhost ~]# systemctl enable vncserver@:1.service 確定手動啓動沒問題後加入自啓) [root@localhost ~]# reboot (重啓測試) Last login: Fri Jan 22 16:30:36 2016 from 192.168.175.1 [root@localhost ~]# vncserver -list (重啓後查看vnc 已經啓動了。) TigerVNC server sessions: X DISPLAY # PROCESS ID :1 1522 [root@localhost ~]# ps -ef |grep vnc root 1522 1 1 17:10 ? 00:00:00 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (root) -auth /root/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn root 1907 1 0 17:10 ? 00:00:00 /usr/bin/vncconfig -iconic root 3167 3120 0 17:11 pts/0 00:00:00 grep --color=auto vnc
至此,vncserver的配置就已經完成了。
過程中,有一次不知道誤操作了什麼,1號端口一直啓動不了。查看不到進程,卻一直提示已經啓動,重啓自啓也失敗。
[root@kvm02 ~]# systemctl status vncserver@\:1.service vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Fri 2016-01-22 21:28:33 CST; 1min 35s ago Process: 1154 ExecStart=/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=2) Process: 1132 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/ SUCCESS) [root@kvm02 .vnc]# vncserver :1 A VNC server is already running as :1 [root@kvm02 .vnc]# ps -ef |grep vnc root 7146 1667 0 22:29 pts/0 00:00:00 grep --color=auto vnc
最後在一次啓動中發現了/tmp/.X11-unix/下有個文件鎖住了。切換到目錄下刪除文件,就可以了。
報錯信息: Warning: kvm02:1 is taken because of /tmp/.X11-unix/X1 Remove this file if there is no X server kvm02:1 解決: [root@kvm02 ~]# cd /tmp/.X11-unix [root@kvm02 .X11-unix]# rm -rf * (刪除了所有文件,此處衝動了,其實只要刪除X1就好了) [root@kvm02 .X11-unix]# vncserver (刪除過後就可以正常啓動了) xauth: (stdin):1: bad display name "kvm02:1" in "add" command New 'kvm02:1 (root)' desktop is kvm02:1 Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/kvm02:1.log