本頁內容主要用於自己在配置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查看器又能恢復其他的正常操作,因此建議關閉系統的自動鎖屏:設置-隱私-鎖屏,按以下界面進行設置:
確認“電源”的設置如下所示,使息屏功能失效。
同時,在平時的操作過程中,不要點擊右上角的“鎖定”圖標:
自己在操作過程中,可以點“注銷”或“關機”進行正常的登陸操作。