環境:Ubuntu 16.04 套件:x11vnc
原因:
因為我之前設計的VNC連線模式大多是配合gdm桌面環境使用,
而這次要連線的主機是ubuntu 16版的桌面環境是採用unity,
變成x11vnc在做遠端連線時,
參數上的設定問題讓他無法開啟遠端桌面環境。
處理方式:
我們先去看log那邊有什麼問題出現:
我設定vnc打開的時候
log寫在下面的路徑
#vim /var/log/x11vnc.log
=!====================================================
x11vnc version: 0.9.13 lastmod: 2011-08-10 pid: 19227
No protocol specified
XOpenDisplay(":0") failed.
Trying again with XAUTHLOCALHOSTNAME=localhost ...
No protocol specified
*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.
…..
LOG當中我們有看到一個重點
他這邊有簡單跟你介紹不同的桌面環境,
應該要用哪些不同的參數來使用
gdm: -auth /var/gdm/:0.Xauth
-auth /var/lib/gdm/:0.Xauth
kdm: -auth /var/lib/kdm/A:0-crWk72
-auth /var/run/xauth/A:0-crWk72
xdm: -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
dtlogin: -auth /var/dt/A:0-UgaaXa
=!=========================================================
ubuntu中有很多種桌面環境模式,
在x11VNC當中你的參數也要配合你的桌面環境去設計。
而我們的ubuntu 16.04 採用的事 unity的桌面環境,
使用上會比較麻煩。
所以這部份我就不在用xinted去進行服務開啟的動作,
---
我改成用systemctl這種新的統一格式去做服務的開啟與關閉。
這邊其實把格式貼近來就可以了,要注意的只有-rfbauth部份。
那邊的密碼要用我們先前已經生成好的那一組。
下面的格式內容是現在systemctl服務的標準格式。
#vim /lib/systemd/system/x11vnc.service
=!==========================================================
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/user/.vnc/passwd -rfbport 5900 -shared
[Install]
WantedBy=multi-user.target
=!==========================================================
再來就只要把他加到我們的服務當中就可以正常使用了。
設定並添加systemctl服務
# sudo systemctl daemon-reload
# sudo systemctl enable x11vnc.service
服務啟用與關閉
# sudo systemctl start x11vnc
# sudo systemctl stop x11vnc
服務運作後確認一下port有沒有正常啟用。
# ss -tnlp
=!=============================
LISTEN 0 32 :::5900 :::* users:(("x11vnc",pid=21131,fd=11))
=!=============================
有看到服務起來,這邊我要用noVNC進行連線測試看看。
關於noVNC連線建置,請參考部落格內文章。
# ./noVNC/utils/launch.sh --vnc [你的主機IP]:5900
可以連線就代表完成了!!
(本篇完)