通过 SSH 以非 root 用户身份启动 x

通过 SSH 以非 root 用户身份启动 x

我有一个运行 Ubuntu 1804 的远程虚拟机,并且想要运行 VNC。我正在使用 x11vnc,它需要运行 X 服务器。目前,我通过 SSH 连接。

VM 有一张 Nvidia 卡,在使用 nvidia-xconfig 生成 xorg.conf 后,我可以使用 startx 启动 X 会话,但只能以 root 身份启动。任何后续通过 VNC 的连接都是使用 root 进行的,我想避免这种情况。

xorg.conf 文件中的设备部分如下所示:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Tesla K80"
    BusID          "0:30:0"
EndSection

当尝试以非 root 用户身份启动 startx 时,我得到以下信息:

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

如果我更改 /etc/X11/Xwrapper.config 以允许任何人启动x,我会得到以下信息:

Couldn't get a file descriptor referring to the console

我一直在读到通过 SSH 连接并不意味着您已连接到文本控制台,您需要运行 startx。尝试使用 chvt 更改为文本控制台失败不会改变任何内容。

我可以通过 SSH 启动 X 吗?

答案1

这里是一个基于 的解决方案systemd-run,它欺骗性startx地认为它是从虚拟终端运行的。

答案2

您可以添加登录管理器(例如lightdm)并配置自动登录。甚至x11vnc在用户会话开始时运行。

或者,您可以vncserver以用户身份运行,然后通过 ssh 转发直接连接到它:

ssh -L5904:localhost:5905 [email protected]
vncserver :5 # only if the server has not been started

然后,在客户端上您可以运行:

xvncviewer localhost:4

相关内容