CentOS 7 安裝與設定 VNC 伺服器
簡介
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 來連結。
輸入密碼。
連結成功。
參考
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.
版主您好:
謝謝您詳細的教學,在此想請教您一個問題,我在設定啟用 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 這是正常的訊息。
我也遇到相同問題,請問鎂鎂有解決這問題嗎? 解法是? 謝謝
版大好!我也遇到跟鎂鎂一樣的問題
[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
```
版大好!我也遇到跟鎂鎂一樣的問題
[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 失敗的訊息說“超過了配置的資源限制”,請再確認設定檔。
systemctl start vncserver@\:1.service
@後面要帶\才可以唷!
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 || :’