我有一个运行 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