Ubuntu без монитора: настройка удаленного рабочего стола
В Ubuntu 26.04 пакет xrdp не запускает сеанс GNOME. Используйте встроенный режим Remote Login через grdctl для доступа к headless системе по протоколу RDP через порт 3389.
Использование удаленного рабочего стола Ubuntu без монитора
Чтобы использовать удаленный рабочий стол Ubuntu без монитора, включите GNOME Remote Desktop в режиме Remote Login. Режим Remote Login запускает отдельный сеанс GNOME с экрана входа в систему, поэтому машине не требуется подключенный дисплей или уже выполненный вход пользователя. Настройте это один раз через SSH с помощью grdctl, а затем подключайтесь из любого RDP-клиента (Remote Desktop Protocol) через порт 3389.
Это руководство предназначено для машин с Ubuntu Desktop без подключенного монитора, таких как домашний сервер или мини-ПК. Сначала рассматривается Ubuntu 26.04 LTS, затем описываются отличия для 24.04 LTS. Если ваша машина — это VPS (виртуальный выделенный сервер) с легковесным рабочим столом XFCE, для этого случая по-прежнему подходит xrdp, и в удаленном рабочем столе на Linux VPS с xrdp и XFCE приведено пошаговое руководство. Данное руководство не повторяет эту информацию.
Почему xrdp не работает с GNOME в Ubuntu 26.04
Многие устаревшие руководства предлагают устанавливать xrdp. В Ubuntu 26.04 это не приводит к запуску рабочего стола GNOME. Причина указана в примечаниях к релизу 26.04: GNOME Shell больше не может работать как сессия X.org, а сессия Ubuntu Desktop теперь функционирует только на базе Wayland. Поскольку xrdp работает только с Xorg, у него нет сессии GNOME для запуска.
Популярный скрипт установки xrdp с сайта c-nergy.be подтверждает это. Его версия 1.6, выпущенная в мае 2026 года, не устанавливает пакет xrdp, если обнаруживает рабочий стол GNOME без поддержки X11. Автор скрипта заявляет, что Ubuntu 26.04 с GNOME не поддерживается, и рекомендует пользователям GNOME использовать встроенное средство GNOME Remote Desktop.
Для других рабочих окружений выбор сохраняется. Согласно примечаниям к релизу, KDE на X11, Xfce, MATE, i3 и многие другие по-прежнему могут запускать сессию X.org, а приложения X11 продолжают работать через XWayland. Подробности о релизе см. в что изменилось в Ubuntu 26.04.1 и когда следует обновляться.
Desktop Sharing или Remote Login: что именно вам нужно?
GNOME Remote Desktop — это RDP-сервер, поставляемый вместе с GNOME. Разработчики выделяют три способа его запуска: удаленная помощь (remote assistance), headless-режим для одного пользователя и headless-режим удаленного входа (remote login). В приложении Settings представлены два из них под соответствующими названиями.
- Desktop Sharing — это удаленная помощь. Она дублирует сессию, которая уже запущена на машине. Вы видите тот же экран, что и человек, сидящий за компьютером.
- Remote Login — это headless-режим удаленного входа. Ваш RDP-клиент сначала отображает экран входа GDM (GNOME display manager), где вы авторизуетесь в новой сессии. Remote Login работает только через RDP, а не через VNC (virtual network computing).
Для машины без монитора вам нужен режим Remote Login. Desktop Sharing требует уже существующей сессии. После перезагрузки никто не выполнен вход в систему, поэтому Desktop Sharing нечего дублировать.
У Desktop Sharing есть еще одна ловушка. В документации по настройке указано, что в режиме удаленной помощи блокировка экрана также закрывает удаленное соединение. Поэтому, когда сессия на машине блокируется, ваше соединение Desktop Sharing разрывается. Remote Login не зависит от локальной сессии, поэтому он лучше подходит для машины, за которой никто не сидит.
Эти два режима также слушают разные порты. Согласно справке GNOME, Remote Login использует порт 3389. Desktop Sharing в таком случае использует другой порт, например 3390, поэтому вам может потребоваться указать этот порт в настройках клиента. В версии 46 сервера была добавлена обработка этого конфликта между системным демоном и демоном пользователя.
Проверка установленной версии
lsb_release -ds
apt-cache policy gnome-remote-desktopapt-cache policy должна вывести строку Installed: с указанием версии. По состоянию на 1 ноября 2026 года в репозитории обновлений Launchpad для версий 26.04 и 24.04 указаны 50.2-0ubuntu0.1 и 46.3-0ubuntu1.2 соответственно. Если Installed: возвращает (none), установите пакет:
sudo apt update
sudo apt install -y gnome-remote-desktopМажорная версия имеет значение, так как в grdctl произошли изменения между версиями 46 и 50. В приведенных ниже инструкциях указаны все различия.
Настройка удаленного входа по SSH в Ubuntu 26.04
Вам необходим SSH-доступ к серверу. Если SSH-сервер еще не запущен, подключите монитор и выполните sudo apt install -y openssh-server. Если у вас уже есть физический доступ к консоли, вы можете воспользоваться настройками из следующего раздела и пропустить эти команды.
Шаг 1: подтверждение учетной записи службы
grdctl --system не меняет настройки от имени вашего пользователя. В исходном коде 50.2 указано, что процесс перезапускает себя через pkexec --user gnome-remote-desktop, поэтому все считываемые им файлы должны быть доступны для чтения этой учетной записи. Проверьте наличие учетной записи:
id gnome-remote-desktopВы должны увидеть строку uid=. no such user означает, что пакет не установлен.
Шаг 2: создание TLS-сертификата
Для работы RDP в GNOME Remote Desktop требуются ключ и сертификат TLS (transport layer security). Разработчики рекомендуют создавать файлы для системной службы от имени пользователя gnome-remote-desktop. Это команда OpenSSL из официальной документации, которую нужно выполнить от имени этого пользователя:
sudo -u gnome-remote-desktop sh -c 'mkdir -p ~gnome-remote-desktop/.local/share/gnome-remote-desktop && openssl req -new -newkey rsa:4096 -days 720 -nodes -x509 -subj /C=SE/ST=NONE/L=NONE/O=GNOME/CN=gnome.org -out ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt -keyout ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.key'Сертификат действителен в течение 720 дней. Запишите эту дату, так как до истечения срока действия вам потребуется создать новый сертификат. Теперь укажите системному демону пути к обоим файлам:
sudo grdctl --system rdp set-tls-key ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.key
sudo grdctl --system rdp set-tls-cert ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crtШаг 3: установка учетных данных RDP
Это отдельные имя пользователя и пароль для RDP. Они не связаны с вашей учетной записью Linux. Удаленный пользователь сначала вводит эту общую пару, а затем входит в систему на экране GDM под своей учетной записью Linux. В версии 26.04 выполните set-credentials без аргументов: утилита считает имя пользователя и пароль из стандартного ввода, поэтому пароль не попадет в историю команд вашей оболочки:
sudo grdctl --system rdp set-credentialsШаг 4: включение RDP и запуск службы
sudo grdctl --system rdp enable
sudo systemctl enable --now gnome-remote-desktop.service
systemctl is-active gdm.serviceДокументация также рекомендует включить gdm.service, так как Remote Login перенаправляет вас на экран входа GDM. В Ubuntu Desktop GDM уже используется, поэтому последняя команда должна вывести active. Если этого не произошло, выполните sudo systemctl enable --now gdm.service.
Шаг 5: проверка состояния прослушивания портов
sudo grdctl --system status --show-credentials
systemctl is-active gnome-remote-desktop.service
sudo ss -tlnp | grep 3389grdctl --system status --show-credentials должен показать, что секция RDP включена на порту 3389, с указанием ваших TLS-файлов и имени пользователя. Без --show-credentials команда status по-прежнему выводит порт и TLS-файлы, но показывает имя пользователя как (hidden). Точные метки могут отличаться в зависимости от версии. systemctl is-active должен вывести active, а ss должен вывести одну строку LISTEN для порта 3389. Отсутствие вывода от ss означает, что порт не прослушивается, поэтому клиент получит отказ в соединении. Просмотрите журнал с помощью journalctl -u gnome-remote-desktop.service -n 50, чтобы выяснить причину.
Шаг 6: сохранение отпечатка сертификата
Сертификат является самоподписанным, поэтому при первом подключении RDP-клиент выдаст предупреждение. Выведите отпечаток сейчас и сравните его с тем, который показывает клиент, прежде чем подтвердить подключение:
sudo openssl x509 -in ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt -noout -fingerprint -sha256Некоторые клиенты отображают отпечаток SHA-1. В этом случае выполните ту же команду с флагом -sha1. Несовпадение отпечатков означает, что вы подключились не к своему серверу.
Путь к настройкам при наличии монитора
Если вы можете один раз подключить монитор, графический интерфейс позволяет настроить тот же режим. Справка GNOME предлагает следующий путь: откройте Settings, затем System, далее Remote Desktop и Remote Login. Нажмите Unlock, пройдите аутентификацию и включите переключатель Remote Login.
В разделе Login Details на этой странице отображаются имя пользователя и пароль, которые потребуются вашему клиенту. Параметр Verify Encryption показывает отпечаток сертификата для сверки. После завершения работы отключите монитор. Функция Remote Login продолжит работу, так как ей не требуется активная локальная сессия.
Функция Desktop Sharing находится на другой странице в разделе Remote Desktop. Включите Desktop Sharing, чтобы разрешить другим пользователям просматривать экран, и Remote Control, чтобы разрешить им управлять им. Используйте этот метод только при наличии активной сессии пользователя по причинам, указанным выше.
Что изменилось в Ubuntu 24.04
Функция Remote Login доступна и в 24.04. Разработчики upstream добавили headless remote login через GDM в версии 46.alpha, а в Noble поставляется версия 46.3. В релизе 46.2 также была исправлена уязвимость CVE-2024-5148, связанная с передачей управления от экрана входа в систему к пользовательской сессии, поэтому убедитесь, что apt-cache policy показывает обновленную версию, а не исходную 46.1.
Расположение настроек должно совпадать. В GNOME Settings 46 появилась страница Remote Login, старая страница Remote Desktop была переименована в Desktop Sharing, а Remote Desktop был перенесен в новую панель System. В Noble поставляется Settings 46.7. Не путайте Remote Login с Secure Shell в той же панели System: в Settings 46 переключатель SSH получил именно такое название, и это другая функция.
Самое большое отличие в командной строке — это set-credentials. В версии 46.3 эта команда требует указания имени пользователя и пароля в качестве аргументов. Она не запрашивает ввод. Сначала считайте пароль в переменную, чтобы он не попал в историю командной оболочки:
read -rsp 'RDP password: ' GRD_PASS; echo
sudo grdctl --system rdp set-credentials rdpuser "$GRD_PASS"
unset GRD_PASSВсе остальные команды из шагов для 26.04, приведенных выше, имеют тот же вид в 46.3: set-tls-key, set-tls-cert, enable и status. Однако в 24.04 отсутствуют три функции. Постоянные сессии удаленного входа (persistent remote login sessions) появились в версии 47, поэтому сборка 46.x их не поддерживает. Сохраняйте свою работу перед отключением и проверяйте, что происходит с сессией при повторном подключении. В версии 50 также добавили удаленный вход для headless-сессий с автологином GDM и аутентификацию Kerberos. В 24.04 ничего из этого нет.
Если вам нужен xrdp именно с GNOME, скрипт c-nergy отказывается работать только с GNOME 49 и новее, а в 24.04 используется GNOME 46. Это причина, по которой некоторые пользователи остаются на более старом релизе, а в возврате с Ubuntu 26.04 на 24.04 объясняется, чего на самом деле стоит такой переход.
Автоматический вход в систему: протестируйте перед использованием
Некоторые руководства рекомендуют включить автоматический вход в систему, чтобы у Desktop Sharing была сессия для трансляции после перезагрузки. В справке GNOME этот переключатель находится в разделе Settings, System, Users, Unlock, Automatic Login. На той же странице указано, что любой человек, включивший компьютер, получит доступ к вашей учетной записи и данным.
Существует и вторая причина для осторожности. В пользовательском режиме источник сохраняет учетные данные RDP для Desktop Sharing через libsecret в коллекции связки ключей по умолчанию. При автоматическом входе вы не вводите пароль при загрузке. Поэтому перезагрузите сервер и протестируйте подключение к Desktop Sharing, прежде чем оставлять его без присмотра. Для Remote Login это не требуется, так как он запускается с экрана входа в систему.
Почему порт 3389 никогда не должен быть открыт в интернет
Не перенаправляйте порт 3389 на домашнем маршрутизаторе. Публичный порт RDP постоянно подвергается попыткам входа со стороны посторонних, и единственным препятствием между ними и вашим экраном входа остается один пароль. Получайте доступ к машине через зашифрованный канал, который вы уже контролируете. Хорошо работают два варианта.
Вариант 1: SSH-туннель
Если вы уже можете подключиться к машине по SSH, перенаправьте локальный порт на порт RDP:
ssh -N -L 13389:127.0.0.1:3389 you@home-box-L перенаправляет локальный порт 13389 на порт 3389 на удаленной машине, а -N указывает SSH не выполнять удаленную команду, так как вам нужно только перенаправление. Держите этот терминал открытым. Укажите RDP-клиенту адрес 127.0.0.1:13389. Локальный порт выбран как 13389, а не 3389, потому что на компьютере с Windows, где включен собственный сервер Remote Desktop, порт 3389 уже занят. Извне должен быть доступен только SSH-порт.
Вариант 2: Tailscale
Tailscale объединяет обе машины в одну частную сеть, поэтому ни одной из них не требуется открытый порт на маршрутизаторе. Установите его на машину с Ubuntu, используя команды из документации Tailscale для Linux:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale ip -4Установите Tailscale также на свой клиентский компьютер, затем укажите RDP-клиенту адрес tailscale ip -4, который отобразится, на порту 3389. Если скрипт установки завершается с ошибкой, исправление ошибок установки Tailscale в Ubuntu поможет решить наиболее распространенные из них. Для этого вам не нужен Tailscale SSH. Tailscale SSH обслуживает только порт 22 и только на адресе Tailscale, а RDP — это отдельный порт.
Если на машине активен ufw, вы можете разрешить RDP только с интерфейса tailnet:
sudo ufw allow in on tailscale0 to any port 3389 proto tcpЗатем проверьте, что именно открыто, с помощью как просмотреть активные правила брандмауэра в Ubuntu. Порт 3389 не должен фигурировать в правиле, разрешающем доступ отовсюду.
При сбое подключения
Клиент сообщает, что в подключении отказано. На используемом порту ничего не прослушивается. Выполните sudo ss -tlnp | grep 3389 на сервере. Отсутствие вывода означает, что служба остановлена или RDP не включен, поэтому повторите шаг 4 и ознакомьтесь с journalctl -u gnome-remote-desktop.service -n 50. При использовании SSH-туннеля также убедитесь, что окно ssh -N все еще открыто.
Клиент дважды запрашивает пароль. Это нормальное поведение для Remote Login. Первый запрос относится к паре RDP, которую вы задали с помощью set-credentials. Второй — это экран входа GDM, требующий данные вашей учетной записи Linux. Ввод пароля Linux в первом запросе приведет к ошибке, так как это разные учетные данные.
Вы ожидали увидеть открытую сессию, но получили экран входа. Вы подключились к порту 3389, который принадлежит Remote Login. Desktop Sharing использует другой порт, когда включен Remote Login, поэтому проверьте порт, указанный на странице его настроек.
Desktop Sharing разрывает соединение через некоторое время. Сессия на сервере заблокировалась. В режиме удаленной помощи блокировка экрана закрывает удаленное соединение. Используйте Remote Login для сервера без подключенного монитора.
set-credentials завершается ошибкой в 24.04. Версия 46.3 требует оба аргумента. Используйте формат read -rsp из раздела для 24.04.
FAQ
Можно ли использовать xrdp с GNOME в Ubuntu 26.04?
Нет. В примечаниях к выпуску Ubuntu 26.04 указано, что GNOME Shell больше не может работать как сессия X.org, а xrdp работает только с Xorg. По этой причине установщик c-nergy.be отказывается устанавливать xrdp на GNOME 49 и более поздние версии. Используйте GNOME Remote Desktop с функцией Remote Login или используйте xrdp с графической оболочкой, которая по-прежнему поддерживает сессии X.org, например XFCE.
Работает ли удаленный рабочий стол Ubuntu без подключенного монитора?
Да, в режиме Remote Login. Разработчики называют это headless remote login: ваш RDP-клиент получает экран входа GDM, и вы авторизуетесь в новой сессии, поэтому локальный экран или уже вошедший в систему пользователь не требуются. Desktop Sharing работает иначе. Он дублирует уже запущенную сессию, поэтому после перезагрузки, когда никто не вошел в систему, транслировать нечего.
Какой порт использует GNOME Remote Desktop в Ubuntu?
Remote Login использует порт 3389 — стандартный порт RDP, который также является значением по умолчанию в исходном коде gnome-remote-desktop. Когда включен Remote Login, Desktop Sharing переходит на другой порт, например 3390, и вы указываете этот порт в своем клиенте. Команда sudo ss -tlnp на машине покажет, что именно прослушивает порты в данный момент.
Безопасно ли пробрасывать порт 3389 на маршрутизаторе?
Не делайте этого. Публичный порт RDP провоцирует попытки входа, и единственный общий пароль — это всё, что защищает ваш экран входа. Пробросьте локальный порт через SSH с помощью ssh -N -L 13389:127.0.0.1:3389 you@home-box или добавьте обе машины в Tailscale и подключайтесь к адресу Tailscale целевой машины через порт 3389.
Работает ли Remote Login в Ubuntu 24.04?
Да. Функция headless remote login появилась в gnome-remote-desktop 46, а в Ubuntu 24.04 поставляется версия 46.3. Основное различие заключается в том, что grdctl --system rdp set-credentials в версии 46.3 требует имя пользователя и пароль в качестве аргументов, в то время как в 26.04 их можно передавать через стандартный ввод. Постоянные сессии удаленного входа появились только в версии 47, поэтому сохраняйте свою работу перед отключением в 24.04.