我非常谨慎地表述了我的问题。经过大量研究和反复试验,我能够通过在我的服务文件中使用以下命令行让 x11vnc 在启动时作为系统服务启动:
ExecStart=/usr/bin/x11vnc -auth /run/user/121/gdm/Xauthority -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared
我和许多其他人一样发现该auth guess
参数在 17.10 中不起作用。我还发现 121 是拥有欢迎程序 X 会话的用户“gdm”的号码,我的Xauthority
文件就驻留在该号码中。通过 ssh 检查 xorg 进程:
user@foo:~$ ps -ax |grep xorg
886 tty1 Sl+ 0:00 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/121/gdm/Xauthority -background none -noreset -keeptty -verbose 3
好的,我可以通过 vnc 客户端连接,并且可以看到欢迎界面和登录界面,但登录后会显示一个带有活动鼠标指针的纯黑屏幕。再次查看 xorg 进程:
user@foo:~$ ps -ax |grep xorg
886 tty1 Sl+ 0:00 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/121/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1384 tty2 Sl+ 0:00 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
我看到登录用户(我!)拥有一个新的 X 会话,并且正在使用Xauthority
该位置的文件。问题似乎是 VNC 客户端卡在“gdm”拥有的欢迎程序的原始 X 会话中。我怎样才能诱导 vnc 客户端跟随到新的 X 会话而不打开客户端的第二个实例?当然,可以使用 x11vnc 和 vnc 客户端登录并使用桌面管理器图形界面,不是吗?非常感谢!
答案1
我没有和你一样的用例,但很相似,如果问题尚未解决,它可能会为解决问题提供一些提示。事实上,我通过 SSH 和 VNC 客户端使用控制台从智能手机进行远程连接。我的电脑x11vnc
目前运行的是 Ubuntu 18.04.2 LTS。
当显示欢迎界面时,我运行:
sudo x11vnc -safer -localhost -once -display :0 -auth /run/user/125/gdm/Xauthority (... other options)
然后我通过 VNC 客户端登录。然后,对于您来说,我看到一个纯黑屏。然后我终止正在运行的
x11vnc
。然后我手动运行(1000是登录的用户数量):
x11vnc -safer -localhost -once -display :1 -auth /run/user/1000/gdm/Xauthority (... other options)
然后我可以通过 VNC 客户端在智能手机上看到我的桌面(包括我的应用程序等)。然后我可以远程做任何事情,就像坐在电脑前使用键盘和鼠标一样。
我认为您的结论是您需要使用x11vnc
不同的-auth
选项值运行第二个脚本。我认为您可以将其配置为“登录”脚本,该脚本在给定用户登录后直接执行。
注 1:顺便提一下,请注意该-display
选项先期望:0
然后:1
,这让我浪费了很多时间!
注 2:对您来说,这121
是用户“gdm”的号码,对我来说也是,125
但我是通过您的问题找到它的,所以感谢您。
注 3:我知道这个问题已经存在 1 年多了,但是因为这个问题本身对我有帮助,所以我想尽可能地帮助我。