Ubuntu 20.04 LTS 中的 x11vnc 配置說明


本頁內容主要用於自己在配置x11vnc過程中遇到的問題進行總結整理,相關配置步驟在 2021 年 2 月的 Ubuntu 20.04 LTS 上確認可行,軟件和系統的更新可能會使相關步驟變更,如果有其他更新或更好的方法,請發表評論,謝謝!

一、網上的常規配置流程

安裝x11vnc

$ sudo apt-get install x11vnc

創建密碼文件

 $ sudo x11vnc -storepasswd

 Enter VNC password: *********

 Verify password: *********

 Write password to ~/.vnc/passwd? [y]/n y

 Password written to: ~/.vnc/passwd

 手動啟動x11vnc進行測試

$ sudo x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared

#注意:/home/USERNAME/.vnc/passwd 中的USERNAME需要換成你自己的用戶名,端口5900大概率情況下會被其他服務占用,建議將端口先配置為5901或其他端口。

輸入手動啟動指令后,如果正確啟動x11vnc服務,應顯示以下結果:

$ sudo x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared

 --- x11vnc loop: 1 ---

 --- x11vnc loop: waiting for: 4564

disabling -bg in -loop mode
PORT=5901

若是其他結果(如一串指令一直在不斷循環,此時可以通過“ctrl+c”快捷鍵退出循環的指令),請參考下面的問題及處理來進行解決。

二、遇到的問題及處理

問題1

缺少網絡工具,循環的指令中的一部分將會有以下結果:

/tmp/fd.qUioJx: 1: /tmp/fd.qUioJx: netstat: not found
-auth guess: failed for display=’:0

問題1處理

輸入以下內容,安裝網絡工具。

$ sudo apt install net-tools

問題2

使用sudo指令啟動x11vnc時,循環的指令中的一部分將會有以下結果:

 -auth guess: failed for display=':0'
 -auth guess: since we are root, retrying with FD_XDM=1
 -auth guess: failed for display=':0'

問題2處理

不要使用sudo指令啟動x11vnc,使用以下內容直接啟動x11vnc。

$ x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared

#注意:/home/USERNAME/.vnc/passwd 中的USERNAME需要換成你自己的用戶名 。

問題3

已正確啟動x11vnc服務,沒有出現循環的指令,且顯示以下結果:

$ x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared

 --- x11vnc loop: 1 ---

 --- x11vnc loop: waiting for: 4564

disabling -bg in -loop mode
PORT=5901

#注意:/home/USERNAME/.vnc/passwd 中的USERNAME需要換成你自己的用戶名。

但在其他系統的vnc查看器(如VNC Viewer)上,輸入正確的“IP4地址:端口”(如:192.168.0.1:5901)后,提示“the connection was refused by the computer ”。

 

 

 問題3處理

Ubuntu 20.04 LTS 默認使用的桌面管理環境是GDM3,x11vnc 在 GDM3 中不起作用,因此需要使用lightdm桌面管理環境,需要進行的步驟如下:

安裝lightdm。

$ sudo apt install lightdm

切換至lightdm。

$ sudo dpkg-reconfigure lightdm

現在軟件包設置界面直接點擊“回車鍵”選擇“確定”。

 

 

 然后在“default display manager”界面通過“上下鍵”選擇“lightdm”,之后通過點擊“回車鍵”選擇“確定”。

 

 

 最后需重啟電腦,再次進行手動啟動x11vnc進行測試,此時,在其他系統的vnc查看器上應該能正常查看Ubuntu上的界面內容。

問題4

vnc查看器上提示以下錯誤,不能正常連接x11vnc:

提示“Unable to connect to VNC Server using your chosen security setting. Either upgrade VNC Server to a more recent version from RealVNC, or select a weaker level of encryption”。

 

 

 問題4處理

出現該問題,主要原因是使用了5900端口進行連接,換用5901或其他端口進行連接即可。

問題5

vnc查看器能正常連接x11vnc,但鍵盤的小鍵盤失效。

問題5處理

x11vnc啟動指令后面加上選項-capslock -nomodtweak,完整的手動啟動x11vnc服務內容如下:

$ x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared -capslock -nomodtweak

#注意:/home/USERNAME/.vnc/passwd 中的USERNAME需要換成你自己的用戶名。

三、設置開機自啟動x11vnc

在手動啟動x11vnc測試中,確認能通過其他系統的vnc查看器正常連接並使用x11vnc相關服務后,就可以進行x11vnc開機自啟動配置。

打開”x11vnc.service“文件。

$ sudo gedit /etc/systemd/system/x11vnc.service

在”x11vnc.service“文件中加入以下內容。

[Unit]
Description=x11vnc (Remote access)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -display :0 -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -forever -loop -noxdamage -repeat -shared -capslock -nomodtweak
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target

#注意:/home/USERNAME/.vnc/passwd 中的USERNAME需要換成你自己的用戶名。

保存並關閉”x11vnc.service“文件之后,輸入以下內容進行配置。

$ sudo systemctl daemon-reload
$ sudo systemctl enable x11vnc
$ sudo systemctl start x11vnc

至此,x11vnc服務的開機自啟動已配置完成,可以重啟電腦,在其他系統上的vnc查看器上直接連接Ubuntu 20,輸入設置的密碼后,即可登陸系統。

 四、遺留問題

不要鎖定屏幕!在使用vnc查看器的過程中,系統鎖屏了,將無法再通過vnc查看器重新進入系統,vnc查看器界面會是一個黑屏,無法輸入任何內容。

此時通過系統原本的鍵盤和屏幕進行解鎖等操作都是正常的,解鎖后vnc查看器又能恢復其他的正常操作,因此建議關閉系統的自動鎖屏:設置-隱私-鎖屏,按以下界面進行設置:

確認“電源”的設置如下所示,使息屏功能失效。

 

 

 

同時,在平時的操作過程中,不要點擊右上角的“鎖定”圖標:

 

 

 自己在操作過程中,可以點“注銷”或“關機”進行正常的登陸操作。

 


免責聲明!

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



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