Вопрос или проблема
Я хочу получить доступ к своему компьютеру с Xubuntu удаленно и видеть тот же рабочий стол, что отображается на мониторе удаленной машины. По умолчанию, используя как VNC, так и xrdp, создается новая сессия рабочего стола, а мне этого не нужно.
Варианты, которые, как кажется, доступны:
Единственное наполовину безопасное решение, которое я, кажется, могу получить, — это использовать
UNIXPW_DISABLE_SSL=1 x11vnc -unixpw -localhost
и создать свой файл службы systemd для этого, а затем подключиться через SSH-туннель.
vino
Я использую датскую клавиатуру, и vino
, кажется, не поддерживает ее из-за этой ошибки. Невозможность использования æøå
или любых специальных символов, таких как <>|;.
, исключает использование vino для меня. Кроме того, vino плохо поддерживается в XFCE, потому что vino-preferences
была удалена.
x11vnc
x11vnc
в основном работает, но, кажется, нет никакого способа безопасного хранения пароля. Использование файла пароля VNC возможно, но ограничено 8 символами и тривиально расшифровывается, так что это, в лучшем случае, только видимость безопасности. x11vnc
, используя -nopw
(и -local
, так что он недоступен через сеть и требует использования через SSH-туннель) работает, но тогда любой процесс (работающий под любым пользователем) на настольном компьютере может получить доступ к моему рабочему столу, что не хорошо.
x11vnc
имеет опции для безопасных соединений: -ssl
и -stunnel
. Для -ssl
, Remmina показала: “TLS handshake failed: A TLS fatal alert has been received..” и xtightvncviewer
показал: “Server did not offer supported security type”, в то время как, если сервер использовал -stunnel
, оба просмотрщика просто «зависали» и не жаловались, но также не начинали окно VNC.
x11vnc
имеет -unixpw
, который “будет использовать программу su(1) для проверки пароля пользователя”. Но это требует либо -ssl
, либо -stunnel
, и -localhost
, но ни -ssl
, ни -stunnel
не работали для меня при подключении через Remmina или xtightvncviewer
. Но установка переменной окружения UNIXPW_DISABLE_SSL=1
“отключает требование использования либо -ssl
, либо -stunnel
“, согласно руководству.
И UNIXPW_DISABLE_SSL=1 x11vnc -unixpw -localhost
, а затем выполнение через SSH-туннель, кажется почти нирваной. Но с -unixpw
я не могу хранить учетные данные в Remmina (которая хранит пароль в gnome-keyring
). Но приходится вводить их каждый раз. И, честно говоря, это выглядит ужасно / плохой пользовательский опыт на мой личный взгляд.
xrdp
xrdp
выглядит, как будто либо запускает независимую сессию рабочего стола, либо может подключиться к уже работающему рабочему столу через – барабанная дробь – vino
или x11vnc
, и, таким образом, я получаю все вышеописанные проблемы, в дополнение к любым другим вопросам, которые вызывает xrdp.
Неужели нет более безопасного способа доступа к моему рабочему столу? На самом деле?
Что я в итоге сделал
Редактирование: в конце концов, я выбрал безнадежно небезопасный -rfbauth /home/user/.vnc/passwd
(и другой пароль!) вместо -unixpw
. В сочетании с -localhost
и использованием SSH-туннеля, потому что пользовательский опыт -unixpw
был просто слишком плохим. И пришлось добавить некоторые дополнительные опции, поэтому окончательная конфигурация systemd выглядела следующим образом:
[Unit]
Description=x11vnc VNC Server for X11
Requires=lightdm.service
After=lightdm.service
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -display WAIT:0 -forever -shared -rfbauth /home/user/.vnc/passwd -rfbport 5900 -localhost
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
RestartSec=2
SuccessExitStatus=3
[Install]
WantedBy=graphical.target
Настройте ssh и x11vnc на удаленной машине. Убедитесь, что у вас есть права или установлены разрешения.
Затем команда, чтобы управлять всем:
ssh <удаленный адрес> -L 5900:localhost:5900 "x11vnc -no6 -localhost -auth /var/run/lightdm/root/:0 -display :0"
затем подключение vnc к localhost…
.
Ответ или решение
Чтобы безопасно и эффективно получить удаленный доступ к рабочему столу Xubuntu / XFCE, следуя предоставленным условиям, рассмотрим использование x11vnc с настройкой по SSH-туннелю. Это позволит подключаться непосредственно к текущей сессии на удалённом компьютере без создания новой. Далее подробно рассмотрим шаги настройки.
Контекст и проблема
Пользователь сталкивается с необходимостью удалённого доступа к Xubuntu, чтобы видеть текущий сеанс рабочего стола. Применение инструментов VNC и xrdp как правило создаёт новую сессию, что в данном случае нежелательно. Рассмотрены несколько опций, но все они имели свои недостатки в плане безопасности и удобства.
Выбранное решение: x11vnc с SSH-туннелем
Использование x11vnc
оправдано, так как он предоставляет доступ к текущей сессии рабочего стола. Чтобы добиться безопасности, планируется организовать подключение через SSH-туннель.
Шаг 1: Установка x11vnc и настройки SSH
-
Установка x11vnc:
sudo apt update sudo apt install x11vnc
-
Настройка SSH на удалённом хосте:
Убедитесь, что SSH-сервер установлен и настроен для безопасного подключения. Выполните установку (если требуется):sudo apt install openssh-server
Шаг 2: Создание и настройка systemd-сервиса для x11vnc
Создайте systemd-сервис, чтобы автоматически запускать x11vnc при старте системы.
-
Создайте файл службы:
sudo nano /etc/systemd/system/x11vnc.service
-
Добавьте следующий конфигурационный код:
[Unit] Description=x11vnc VNC Server for X11 Requires=lightdm.service After=lightdm.service [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -display WAIT:0 -forever -shared -rfbauth /home/пользователь/.vnc/passwd -rfbport 5900 -localhost ExecStop=/usr/bin/killall x11vnc Restart=on-failure RestartSec=2 SuccessExitStatus=3 [Install] WantedBy=graphical.target
-
Сохраните изменения и включите сервис:
sudo systemctl enable x11vnc.service sudo systemctl start x11vnc.service
Шаг 3: Настройка SSH-туннеля
На локальной машине установите SSH-команду для создания туннеля:
ssh -L 5900:localhost:5900 ваш_логин@адрес_удалённого_хоста
После создания туннеля выполните подключение к localhost:5900
с помощью вашего VNC-клиента.
Заключение
Использование x11vnc в связке с SSH-туннелем позволяет обеспечить безопасный доступ к рабочему столу Xubuntu, сохраняя текущую сессию и обеспечивая передачу данных через защищённую SSH-сеть. Такая настройка позволяет избежать стандартных уязвимостей VNC и предоставляет более дружелюбный пользовательский интерфейс для конечного пользователя.