CentOS 7部署vncserver,通過vncviewer遠程查看圖形界面


一、簡介

VNC (Virtual Network Console)是虛擬網絡控制台的縮寫。它 是一款優秀的遠程控制工具軟件,由著名的 AT&T 的歐洲研究實驗室開發的。VNC 是在基於 UNIX 和 Linux 操作系統的免費的開源軟件,遠程控制能力強大,高效實用,其性能可以和 Windows 和 MAC 中的任何遠程控制軟件媲美。 在 Linux 中,VNC 包括以下四個命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多數情況下用戶只需要其中的兩個命令:vncserver 和 vncviewer。

二、前期准備

系統環境:CentOS 7、Windows(用於測試遠程連接,版本不做要求)
軟件環境:VNC Viewer(Windows版),VNC Server(用yum安裝即可)

三、Linux 安裝部署VNC Server

1、安裝圖形化界面插件

[root@micle ~]:yum groupinstall "GNOME Desktop" "Graphical Administration Tools" //過程有點慢,耐心等待
...
//此處省略好多行代碼...
...
Dependency Updated:
  NetworkManager.x86_64 1:1.18.0-5.el7_7.2            NetworkManager-libnm.x86_64 1:1.18.0-5.el7_7.2              NetworkManager-team.x86_64 1:1.18.0-5.el7_7.2   NetworkManager-tui.x86_64 1:1.18.0-5.el7_7.2 
  NetworkManager-wifi.x86_64 1:1.18.0-5.el7_7.2       alsa-lib.x86_64 0:1.1.8-1.el7                               audit.x86_64 0:2.8.5-4.el7                      audit-libs.x86_64 0:2.8.5-4.el7
  bind-libs-lite.x86_64 32:9.11.4-9.P2.el7            bind-license.noarch 32:9.11.4-9.P2.el7                      cryptsetup-libs.x86_64 0:2.0.3-5.el7            cups-client.x86_64 1:1.6.3-40.el7
  cups-libs.x86_64 1:1.6.3-40.el7                     device-mapper.x86_64 7:1.02.158-2.el7_7.2                   device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2  dhclient.x86_64 12:4.2.5-77.el7.centos
  dhcp-common.x86_64 12:4.2.5-77.el7.centos           dhcp-libs.x86_64 12:4.2.5-77.el7.centos                     elfutils-libelf.x86_64 0:0.176-2.el7            elfutils-libs.x86_64 0:0.176-2.el7
  firewalld.noarch 0:0.6.3-2.el7_7.3                  firewalld-filesystem.noarch 0:0.6.3-2.el7_7.3               kpartx.x86_64 0:0.4.9-127.el7                   krb5-libs.x86_64 0:1.15.1-37.el7_7.2
  linux-firmware.noarch 0:20190429-72.gitddde598.el7  nspr.x86_64 0:4.21.0-1.el7                                  nss.x86_64 0:3.44.0-7.el7_7                     nss-softokn.x86_64 0:3.44.0-8.el7_7
  nss-softokn-freebl.x86_64 0:3.44.0-8.el7_7          nss-sysinit.x86_64 0:3.44.0-7.el7_7                         nss-tools.x86_64 0:3.44.0-7.el7_7               nss-util.x86_64 0:3.44.0-4.el7_7
  plymouth.x86_64 0:0.8.9-0.32.20140113.el7.centos    plymouth-core-libs.x86_64 0:0.8.9-0.32.20140113.el7.centos  policycoreutils.x86_64 0:2.5-33.el7             python-firewall.noarch 0:0.6.3-2.el7_7.3
  systemd.x86_64 0:219-67.el7_7.3                     systemd-libs.x86_64 0:219-67.el7_7.3                        systemd-sysv.x86_64 0:219-67.el7_7.3

Failed:
  python-urllib3.noarch 0:1.10.2-7.el7

Complete!
[root@iZ2zef2r37ijinyvlpu77lZ ~]# //以上信息說明"GNOME Desktop" "Graphical Administration Tools" 安裝完畢

2、登陸Linux系統(root用戶)安裝配置VNC Server

[root@micle ~]:yum list | grep tigervnc //檢測可以下載哪些vncserver
tigervnc.x86_64                           1.8.0-17.el7                 base
tigervnc-icons.noarch                     1.8.0-17.el7                 base
tigervnc-license.noarch                   1.8.0-17.el7                 base
tigervnc-server.x86_64                    1.8.0-17.el7                 base
tigervnc-server-applet.noarch             1.8.0-17.el7                 base
tigervnc-server-minimal.x86_64            1.8.0-17.el7                 base
tigervnc-server-module.x86_64             1.8.0-17.el7                 base
[root@micle ~]# yum -y install tigervnc-server //開始安裝
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tigervnc-server.x86_64 0:1.8.0-17.el7 will be installed
--> Processing Dependency: xorg-x11-xinit for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: xorg-x11-xauth for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: tigervnc-server-minimal for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libjpeg.so.62(LIBJPEG_6.2)(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_2_12)(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_1_4)(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libjpeg.so.62()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libgnutls.so.28()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libXtst.so.6()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libXext.so.6()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libXdamage.so.1()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libX11.so.6()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libSM.so.6()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Processing Dependency: libICE.so.6()(64bit) for package: tigervnc-server-1.8.0-17.el7.x86_64
--> Running transaction check
---> Package gnutls.x86_64 0:3.3.29-9.el7_6 will be installed
--> Processing Dependency: trousers >= 0.3.11.2 for package: gnutls-3.3.29-9.el7_6.x86_64
--> Processing Dependency: libnettle.so.4()(64bit) for package: gnutls-3.3.29-9.el7_6.x86_64
//代碼太多,此處省略...
Installed:
  tigervnc-server.x86_64 0:1.8.0-17.el7

Dependency Installed:
  gnutls.x86_64 0:3.3.29-9.el7_6                        libICE.x86_64 0:1.0.9-9.el7                      libSM.x86_64 0:1.2.2-2.el7                         libX11.x86_64 0:1.6.7-2.el7
  libX11-common.noarch 0:1.6.7-2.el7                    libXau.x86_64 0:1.0.8-2.1.el7                    libXcursor.x86_64 0:1.1.15-1.el7                   libXdamage.x86_64 0:1.1.4-4.1.el7
  libXdmcp.x86_64 0:1.1.2-6.el7                         libXext.x86_64 0:1.3.3-3.el7                     libXfixes.x86_64 0:5.0.3-1.el7                     libXfont2.x86_64 0:2.0.3-1.el7
  libXi.x86_64 0:1.7.9-1.el7                            libXinerama.x86_64 0:1.1.3-2.1.el7               libXmu.x86_64 0:1.1.2-2.el7                        libXrandr.x86_64 0:1.5.1-2.el7
  libXrender.x86_64 0:0.9.10-1.el7                      libXt.x86_64 0:1.1.5-3.el7                       libXtst.x86_64 0:1.2.3-1.el7                       libXxf86misc.x86_64 0:1.0.3-7.1.el7
  libXxf86vm.x86_64 0:1.1.4-1.el7                       libfontenc.x86_64 0:1.1.3-3.el7                  libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7         libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7
  libjpeg-turbo.x86_64 0:1.2.90-8.el7                   libxcb.x86_64 0:1.13-1.el7                       libxkbfile.x86_64 0:1.0.9-3.el7                    libxshmfence.x86_64 0:1.2-1.el7
  llvm-private.x86_64 0:7.0.1-1.el7                     mesa-dri-drivers.x86_64 0:18.3.4-6.el7_7         mesa-filesystem.x86_64 0:18.3.4-6.el7_7            mesa-libGL.x86_64 0:18.3.4-6.el7_7
  mesa-libglapi.x86_64 0:18.3.4-6.el7_7                 nettle.x86_64 0:2.7.1-8.el7                      pixman.x86_64 0:0.34.0-1.el7                       tigervnc-license.noarch 0:1.8.0-17.el7
  tigervnc-server-minimal.x86_64 0:1.8.0-17.el7         trousers.x86_64 0:0.3.14-2.el7                   xkeyboard-config.noarch 0:2.24-1.el7               xorg-x11-server-utils.x86_64 0:7.7-20.el7
  xorg-x11-xauth.x86_64 1:1.0.9-1.el7                   xorg-x11-xinit.x86_64 0:1.3.4-2.el7              xorg-x11-xkb-utils.x86_64 0:7.7-14.el7

Complete!
//到此vncserver安裝完畢,接下來開始配置vncserver


3、配置VNC Server

[root@micle ~]# vim /lib/systemd/system/vncserver@.service //編輯該文件,將<USER> 替換為root,保存並退出編輯
[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 <USER> -c "/usr/bin/vncserver %i"
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
# PIDFile=/home/<USER>/.vnc/%H%i.pid
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

//下面這一步,網上很多博客建議是件/lib/systemd/system/vncserver@.service 重命名為/lib/systemd/system/vncserver@:1.service
//這里我不太建議,因為按此命名會出現一個異常:localhost.localdomain systemd[1]: PID file /root/.vnc/localhost.localdomain:1.pid not readable (yet?) after start.
//檢查 /root/.vnc/,發現沒有localhost.localdomain:1.pid
//他們給的解釋是:
//原來目錄/tmp/下有一個/.X11-unix目錄會占用這個pid序號資源。
//把這個目錄改名/.X11-unix.bak后,再次執行
//#vncserver,系統正常生成了1.pid。

//然並卵,因此為了避免這個問題,個人建議設置為2,親測有效

[root@micle ~]# mv /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:2.service
[root@micle ~]# systemctl daemon-reload //重啟systemd
[root@micle ~]# vncpasswd //按界面要求設置vncserver服務密碼,一定記住該密碼,在遠程連接時會用到
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:
[root@micle ~]# systemctl enable vncserver@:2.service       //設置開機啟動,這不根據個人需要開啟,建議開啟
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:2.service to /usr/lib/systemd/system/vncserver@:2.service.
[root@micle ~]# systemctl start vncserver@:2.service       //開啟vncserver服務
[root@micle ~]# ps -ef | grep vnc               //看到有5902端口服務,說明vncserver服務運行起來了
root      1518     1  0 16:10 ?        00:00:00 /usr/bin/Xvnc :2 -auth /root/.Xauthority -desktop iZ2zef2r37ijinyvlpu77lZ:2 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5902 -rfbwait 30000
root      1538  1236  0 16:10 pts/1    00:00:00 grep --color=auto vnc
[root@micle ~]#

4、將vncserver服務端口加入防火牆,具體參考《CentOS 6、CentOS 7系統設置防火牆及區別》

四、安裝VNC Viewer(Windows)

1、進入官網下載vncviewer安裝程序,官網地址:

https://www.realvnc.com/de/connect/download/viewer/

2、雙擊安裝程序,默認往下安裝

3、選擇語言,因為我下載的英文版,所以選擇“English”

4、繼續往下走

5、接受協議繼續往下

6、選擇安裝目錄,默認即可

7、開始安裝

8、完成

9、在開始打開VNC Viewer,只需輸入ip、端口即可。端口就是在安裝vncserver是開啟的5902,也可以用2,連接名隨意輸入,保存

10、雙擊剛才新建的連接,出現如下畫面說明服務能夠正常連接,如果出現鏈接超時提示,確認下服務名、IP、端口是否正確

11、輸入此前安裝vncseerver時設置的密碼

12、接下來就是見證奇跡的時刻了,

至此,vncserver、vncviewer 服務端和客戶端都安裝完畢,進入你的Liunx世界吧!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM