Функція віддаленого робочого столу дозволяє підключитись до віддаленого комп'ютера або віртуальної машини через мережу. Це доволі зручно, але донедавна в Ubuntu з цим було не все так просто. Вбудована програма віддаленого робочого столу не підтримувала створення нових сесій, а більшість сторонніх програм не працювали якщо використовується Wayland, були пропрієтарними, або використовували сторонній сервер для зв'язку.
У Gnome 46 вбудований сервіс Gnome Remote Desktop отримав оновлення та можливість створювати нові сесії. Це дозволяє використовувати його як заміну x11vnc або xrdp, і в цій статті ми розглянемо як це все налаштувати. Я розглядатиму все на прикладі Ubuntu 24.10, оскільки вона постачається з GNOME 47 і містить найсвіжішу імплементацію Gnome Remote Desktop, але ці інструкції мають працювати і для Ubuntu 24.04.
Зміст
- Як це працювало раніше?
- Як це працює зараз?
- Як налаштувати віддалений робочий стіл
- Налаштування брандмауера
- Висновки
Як це працювало раніше?
Коли я тільки почав користуватись Linux, був дуже популярним сервіс x11vnc, який запускався від імені користувача і дозволяв підключитися до активної сесії віддалено. Вам було достатньо налаштувати пароль для підключення та запустити x11vnc в терміналі або через автозапуск. Потім ви могли підключитися до такого комп'ютера за допомогою клієнта VNC, просто вказавши налаштований пароль та ім'я користувача. Якщо на комп'ютері вже була активна сесія, ви підключалися до неї. Якщо ні, ви бачили екран входу в систему, на якому могли авторизуватися.
Також тоді існував сервіс XRDP, який мав більше можливостей і дозволяв вам просто вводити при підключенні ім'я користувача та його пароль у системі, до якої потрібно підключитися. Після цього для вас створювалася нова сесія, в якій ви могли працювати віддалено. Але за допомогою XRDP ви не могли підключитися до вже запущеної сесії, принаймні за замовчуванням.
У Gnome було реалізовано власний сервіс віддаленого робочого столу - Gnome Remote Desktop (g-r-d). Але до недавнього часу в ньому було досить складно повторити функціональність x11vnc і тим більше XRDP. Ви могли налаштувати логін і пароль для авторизації в налаштуваннях, і якщо на комп'ютері вже була активна сесія, то ви могли до неї підключитися, використовуючи цей логін і пароль. Якщо активної сесії не було, то і підключитися ви не могли. Також якщо у сесії заблокований екран, то ви теж отримали б помилку. Фактично для того щоб ви могли підключитися до віддаленого комп'ютера, за ним повинна була бути людина, яка б увімкнула сервіс, розблокувала екран і повідомила вам пароль. Дещо з цього можна було виправити розширеннями GNOME, але далеко не все.
Як це працює зараз?
У Gnome 46 для Gnome Remote Desktop було додано функцію віддаленого входу. Тепер вбудована служба віддаленого робочого столу складається з двох служб. Обидві використовують протокол RDP. Перша виконується від імені суперкористувача і відповідає за створення віддалених сесій, підключення до них та використовує за замовчуванням порт 3389. А друга виконується від імені користувача, для локальної сесії, і дозволяє підключитися до активної сесії користувача, як це працювало раніше, та використовує порт 3390. Фактично, якщо вам потрібно підключитися до віддаленого комп'ютера без участі користувача за цим комп'ютером, ви використовуєте першу службу. Важливо зазначити, що це окремі служби і вам не обов'язково налаштовувати обидві. Якщо потрібно допомогти користувачеві зробити щось у його сесії - тоді друга служба. У другій службі логіка роботи практично не змінилася.
Сервіс віддаленого входу реалізований досить цікаво і чимось нагадує XRDP. При підключенні ви використовуєте налаштовані логін та пароль і потрапляєте на екран входу GNOME. Тут ви можете обрати потрібного користувача та ввести його пароль:
Далі створюється або відкривається вже наявна віддалена сесія і ви отримуєте над нею контроль:
Якщо ви від'єднаєтесь, а потім захочете приєднатися знову, то вам знову потрібно буде повторити процедуру авторизації, але ви потрапите в ту саму сесію з усіма активними програмами. Декілька користувачів можуть авторизуватися та працювати у віддалених сесіях одночасно. Але є обмеження: один користувач - одна сесія - одне підключення. Якщо підключитесь до вже активної віддаленої сесії, то попереднє підключення буде перервано. Якщо для користувача вже запущена локальна сесія, то віддалена сесія створена не буде, актуально і навпаки. В цілому це логічно, тому що вам не потрібно думати як підключитися до раніше створеної сесії, а для підключення до локальних сесій існує окремий сервіс.
Як налаштувати віддалений робочий стіл
А тепер давайте розглянемо як налаштувати віддалений робочий стіл в Ubuntu 24.04 або 24.10 за допомогою сервісу g-r-d.
Віддалений доступ до активної сесії
Спочатку відкрийте Settings, потім перейдіть до розділу System та оберіть Remote Desktop:
Далі вам потрібна вкладка Desktop Sharing. Тут потрібно увімкнути перемикачі навпроти Desktop Sharing та Remote Control. Далі ви можете вказати логін та пароль для авторизації у розділі Login Details. Причому якщо не налаштуєте свої дані входу, то програма використовуватиме логін вашого користувача та згенерує випадковий пароль. У розділі How to Connect ви можете бачити порт, що використовується, та ім'я хоста.
Якщо вам потрібно підключитись за IP адресою, а не ім'ям хоста, то IP комп'ютера можна дізнатися виконавши команду:
ip -br a
Тепер ви можете закрити програму налаштувань. Ви можете переконатися, що все працює, перевіривши чи запущено сервіс gnome-remote-desktop для вашого користувача:
systemctl status --user gnome-remote-desktop
Далі використовуєте ці дані на іншому комп'ютері, щоб підключитись віддалено до цього, наприклад, за допомогою програми Connections. Наприклад, якщо у комп'ютера, до якого ви хочете підключитись, IP адреса 192.168.124.156, то вкажіть у Connections такий рядок 192.168.124.156:3390:
Після введення логіну та паролю, якщо вони були вказані вірно, перед вами одразу відкриється віддалений робочий стіл.
Віддалений вхід
Відкрийте Settings, потім перейдіть до розділу System та оберіть Remote Desktop. Цього разу вам потрібна вкладка Remote Login. Тут потрібно натиснути кнопку Unlock та ввести пароль вашого користувача для того, щоб отримати можливість змінювати системні налаштування:
Потім увімкніть перемикач навпроти Remote Login та вкажіть логін і пароль для авторизації у розділі Login Details:
Після цього закрийте програму налаштувань та перезавантажте комп'ютер. Ви можете переконатись, що сервіс працює, виконавши команду:
sudo systemctl status gnome-remote-desktop
Це все, тепер можна переходити до підключення. Розглянемо приклад підключення за допомогою програми Connections. Якщо IP адреса комп'ютера до якого підключаємось 192.168.124.156, то в поле адреси потрібно ввести 192.168.124.156:3389:
Потім потрібно ввести логін та пароль, налаштовані в розділі Login Details:
Далі потрібно обрати користувача, від імені якого ви бажаєте увійти:
І залишається тільки ввести пароль цього користувача:
Після чого програма перенаправить вас на віддалений робочий стіл:
Налаштування брандмауера
Якщо ви використовуєте gnome-remote-desktop на сервері з увімкненим брандмауером, то для того щоб підключення працювало потрібно додати правила, які дозволяють підключення до портів 3389 та 3390. Для цього виконайте:
sudo ufw allow 3389
sudo ufw allow 3390
Висновки
У цій статті ми розглянули як увімкнути віддалений робочий стіл в Ubuntu 24.04 або 24.10 штатними засобами в GNOME. Було показано як підключитися до активної сесії користувача, а також як створювати віддалені сесії.
Ця функціональність з'явилася нещодавно, в Ubuntu 24.04, тому можуть траплятися ще деякі баги. Але це початок і з часом ми отримаємо повноцінний віддалений робочий стіл з підтримкою Wayland та всіма необхідними функціями, які є в XRDP. Наприклад, в Ubuntu 24.10 було додано підключення до раніше створеної віддаленої сесії після від'єднання, також, найімовірніше, в наступному релізі замість імені хоста показуватиметься IP адреса в налаштуваннях віддаленого з'єднання, що зробить підключення зручнішим.




















Спасибо за обзор! неужели теперь можно стандартными инструментами подключиться с винды в убунту? Кайф
Дело обстоит много интереснее, когда нужно подключиться к машине, не настроенной предварительно, или даже не оснащенной монитором (т.н. headless), вроде облачного сервера. И в Gnome Remote Desktop такой сценарий предусмотрен, но уже через командную оболочку посредством SSH. Материал можно дополнить!
Не могли бы сообщить как это делается?
Вот это перерыв!
Хорошо, что сайт ожил!
Ура! Вернулся. Это праздник!
Вновь отличная статья. Всё подробно, понятно с отличными скриншотами и прекрасным литературным русским языком. Но главное конечно: "Наконец-то он вернулся! Мы так соскучились!".
Каноникал, прямо сказать, нужную вещь запилил в 22.04. В 24.04 довели до ума.
Теперь задача со * как то же самое запилить в системе с другой средой - МАТЕ или, скажем CINNAMON. Этого добра там нет. В смысле оно, вероятнее, где-то надежно упрятано.
Собственный опыт на синнамоне успехом (пока что) не увенчался. Если у кого будет положительный результат в мате и синнамон -- делитесь.
Всё работает, но заходя по rdp с разных устройств и в живую закрываются все приложения юзера, юзер один. "Удаленный вход невозможен, потому что локальный сеанс уже запущен...Принудительная остановка приведет к завершению всех запущенных..." Поведайте секрет - Как правильно входить/выходить, чтобы приложения и процессы не закрывались?
Если я правильно понял вопрос, вы пытаетесь одноврменно подключится с нескольких устройств к одной сессии пользователя. На данный момент для удаленного входа есть ограничение: один пользователь - одна сессия, не важно локальная она или удаленная. Возможно это изменится в следующих версиях и появится возможность перехватывать управление, но пока этого нет и нужно только завершать сессию чтобы создать новую. Пока остается только использовать Desktop Sharing если нужно подключится к активной локальной сессии как это делалось раньше.
Нет, не одновременно. Подключился - запустил программу - закрыл окно RDP. Подключаюсь заново, с того же устройства и логина - "Удаленный вход невозможен, потому что локальный сеанс уже запущен...Принудительная остановка приведет к завершению всех запущенных..."
Вот как подключится к существующему сеансу? Согласие на принудительную остановку приводит к закрытию работающих программ, именно в этом проблема. Закрывает старый сеанс и открывает новый.
Даже при физическом входе на комп, после подключения удаленного, то же самое - "Вход в систему невозможен, так как для пользователя User уже запущен удаленный сеанс."
Какую версию GNOME/Ubuntu вы используете?
GNOME Shell 46.0
Description: Ubuntu 24.04.1 LTS
Release: 24.04
С тем, что вы не можете авторизоваться от имени пользователя для которого уже запущена удаленная сессия локально ничего не сделать. Пока это так роботает. Но со входом в ранее закрытую удаленную сессию удаленно в Ubuntu 24.04 были проблемы, и они были исправлены в GNOME 47 (Ubuntu 24.10).
Добрый день!
Спасибо за статью!
Использую Ubuntu 24.04.1 LTS
Как было написано в статье, включил удаленный вход. Перезагрузил компьютер, но удаленный рабочий стол не работает пока я локально не зайду на комп, что неудобно.
Подскажите почему удаленный вход работает только после локального входа в систему?
Здравствуйте. Я не знаю. Удаленный вход должен работать даже если вход в систему не выполнен и в 24.04 и 24.10. Если не работает значит что-то не так. Убедитесь что сервис gnome-remote-desktop запущен не только для пользователя но и для системы. Возможно есть какие-нибудь ошибки в логах.
Все работает отлично, только в удаленном сеансе под юзером не работает Рутокен, всталенный в удаленный сервер? (
А так хотелось запустить сделать терминальный сервер для 1С))
Возможно кто-то знает как решить проблему?
Множественное подключение по RDP, возможно только если сервер приобретен стакой функцией, либо использовать RDP Wrapper.
ну 1с у меня там запустилась. Но вообще непонятно с подключениями - удаленно я смог подключиться только с 1ого компа только через реммину. Еще с 2х не могу никак - ни через реммину, ни через connections ни через xfreerd
После перезагрузки пароль на удаленку автоматически меняется. бред какой-то
Все отлично, но есть одно большое НО, которое портит всю радость от использования сервиса: при подключении используется софтовый рендер ( renderer: llvmpipe (LLVM 20.1.8 256 bits) ) вместо аппаратной видеокарты. Каждый сеанс довольно сильно нагружает процессор.
Победить данную проблему на текущий момент никак не удается.