−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.

Коментарі

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

Залишити коментар

Коментарі проходять модерацію перед публікацією.