CentOS 7 安裝與設定 VNC 伺服器

CentOS

本篇文章將解說如何在 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。

yum install tigervnc-server

設定 VNC Server

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

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

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

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 密碼。

su - jacky
vncpasswd

切回 root 帳號,更新 systemctl 以使其生效。

su -
systemctl daemon-reload

啟用虛擬桌面 :1 的 VNC Server 並設定開機自動啟用。

systemctl start vncserver@:1.service
systemctl enable vncserver@:1.service

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

vncserver -list
 
TigerVNC server sessions:
 
X DISPLAY #     PROCESS ID
:1              4721

啟用 VNC Server 錯誤

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

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/ 目錄,在啟用一次即可。

\rm -R /tmp/.X11-unix/
systemctl start vncserver@:1.service

防火牆

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

firewall-cmd --permanent --add-service="vnc-server" --zone="public"
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 來連結。

輸入密碼。

連結成功。

參考

在〈CentOS 7 安裝與設定 VNC 伺服器〉中有 10 則留言

  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.

    謝謝您!!

    • 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

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

    • 修改vncserver@:1.service文件
      ```
      vi /etc/systemd/system/vncserver@:1.service ,将Type=forking 修改为Type=simple
      ```

  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

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

    • start 失敗的訊息說“超過了配置的資源限制”,請再確認設定檔。

  4. systemctl start vncserver@\:1.service
    @後面要帶\才可以唷!

  5. systemctl status vncserver@:1.service
    ● vncserver@:1.service - Remote desktop service (VNC)
    Loaded: error (Reason: Invalid argument)
    Active: inactive (dead)

    1月 25 17:58:20 localhost.localdomain systemd[1]: vncserver@:1.service has more than one ExecStart= setting, which is only allowe...using.
    1月 25 17:58:50 localhost.localdomain systemd[1]: vncserver@:1.service has more than one ExecStart= setting, which is only allowe...using.
    1月 25 17:58:50 localhost.localdomain systemd[1]: vncserver@:1.service has more than one ExecStart= setting, which is only allowe...using.
    1月 25 18:02:57 localhost.localdomain systemd[1]: vncserver@:1.service has more than one ExecStart= setting, which is only allowe...using.
    Hint: Some lines were ellipsized, use -l to show in full.

    • 指令改成 systemctl start vncserver@:2.service 好了

      原因: ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’

      /dev/null 2>&1 || :’

發表留言