−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS
Начать

Как поставить рабочий стол на Linux VPS и подключаться через Удалённый рабочий стол (XFCE + xrdp)

Графический рабочий стол на VPS с Ubuntu 24.04, который открывается обычным приложением «Удалённый рабочий стол»: XFCE и xrdp, две настройки по умолчанию, которые всё ломают (не та сессия, нет TLS), и схема, где порт 3389 вообще не смотрит в интернет. С замерами места на диске и памяти на сессию.

У Linux-сервера нет экрана, и обычно он ему не нужен. Но бывает иначе: браузер, который должен работать с адреса самого сервера, инструмент только с графическим интерфейсом или рабочий стол, который можно оставить включённым и вернуться к нему с любого компьютера. Это руководство добавляет в Ubuntu 24.04 лёгкий рабочий стол XFCE и xrdp, чтобы открывать его тем же приложением «Удалённый рабочий стол», что и Windows-сервер.

Мы проверили каждый шаг на нашем образе Ubuntu 24.04. Две настройки по умолчанию сломали первую попытку, и ниже мы исправляем обе. Понадобится обычный пользователь с sudo — его создаёт руководство по настройке Ubuntu. В примерах он называется deploy.

1. Установите XFCE и xrdp

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

На нашем сервере с 2 ГБ это заняло около четырёх с половиной минут и 1,7 ГБ диска (было занято 2,7 ГБ, стало 4,4 ГБ). Ставится xrdp 0.9.24, он сразу запускается и слушает порт 3389.

2. Пусть xrdp запускает XFCE, а не GNOME

Войдите под пользователем, который будет работать за рабочим столом, и выполните:

echo xfce4-session > ~/.xsession

Без этого файла наш первый вход запустил GNOME вместо XFCE, и сессия сразу упала с «Oh no! Something has gone wrong». Пакеты из шага 1 заодно ставят менеджер сеансов GNOME, и Ubuntu делает его вариантом по умолчанию. С ~/.xsession xrdp запускает XFCE.

3. Дайте xrdp использовать TLS

xrdp работает от собственного пользователя xrdp, и этот пользователь не может прочитать закрытый ключ сервера. Первое подключение у нас прошло, но /var/log/xrdp.log показал, почему ему не стоит доверять:

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

Без ключа xrdp откатывается на старое шифрование RDP вместо TLS. Дайте ему доступ и перезапустите:

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

Следующее подключение в нашем журнале выглядело как TLS connection established ... TLSv1.3. Свой сервер можно проверить так же:

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. Не выпускайте порт 3389 в интернет

После установки xrdp слушает на всех адресах. В отличие от Windows, в xrdp нет Network Level Authentication, поэтому любой, кто дотянется до порта, получит экран входа, на котором можно подбирать пароли. Пусть он слушает только на самом сервере:

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

В последней строке должно быть 127.0.0.1:3389. В нашем тесте прямое подключение к адресу сервера на 3389 после этого отклонялось, а туннель из следующего шага продолжал работать.

5. Подключайтесь через SSH

На своём компьютере откройте туннель. В Windows та же команда ssh есть в PowerShell:

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

На тарифе с NAT добавьте -p и персональный SSH-порт из кабинета. Не закрывайте это окно. Затем направьте приложение удалённого рабочего стола на localhost:13389 и войдите как deploy с паролем этого пользователя:

  • Windows: «Подключение к удалённому рабочему столу» (mstsc).
  • macOS: Windows App из App Store.
  • Linux: Remmina или xfreerdp /v:localhost:13389 /u:deploy.

Локальный порт 13389, а не 3389, потому что 3389 на вашем компьютере может уже занимать его собственный удалённый рабочий стол. В первый раз приложение предупредит о незнакомом сертификате. Это самоподписанный сертификат сервера, а соединение и так зашифровано внутри SSH.

6. Что вы получите

Вы получите рабочий стол XFCE с панелью, файловым менеджером и терминалом. На нашем сервере одна сессия добавила около 360 МБ памяти: 388 МБ занято до подключения и 747 МБ во время сессии.

Если закрыть окно удалённого рабочего стола, выхода из системы не будет. В нашем тесте долгая команда продолжала работать после отключения. Когда мы подключились снова, xrdp вернул нас в ту же сессию (reconnected session ... display :10 в его журнале). Чтобы действительно завершить сессию, нажмите Log Out в меню XFCE.

Какой тариф

Рабочему столу важнее память, чем процессор. Micro (2 vCPU, 2 ГБ, 25 ГБ, $5/мес) спокойно тянет XFCE и лёгкие инструменты. Если в сессии будет постоянно открыт браузер, берите Small с 4 vCPU и 4 ГБ за $8/мес. Оба тарифа с NAT, и здесь это не мешает: удалённый рабочий стол идёт через ваш SSH-порт.

Если на самом деле нужны программы для Windows, их напрямую запустит Windows VPS, а Windows-Small стоит от $11/мес. Ubuntu 24.04 есть на странице Ubuntu VPS и на всех Linux-тарифах в разделе VPS. Оплата в USDT, USDC или ETH в сетях Base, Ethereum или Polygon.

Частые вопросы

Можно подключаться обычным приложением «Удалённый рабочий стол» из Windows?

Да. xrdp говорит на протоколе RDP, поэтому подходят встроенное «Подключение к удалённому рабочему столу» в Windows, Windows App на macOS и Remmina или xfreerdp в Linux. Вы подключаетесь к localhost через SSH-туннель, а не к адресу сервера.

Это работает на тарифе с NAT?

Да. RDP-соединение идёт внутри SSH, а SSH — как раз тот единственный порт, который тариф с NAT пробрасывает на ваш сервер. Эту схему мы советуем на любом тарифе, потому что порт 3389 остаётся закрытым для интернета.

Сколько памяти занимает рабочий стол?

На нашем тестовом сервере одна сессия XFCE добавила около 360 МБ: занятая память выросла с 388 МБ до 747 МБ. Тарифа Micro на 2 ГБ хватает для рабочего стола и лёгких инструментов. Если в сессии будет работать браузер, удобнее 4 ГБ.

Вижу чёрный экран или «Oh no! Something has gone wrong». В чём дело?

xrdp запустил GNOME вместо XFCE. Пакеты из шага 1 заодно ставят менеджер сеансов GNOME, и Ubuntu делает его системным по умолчанию. Создайте ~/.xsession со строкой xfce4-session для пользователя, который входит, и подключитесь снова.

Можно ли входить по RDP как root?

По умолчанию xrdp это разрешает (AllowRootLogin=true в /etc/xrdp/sesman.ini), но лучше входить обычным пользователем с sudo. Чтобы запретить root, поставьте AllowRootLogin=false и перезапустите xrdp.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.