本页内容主要用于自己在配置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查看器又能恢复其他的正常操作,因此建议关闭系统的自动锁屏:设置-隐私-锁屏,按以下界面进行设置:
确认“电源”的设置如下所示,使息屏功能失效。
同时,在平时的操作过程中,不要点击右上角的“锁定”图标:
自己在操作过程中,可以点“注销”或“关机”进行正常的登陆操作。