У меня есть удаленная виртуальная машина под управлением Ubuntu 1804, и я хотел бы запустить VNC. Я использую x11vnc, который требует запуска X-сервера. В настоящее время я подключен через SSH.
В виртуальной машине установлена карта Nvidia, и после генерации xorg.conf с помощью nvidia-xconfig я могу запустить сеанс X с помощью startx, но только как root. Любое последующее подключение через VNC будет с root, чего я хочу избежать.
Раздел Device в файле xorg.conf выглядит следующим образом:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Tesla K80"
BusID "0:30:0"
EndSection
При попытке запустить startx как пользователь без прав root я получаю следующее:
/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 терпит неудачу и ничего не меняет.
Можно ли как-то запустить X через SSH?
решение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