Удалённый рабочий стол на Ubuntu 24.04: xrdp + XFCE или GNOME Remote Login

Содержание11 разделов
Для VPS без видеокарты обычно рациональнее использовать xrdp с XFCE: окружение расходует меньше ресурсов, а подключение из mstsc и Windows App не требует дополнительных параметров. GNOME Remote Login сохраняет привычный рабочий стол Ubuntu и работает через Wayland, но нуждается в большем объёме памяти и корректной обработке перенаправления RDP.
Оба способа подходят для Ubuntu 24.04 LTS: XFCE проще и легче, GNOME удобнее тем, кто хочет сохранить стандартный интерфейс системы.
Что выбрать: xrdp + XFCE или GNOME Remote Login
Параметр | xrdp + XFCE | GNOME Remote Login |
|---|---|---|
Рабочее окружение | Лёгкое XFCE | Стандартное GNOME |
Графическая система | X11 через Xorg | Wayland |
Работа без аппаратного ускорения | Обычно отзывчивее | Сильнее зависит от ресурсов процессора и памяти |
Ориентир по ресурсам | От | От |
Подключение из Windows | Встроенный клиент |
|
Подключение из macOS | Windows App без дополнительных параметров | Windows App с параметром перенаправления в файле |
Порядок входа | Учётная запись Linux | Сначала учётные данные RDP, затем учётная запись Linux |
Сеанс после отключения | Обычно сохраняется | Сохраняется после установки актуальных обновлений Ubuntu 24.04 |
Основные сложности | Запросы | Перенаправление клиента, первый запуск GNOME, настройка сертификата |
В ранних выпусках Ubuntu 24.04 отключение клиента завершало сеанс GNOME. Поддержку сохранения сеанса перенесли в обновление gnome-remote-desktop 46.3-0ubuntu1.2; для её работы необходимы также обновления gdm3. Перед настройкой установите все обновления, а после настройки проверьте повторное подключение на практике. Изменение опубликовано в журнале пакета Ubuntu.
Что влияет на скорость удалённого рабочего стола
Протокол подключения не всегда является главным фактором. На VPS без аппаратного ускорения отрисовка интерфейса и сжатие изображения выполняются процессором, поэтому количество фоновых служб и разрешение экрана напрямую влияют на отзывчивость.
Фактор | Как снизить влияние |
|---|---|
Задержка сети | Выберите центр обработки данных ближе к месту подключения. Ориентировочно до |
Программная отрисовка | Используйте XFCE, отключите компонование окон и декоративные эффекты |
Высокое разрешение | Начните с |
Фоновые процессы | Отключите индексирование файлов и ненужные расширения рабочего окружения |
Недостаток памяти | Не запускайте GNOME на минимальной конфигурации VPS и следите за использованием подкачки |
Для измерения задержки в macOS или Linux выполните ping -c 20 "<IP>". В Windows используется команда ping -n 20 "<IP>", где <IP> необходимо заменить адресом сервера.
Маршрут до сервера проверяется командой sudo traceroute -I "<IP>" в macOS или tracert "<IP>" в Windows. Скачки задержки и потери пакетов на промежуточных узлах не устраняются настройками XFCE или GNOME.
Как подготовить Ubuntu 24.04
Инструкция рассчитана на чистую установку Ubuntu 24.04 LTS с доступом по SSH. Команды выполняются с правами root; при работе под обычным пользователем сначала выполните sudo -i.
sudo -iПеред выполнением дальнейших команд замените <username> на имя нового пользователя, а <IP> на нужный адрес. Угловые скобки являются частью обозначения, а не готовым значением.
Обновите систему и установите часовой пояс. В примере используется UTC; доступные значения выводятся командой timedatectl list-timezones.
apt update && apt full-upgrade -y
timedatectl set-timezone UTCДобавьте отметку о прохождении мастера первого запуска GNOME. Файл в /etc/skel будет скопирован в домашний каталог нового пользователя; для XFCE он не используется.
install -d -m 755 /etc/skel/.config
printf 'yes\n' > /etc/skel/.config/gnome-initial-setup-doneСоздайте отдельного пользователя для работы в графическом окружении. Команда adduser запросит пароль интерактивно.
U="<username>"
adduser "$U"
usermod -aG sudo "$U"Разрешите SSH до включения межсетевого экрана. Порт RDP на этом этапе открывать не требуется: способы ограничения доступа описаны отдельно.
ufw allow OpenSSH
ufw enable
apt install -y fail2ban
systemctl enable --now fail2ban
ufw status verboseКак установить xrdp + XFCE
Установите рабочее окружение, сервер xrdp и компоненты Xorg. Добавление пользователя xrdp в группу ssl-cert позволяет службе прочитать закрытый ключ сертификата.
apt install -y xfce4 xfce4-goodies xfce4-terminal dbus-x11 xorg xauth xrdp xorgxrdp
adduser xrdp ssl-certПереведите систему в текстовый режим загрузки и отключите локальный экран входа LightDM. На сервере без монитора он не нужен.
systemctl set-default multi-user.target
systemctl disable --now lightdm 2>/dev/nullУкажите XFCE как окружение для пользователя. Файл /home/<user>/.xsession будет считан при запуске сеанса через xrdp.
U="<username>"
printf 'startxfce4\n' > "/home/$U/.xsession"
chown "$U:$U" "/home/$U/.xsession"Создайте правило polkit, которое отключает повторные запросы пароля для управления цветовыми профилями и обновления списка пакетов. В Ubuntu 24.04 используются файлы .rules, а не устаревшие правила .pkla.
cat > /etc/polkit-1/rules.d/45-remote-desktop.rules <<'EOF'
polkit.addRule(function(action, subject) {
if ((action.id.indexOf("org.freedesktop.color-manager.") == 0 ||
action.id == "org.freedesktop.packagekit.system-sources-refresh") &&
subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});
EOF
systemctl restart polkitЗапустите xrdp и проверьте состояние службы и прослушиваемый порт.
systemctl enable --now xrdp
systemctl restart xrdp
systemctl is-active xrdp
ss -ltnp | grep 3389После первого входа откройте терминал внутри XFCE и отключите компонование окон. Это уменьшает нагрузку при программной отрисовке.
xfconf-query -c xfwm4 -p /general/use_compositing -s falseТот же параметр находится в разделе «Настройки» → «Диспетчер окон (дополнительно)» → «Композитинг».
Как настроить GNOME Remote Login
Установите стандартное окружение Ubuntu и сервер удалённого рабочего стола. После перезагрузки снова получите права root через sudo -i.
apt install -y ubuntu-desktop-minimal gnome-remote-desktop
systemctl set-default graphical.target
rebootСоздайте самоподписанный сертификат от имени служебного пользователя gnome-remote-desktop. Срок действия в примере составляет 3650 дней; после его окончания сертификат потребуется заменить.
D=/var/lib/gnome-remote-desktop/.local/share/gnome-remote-desktop
sudo -u gnome-remote-desktop mkdir -p "$D"
sudo -u gnome-remote-desktop openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 \
-subj "/CN=$(hostname)" \
-keyout "$D/tls.key" \
-out "$D/tls.crt"Подключите сертификат и задайте отдельные учётные данные RDP. Команда read не выводит вводимый пароль на экран и не помещает его непосредственно в командную строку.
grdctl --system rdp set-tls-key "$D/tls.key"
grdctl --system rdp set-tls-cert "$D/tls.crt"
read -rp 'Имя пользователя RDP: ' RDP_USER
read -rsp 'Пароль RDP: ' RDP_PASS
printf '\n'
grdctl --system rdp set-credentials "$RDP_USER" "$RDP_PASS"
unset RDP_USER RDP_PASS
grdctl --system rdp enable
systemctl enable --now gdm.service
systemctl enable --now gnome-remote-desktop.service
systemctl restart gnome-remote-desktop.serviceПроверьте конфигурацию и порт. Параметр --show-credentials выводит учётные данные, поэтому не публикуйте результат этой команды.
grdctl --system status --show-credentials
systemctl is-active gnome-remote-desktop.service
ss -ltnp | grep 3389В разделе RDP должно быть состояние enabled, пути к сертификату и имя пользователя. Значение Username: (empty) указывает, что учётные данные не сохранены; повторите настройку с помощью set-credentials.
До первого входа пользователя отключите анимации, расширение значков рабочего стола, автоматическую блокировку и индексирование файлов. Команда loginctl terminate-user завершает все процессы пользователя, поэтому не выполняйте её при открытых несохранённых документах.
U="<username>"
H=$(getent passwd "$U" | cut -d: -f6)
loginctl terminate-user "$U" 2>/dev/null || true
sudo -u "$U" -H dbus-run-session -- bash <<'EOF'
gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.shell disabled-extensions "['ding@rastersoft.com']"
gsettings set org.gnome.desktop.background picture-uri ''
gsettings set org.gnome.desktop.background picture-uri-dark ''
gsettings set org.gnome.desktop.background primary-color '#2c2c2c'
gsettings set org.gnome.desktop.session idle-delay 0
gsettings set org.gnome.desktop.screensaver lock-enabled false
EOF
sudo -u "$U" mkdir -p "$H/.config/systemd/user"
sudo -u "$U" ln -sf /dev/null "$H/.config/systemd/user/tracker-miner-fs-3.service"
sudo -u "$U" -H dbus-run-session -- \
gsettings get org.gnome.desktop.interface enable-animationsПоследняя команда должна вывести false. Временная шина dbus-run-session необходима потому, что запуск gsettings через sudo -u без пользовательского окружения может завершаться ошибками dconf.
Общий порядок настройки соответствует официальной документации GNOME Remote Desktop.
Как безопасно открыть доступ по RDP
Не оставляйте 3389/tcp доступным всем адресам без необходимости. Если у клиента постоянный публичный адрес, ограничьте подключение межсетевым экраном; при изменяющемся адресе удобнее туннель SSH.
Как разрешить RDP только с одного адреса
В следующей команде <IP> обозначает публичный адрес клиента, а не адрес сервера.
ufw allow from "<IP>" to any port 3389 proto tcp
ufw status numberedЕсли ранее было создано общее правило ufw allow 3389/tcp, удалите его после проверки ограниченного доступа. Иначе ограничение по адресу не закроет подключения остальным клиентам.
Как подключиться через SSH-туннель
При использовании туннеля открывать 3389/tcp в межсетевом экране не нужно. Выполните команду на локальном компьютере и оставьте процесс запущенным.
ssh -N -L 13389:127.0.0.1:3389 "<username>@<IP>"Здесь <IP> — адрес сервера. В RDP-клиенте вместо него укажите 127.0.0.1:13389.
Для проверки самоподписанного сертификата GNOME выведите его отпечаток на сервере и сравните с предупреждением клиента при первом подключении.
openssl x509 \
-in /var/lib/gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt \
-noout -fingerprint -sha256Как подключиться из Windows и macOS
В Windows используется встроенная программа «Подключение к удалённому рабочему столу», которая запускается командой mstsc. В macOS установите Windows App из App Store.
Подключение к xrdp + XFCE
В Windows запустите mstsc, укажите <IP> и войдите под пользователем Linux. При подключении через SSH-туннель используйте адрес 127.0.0.1:13389.
В Windows App на macOS создайте подключение через «+» → «Add PC». В поле «PC name» укажите адрес сервера, а в «Credentials» — имя и пароль пользователя Linux.
На экране входа xrdp выберите сеанс Xorg. Если движение окон заметно отстаёт, отключите «Optimize for Retina displays» и установите разрешение не выше 1920×1080.
Подключение к GNOME Remote Login
После первичной проверки учётных данных GNOME перенаправляет клиента в сеанс входа, а затем в пользовательское окружение. Для корректной обработки этого перенаправления клиентам Microsoft рекомендуется передавать параметр use redirection server name:i:1 через файл .rdp. Назначение параметра описано в изменении GNOME Remote Desktop.
Сохраните следующее содержимое в файл server.rdp. В macOS перед сохранением переведите TextEdit в режим простого текста, иначе редактор может изменить кавычки и форматирование.
full address:s:<IP>:3389
use redirection server name:i:1
prompt for credentials on client:i:1
enablecredsspsupport:i:1
authentication level:i:2
screen mode id:i:2
desktopwidth:i:1600
desktopheight:i:900
dynamic resolution:i:0
smart sizing:i:1
use multimon:i:0
session bpp:i:24
redirectclipboard:i:1
redirectprinters:i:0
redirectsmartcards:i:0
audiomode:i:0При подключении через SSH-туннель замените первую строку на full address:s:127.0.0.1:13389. Откройте сохранённый файл в Windows App или mstsc, а не создавайте отдельное подключение через «Add PC».
Сначала введите учётные данные, заданные через grdctl. Затем на экране GNOME укажите имя и пароль пользователя Linux; после короткого перенаправления откроется рабочий стол.
Для проверки подключения из macOS также можно использовать FreeRDP.
brew install freerdp
sdl-freerdp "/v:<IP>" "/u:<RDP_ЛОГИН>" /cert:tofu /size:1600x900Как решить проблемы с подключением
Сначала проверьте адрес сервера, состояние службы и правила межсетевого экрана. Затем изучите журнал: сообщение об ошибке в клиенте не всегда показывает, на каком этапе произошёл сбой.
Симптом | Вероятная причина | Решение |
|---|---|---|
| Клиент не принял перенаправление GNOME | Подключитесь через |
| Не сохранены учётные данные RDP | Повторите |
| Служба не запущена или не прослушивает порт | Проверьте |
Истекает время ожидания | Порт закрыт межсетевым экраном или недоступен маршрут | Проверьте |
Чёрный экран при первом входе в GNOME | Запустился мастер первоначальной настройки | Проверьте файл |
После повторного входа открылся пустой сеанс | Установлены не все обновления или прежний сеанс завершён | Обновите |
Появляются окна |
| Проверьте правило |
Ошибки |
| Выполните настройку через |
Окна движутся рывками | Высокая задержка, большое разрешение или нехватка ресурсов | Уменьшите разрешение, отключите эффекты и проверьте загрузку процессора |
Для диагностики xrdp просмотрите журналы службы, диспетчера сеансов и пользовательского окружения.
journalctl -u xrdp -b --since '-15 min' --no-pager
tail -n 50 /var/log/xrdp-sesman.log
tail -n 50 "/home/<user>/.xsession-errors"Для GNOME Remote Login основные сообщения находятся в журнале системной службы.
journalctl -u gnome-remote-desktop.service \
-b --since '-15 min' --no-pagerЕсли необходимо завершить зависший сеанс, сначала сохраните работу другими способами. Команда loginctl terminate-user "<username>" завершает все процессы указанного пользователя, а не только удалённый рабочий стол.
Какие есть альтернативы
Вариант | Модель распространения | Клиент | Когда подходит |
|---|---|---|---|
Платная серверная подписка, бесплатный проигрыватель | NoMachine Player | Нужен готовый клиент для нескольких систем и дополнительные функции перенаправления устройств | |
Открытый код | Браузер | Требуется доступ без установки отдельного RDP-клиента | |
Открытый код | Собственный клиент | Нужен графический сеанс поверх SSH |
KasmVNC удобен для доступа через браузер, но создаёт дополнительную нагрузку при кодировании изображения. X2Go использует SSH и собственный клиент, поэтому его стоит проверять на совместимость с выбранным окружением рабочего стола.
Частые вопросы
Что лучше для VPS без видеокарты?
Начните с xrdp и XFCE. Это окружение проще по составу, потребляет меньше памяти и позволяет отключить компонование окон одной командой.
GNOME Remote Login имеет смысл выбирать, когда важен стандартный интерфейс Ubuntu и сервер располагает достаточным запасом ресурсов.
Сохранится ли сеанс после разрыва соединения?
В xrdp сеанс обычно сохраняется, а повторный вход с тем же разрешением возвращает в открытое окружение. В обновлённой Ubuntu 24.04 сохранение сеанса поддерживает и GNOME Remote Login.
После установки обновлений откройте несколько программ, отключите клиент и выполните повторный вход. Такая проверка надёжнее предположений по версии рабочего окружения.
Можно ли не открывать порт 3389 в интернет?
Да. Создайте SSH-туннель с локальной пересылкой 13389:127.0.0.1:3389 и подключайтесь к 127.0.0.1:13389.
В этом случае внешний межсетевой экран должен разрешать SSH, а отдельное правило для 3389/tcp не требуется.
Почему GNOME Remote Login запрашивает два пароля?
Первая пара учётных данных принадлежит службе RDP и задаётся через grdctl --system rdp set-credentials. Она защищает начальное подключение к системной службе.
Вторая пара принадлежит пользователю Linux и вводится на экране входа GNOME. Не используйте одинаковые пароли для этих этапов.
Заключение
Для лёгкого VPS практичнее xrdp с XFCE, а для привычного рабочего стола Ubuntu — GNOME Remote Login с актуальными обновлениями и файлом .rdp. В обоих случаях уменьшение разрешения, ограничение доступа к RDP и проверка сохранения сеанса дают больше пользы, чем простая смена протокола.