ubuntu 18.04 通过 VNC 连接到登录屏幕

ubuntu 18.04 通过 VNC 连接到登录屏幕

我花了几个晚上的时间解决这个问题,但由于我设法让它在我之前的 Ubuntu 上运行(很多年前),所以我有点沮丧。

我希望我的服务器上随时运行一个 vnc 服务器(包括登录屏幕),以便远程连接和登录。不是不同的会话:共享我在服务器物理显示屏上看到的相同会话,并通过私有网络(即家庭)中的 VNC 远程登录。

我知道它是 XDMCP、GDM3、initd 和 VNC 配置的组合,但我没有足够的经验来调整我在网上找到的各种操作指南以适用于 ubuntu 18.04。

这些看起来很有希望的链接: https://lists.debian.org/debian-user/2017/04/msg00529.html https://codeghar.wordpress.com/2009/06/11/remote-login-with-gdm-and-vnc-on-fedora-11/ https://wiki.openindiana.org/oi/4.7+Remote+Graphical+Login:+Using+Xvnc+and+gdm+for+One-Shot+sessions

现在(以防其他人像我一样疯狂),我安装了 nomachine,总共花了 2 分钟进行设置,并且它可以按我想要的方式工作(包括 iOS 客户端!):https://www.nomachine.com/---苦乐参半 ¯_(ツ)_/¯

答案1

Ubuntu 18.04 从 LightDM 切换到 GDM3。目前无法在使用 GDM3 时使用 VNC 连接到登录屏幕。恢复此 VNC 功能的最简单方法是从 GDM3 切换回 LightDM。

LightDM 仍在积极开发中,许多 Linux 发行版(包括 Ubuntu 的其他版本)都在使用 LightDM。所以不用担心。

安装 LightDM

apt install lightdm

如果您出于某种原因后悔转换到 LightDM:

dpkg-reconfigure gdm3

一旦安装了 LightDM 并将其配置为默认接待员..

从软件包安装 x11vnc

apt install x11vnc

创建文件 /etc/systemd/system/x11vnc.service

# Description: Custom Service Unit file
# File: /etc/systemd/system/x11vnc.service
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -loop -nopw -xkb -repeat -noxrecord -noxfixes -noxdamage -forever -rfbport 5900 -display :0 -auth guess
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
RestartSec=2

[Install]
WantedBy=multi-user.target

启用 x11vnc 服务

 systemctl enable x11vnc.service

这假设屏幕 :0 代表您的显示器,并将 x11vnc 绑定到该显示器而不是会话。如果您没有显示器(无头)您可以安装 xserver-xorg-video-dummy 包并使用虚拟驱动程序来配置为您提供虚拟的:0屏幕。

补充说明

  1. 如果你正在使用 virt-manager(它也在 127.0.0.1:5900 上启用 VNC),你可能希望将 x11vnc 绑定到你的 LAN IP(-监听 10.0.0.1)
  2. 用于启动 x11vnc 的参数告诉它不要要求输入额外的密码(-nopw)

答案2

我还没有找到更好的方法,但如果你真的想登录,看起来是可行的。

GDM 为 root 用户拥有的登录屏幕启动一个 Xsession。据我所知,它将大致按以下方式执行登录:

登录,找到现有会话并将 vt 切换到它或者找到一个新的 vt 并为其运行 Xorg/gnome-session。

第一个有显示:0及其权限文件(gdm 用户 ID 121)/run/user/121/gdm/Xauthority。因此,如果您未登录 DM 本身并登录,则可以先运行 x11vnc(root 权限)(由于 vt 开关,您的 x11vnc 将变黑)。您可以为新显示手动启动新的 x11vnc :1(无 root 权限),也可以像任何其他登录脚本一样使用您的会话自动启动一个。

~$ ps -a | grep Xorg
1471 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/121/gdm/Xauthority -background none -noreset -keeptty -verbose 3
5337 /usr/lib/xorg/Xorg vt3 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 

这已经决定在某个时候(其他 DM 将来可能会做同样的事情)

答案3

Ritualmaster 就在他们的答案:可以使用 x11vnc 通过 GDM3 远程登录。

  1. 您必须安装 x11vnc。

    sudo apt install x11vnc
    
  2. 你应该创建一个密码

    x11vnc -storepasswd /path/to/passfile
    
  3. 如果未提供,默认位置为~/.vnc/passwd

    x11vnc -storepasswd
    
  4. 您需要列出 Xsessions

    ps aux | grep auth
    

第一行是 Gnome 桌面管理器登录屏幕。

root  /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/124/gdm/Xauthority -background none -noreset -keeptty -verbose 3
fho   grep Xorg
  1. 提供适当的权限并将显示设置为:0

     sudo x11vnc -display :0 -auth /run/user/124/gdm/Xauthority -rfbauth ~/.vnc/passwd
    

如果你连接到它,你会看到登录屏幕。登录后,屏幕将变黑。服务器应自动关闭。

  1. 查找用户会话屏幕

     ps aux | grep Xorg
    
root  /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/124/gdm/Xauthority -background none -noreset -keeptty -verbose 3
root  /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
fho   grep Xorg

第二行就是你要找的。现在,你可以通过替换显示号和用户会话 Xauthority 来重新启动 x11vnc 服务器

   x11vnc -display :1 -auth /run/user/1000/gdm/Xauthority  -rfbauth ~/.vnc/passwd

答案4

在测试了许多针对 vnc 的解决方案/脚本之后,这个 xtartup 文件在带有 tiger vnc 的 ubuntu 18.04 Lts 上对我来说运行良好:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

这个启动命令:

vncserver -localhost no -geometry 1024x768 -depth 24

摘自本教程:

相关内容