CentOS 7 安裝與設定 VNC 伺服器

本篇文章將解說如何在 CentOS 7 安裝與設定 VNC Server,以及使用 UltraVNC 這套 VNC Client 軟體,來連結 VNC Server 的步驟。


簡介

VNC(Virtual Network Computing)可藉由網路傳送即時的螢幕畫面,與鍵盤、滑鼠的動作,來遠端控制 Windows 或 Linux 系統。

圖形使用者介面

由於 VNC 必須透過 GUI(Graphical User Interface,圖形使用者介面)來遠端控制,所以請確認已安裝 GUI,才能順利進行以下步驟。

安裝 VNC Server

使用以下指令來安裝 VNC Server。

[root@localhost ~]# yum install tigervnc-server

設定 VNC Server

CentOS 7 的 VNC Server 設定檔在 /lib/systemd/system/vncserver@.service,複製它來建立新的設定檔。

VNC 預設 port 為 5900,而 :1 代表一個虛擬桌面,所以連結這個虛擬桌面的 port 為 5901(5900 + 1)或 1
[root@localhost ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

編輯新的設定檔,將檔案內原先的 <USER> 修改為允許 VNC Client 連結的帳號,小傑這裡使用的帳號為 jacky。

[root@localhost ~]# vi /etc/systemd/system/vncserver@:1.service
[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 jacky -c "/usr/bin/vncserver %i"

# 一般帳號
PIDFile=/home/jacky/.vnc/%H%i.pid

# root 帳號
#PIDFile=/root/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

切換至要設定的帳號,並建立 VNC Server 密碼。

與系統密碼不同, 這是連接 VNC Server 使用的
[root@localhost ~]# su - jacky
[jacky@localhost ~]$ vncpasswd

切回 root 帳號,啟用虛擬桌面 :1 的 VNC Server 並設定開機自動啟用。

[root@localhost ~]# systemctl start vncserver@:1.service
[root@localhost ~]# systemctl enable vncserver@:1.service

指令 vncserver -list 可列出目前啟用 VNC Server 的虛擬桌面,如下虛擬桌面 :1 已啟用。

[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              4721

啟用 VNC Server 錯誤

如啟用 VNC Server 時發生如下錯誤。

[root@localhost ~]# systemctl start vncserver@:1.service
Job for vncserver@:1.service failed because the control process exited with error code. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.

刪除 /tmp/.X11-unix/ 目錄,在啟用一次即可。

[root@localhost ~]# \rm -R /tmp/.X11-unix/
[root@localhost ~]# systemctl enable vncserver@:1.service

防火牆

設定 firewall 允許 vnc-server 的服務,並重新載入 firewall 設定(才能立即生效)

[root@localhost ~]# firewall-cmd --permanent --add-service="vnc-server" --zone="public"
[root@localhost ~]# firewall-cmd --reload

連結 VNC Server

使用 UltraVNC 這套 VNC Client 軟體連結剛新建的 VNC Server 虛擬桌面 :1,連結方式為 IP:5901 或 IP:1,小傑 VNC Server 的 IP 是 192.168.0.100,所以可使用這二種方式連結:

  • 192.168.0.100:5901
  • 192.168.0.100:1

這裡使用 192.168.0.100:5901 來連結。

centos7-vnc-server-install-setup_01

輸入密碼。

centos7-vnc-server-install-setup_02

連結成功。

centos7-vnc-server-install-setup_03

6 則評論 to “CentOS 7 安裝與設定 VNC 伺服器”

  1. 鎂鎂 說:

    版主您好:
    謝謝您詳細的教學,在此想請教您一個問題,我在設定啟用 VNC Server 時有發生一點錯誤,與版主您的錯誤訊息不同,能否請教是否有解決方式,謝謝您!!!

    [root@localhost ~]# systemctl start vncserver@:1.service
    Job for vncserver@:1.service failed because a configured resource limit was exceeded. See “systemctl status vncserver@:1.service" and “journalctl -xe" for details.

    [root@localhost ~]# systemctl enable vncserver@:1.service
    Created symlink from /etc/systemed/system/multi-user.target.wants/vncserver@:1.service to /etc/systemed/system/vncserver@:1.service.

    謝謝您!!

    • SmallJacky 說:

      1. start 失敗的訊息說“超過了配置的資源限制”,請再確認設定檔 /etc/systemd/system/vncserver@:1.service 是否正確。

      2. enable 這是正常的訊息。

    • 小鐵 說:

      我也遇到相同問題,請問鎂鎂有解決這問題嗎? 解法是? 謝謝

  2. 小鐵 說:

    版大好!我也遇到跟鎂鎂一樣的問題
    [root@server ~]# systemctl start vncserver@:1.service
    Job for vncserver@:1.service failed because a configured resource limit was exceeded. See “systemctl status vncserver@:1.service" and “journalctl -xe" for details.

    這是我的設定檔
    [root@server ~]# 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 n00che00 -c “/usr/bin/vncserver %i"
    PIDFile=/home/n00che00/.vnc/%H%i.pid
    ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’

    [Install]
    WantedBy=multi-user.target

    請問有什麼方法可以解決這問題嗎?謝謝

  3. 小鐵 說:

    版大好!我也遇到跟鎂鎂一樣的問題
    [root@server ~]# systemctl start vncserver@:1.service
    Job for vncserver@:1.service failed because a configured resource limit was exceeded. See “systemctl status vncserver@:1.service" and “journalctl -xe" for details.

    這是我的設定檔
    [root@server ~]# 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 n00che00 -c “/usr/bin/vncserver %i"
    PIDFile=/home/n00che00/.vnc/%H%i.pid
    ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’

    [Install]
    WantedBy=multi-user.target

    請問有什麼方法可以解決這問題嗎?謝謝

發表迴響