RDP позволяет подключаться к графическому сеансу Ubuntu из клиента Windows, macOS или Remmina. Есть два подхода:
- Встроенный GNOME Remote Desktop с RDP на десктопных Ubuntu. Просто включается в настройках, использует текущий сеанс.
- Пакет xrdp на серверах и headless-узлах. Создаёт отдельный Xorg-сеанс, не требует активного монитора.
Безопасность сначала:
- Сразу ограничьте доступ к порту 3389 через UFW по своим IP или туннелируйте через SSH.
- Ставьте длинные пароли, отключайте «гостевой» доступ и не публикуйте 3389 в интернет без фильтров.
Вариант A. Встроенный RDP в Ubuntu Desktop (GNOME)
Подходит для Ubuntu Desktop 22.04 и 24.04 с окружением GNOME. Включается через графические настройки, работает поверх текущего пользовательского сеанса.
Шаг 1. Убедитесь, что служба доступна и включите доступ
- Откройте «Настройки» → «Общий доступ».
- Включите общий доступ.
- Зайдите в «Удалённый рабочий стол»:
- Включите «Удалённый рабочий стол».
- Включите «Разрешить удалённые подключения».
- Установите «Имя пользователя и пароль» для входа по RDP.
- При необходимости включите «Разрешить управление» (не только просмотр).
Шаг 2. Разрешите порт в UFW только для своих адресов
sudo ufw allow from 203.0.113.5 to any port 3389 proto tcp comment 'RDP GNOME'
sudo ufw status verbose
Если тестируете в локальной сети, временно можно:
sudo ufw allow 3389/tcp comment 'RDP test'
Шаг 3. Подключение
- В Windows откройте «Подключение к удалённому рабочему столу», введите IP Ubuntu.
- Введите заданные в настройках GNOME логин/пароль.
- Если картинка «пустая», убедитесь, что пользователь залогинен локально и экран разблокирован, либо используйте xrdp (ниже), чтобы создавать отдельные сеансы.
Шаг 4. Снятие ограничений и защита
- По завершении тестов сузьте правила UFW до нужных IP.
- Отключите доступ, если не используете длительно, в «Удалённый рабочий стол».
Когда выбирать GNOME RDP
- Нужен доступ к уже запущенным приложениям пользователя.
- Машина с подключенным монитором и стандартной Ubuntu Desktop.
Вариант B. xrdp для серверов и headless-узлов (рекомендуется на VPS)
xrdp поднимает RDP-совместимый сервер и создаёт отдельный Xorg-сеанс при подключении. Работает на VPS и «голых» серверах без монитора.
Шаг 1. Поставьте графическую оболочку (если это сервер) и xrdp
Полноценный GNOME (удобно, но тяжеловесно):
sudo apt update
sudo apt install -y ubuntu-desktop-minimal xrdp
Лёгкая XFCE (быстро и экономно по ресурсам):
sudo apt update
sudo apt install -y xrdp xfce4 xfce4-goodies
echo 'startxfce4' | sudo tee /etc/skel/.xsession >/dev/null
Примечание: строка в /etc/skel/.xsession автоматически появится у новых пользователей. Для уже существующего пользователя создайте ~/.xsession вручную:
echo 'startxfce4' > ~/.xsession
Шаг 2. Добавьте xrdp в группу сертификатов и включите сервис
sudo adduser xrdp ssl-cert
sudo systemctl enable --now xrdp
sudo systemctl status xrdp --no-pager
Шаг 3. Откройте порт RDP в UFW и сразу сузьте по IP
sudo ufw allow from 203.0.113.5 to any port 3389 proto tcp comment 'RDP xrdp'
sudo ufw status numbered
Для первичного теста в закрытом стенде можно:
sudo ufw allow 3389/tcp comment 'RDP test'
Шаг 4. Настроить рабочую сессию
Если используете GNOME, создайте файл ~/.xsession:
echo 'gnome-session --session=ubuntu' > ~/.xsession
Для XFCE файл уже создан выше. Убедитесь, что он существует у нужного пользователя:
ls -l ~/.xsession
Шаг 5. Перезапуск и подключение
sudo systemctl restart xrdp
- Подключайтесь клиентом RDP к IP сервера.
- Вводите системное имя пользователя и пароль (те же, что для входа в Ubuntu).
Шаг 6. Диагностика типичных проблем
- Чёрный экран или мгновенный выход:
- Убедитесь, что установлен xorgxrdp (ставится вместе с xrdp).
- Проверьте, что в домашнем каталоге есть корректный ~/.xsession с gnome-session --session=ubuntu или startxfce4.
- Посмотрите логи:sudo tail -n 200 /var/log/xrdp.log
sudo tail -n 200 /var/log/xrdp-sesman.log
- Спрашивает «аутентификацию админа» при старте приложений:
- Установите агент polkit для сеанса:
sudo apt install -y policykit-1-gnome
- Нужна смена порта RDP:
sudo sed -i 's/^port=.*/port=3390/' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
sudo ufw allow 3390/tcp comment 'RDP alt port'
Режим «только через SSH-туннель» (самый безопасный)
Оставьте RDP слушать только 127.0.0.1 и прокидывайте локальный порт через SSH.
Шаг 1. Ограничьте xrdp на localhost:
sudo sed -i 's/^address=.*/address=127.0.0.1/' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
Шаг 2. Туннель с вашей рабочей машины:
ssh -L 3389:127.0.0.1:3389 user@IP_сервера
Теперь подключайтесь клиентом RDP к 127.0.0.1:3389. В UFW порт 3389 можно не открывать наружу.
Контрольная проверка
Проверка порта:
ss -ltnp | grep 3389 || sudo lsof -iTCP:3389 -sTCP:LISTEN
Проверка UFW:
sudo ufw status verbose
Проверка службы:
systemctl is-active xrdp && echo OK || echo FAIL
Рекомендации по безопасности
- Разрешайте RDP только с белых IP или через SSH-туннель.
- Отключайте правило, когда доступ не нужен:
sudo ufw delete allow 3389/tcp
- Используйте длинные пароли и при возможности отдельного пользователя для RDP-сеансов.
- Включите логирование UFW:
sudo ufw logging medium
Итог
- Для десктопной Ubuntu включите «Удалённый рабочий стол» в GNOME, откройте 3389 в UFW для своих IP и подключайтесь штатным RDP-клиентом.
- Для серверов и VPS используйте xrdp: установите окружение (GNOME или XFCE), создайте ~/.xsession, добавьте xrdp в ssl-cert, откройте порт из доверенных подсетей.
- Максимальная защита достигается при работе RDP через SSH-туннель без публикации порта наружу.