Главная >> Инструкции >> Удаленный рабочий стол в Ubuntu 22.04

Удаленный рабочий стол в Ubuntu 22.04

Функция удаленного рабочего стола позволяет подключаться к компьютеру и управлять им удаленно. Например, вы можете подключиться к своему рабочему компьютеру, когда находитесь дома, или подключиться к удаленной рабочей станции, которая доступна только в вашей рабочей сети.

В этой статье я покажу, как включить удаленный рабочий стол в Ubuntu 22.04, 23.04 или 23.10. Текущая реализация удаленного рабочего стола имеет некоторые ограничения из-за Wayland, но она вполне пригодна для использования.


Содержание статьи

Что нужно знать?

Исторически существует два наиболее популярных протокола удаленного рабочего стола: VNC и RDP.

  • VNC расшифровывается как Virtual Network Computing. Эта технология была создана компанией Olivetti & Oracle Research Lab в 1999 году, а ее исходный код доступен по лицензии GPL. Она поддерживается всеми современными операционными системами.
  • RDP означает Remote Desktop Protocol. Это проприетарный протокол, который был разработан компанией PictureTel в 1998 году, а затем куплен и популяризирован Microsoft в ОС Windows. Между тем, существует также свободная реализация протокола RDP с открытым исходным кодом, которая активно поддерживается и носит название FreeRDP.

В Ubuntu есть несколько различных инструментов, реализующих эти протоколы, например x11vnc, realvnc, xrdp и т. д. Все эти серверы и клиенты работают с Xorg. Однако в настоящее время большинство дистрибутивов переходят на протокол дисплейного сервера Wayland вместо Xorg. Это новый протокол с другой архитектурой, поэтому большинство инструментов Xorg не совместимы с Wayland.

На данный момент единственным способом использования удаленного рабочего стола в Ubuntu и Wayland через локальную сеть является служба Gnome Remote Desktop, или G-R-D. Сокращение по первой букве каждого слова в названии сервиса широко используется разработчиками GNOME, и я буду использовать его в этой статье. Этот сервис позволяет вам делиться экраном по протоколу RDP, используя бэкенд FreeRDP. Он не поддерживает все функции, которые были доступны в устаревших инструментах, но он по-прежнему активно развивается.

Например, он поддерживает подключение только к существующим сессиям и не поддерживает протокол VNC. Протокол VNC помечен как устаревший, и начиная с Ubuntu 22.10 нет возможности включить его в графическом интерфейсе или в командной строке. Однако этот инструмент активно поддерживается, и рано или поздно он сможет создавать новые сессии. Вы можете следить за состоянием функции создания новых сессий в этом выпуске. Функция VNC, похоже, вообще не поддерживается. Вы можете прочитать обсуждение этого здесь.

В любом случае, эта служба предоставляется нативно в GNOME, так что вам не нужно устанавливать дополнительные инструменты, и вы можете получить удаленный доступ к рабочему столу Ubuntu как из Windows, так и из Linux, поскольку служба использует протокол RDP, совместимый с Microsoft RDP.

Как включить удаленный рабочий стол в Ubuntu 22.04 GUI

Управлять настройками удаленного рабочего стола можно с помощью приложения Ubuntu Settings или инструмента grdctl в командной строке. Однако первое включение лучше выполнить с помощью графического интерфейса, поскольку необходимо создать ключи для FreeRDP, а в графическом интерфейсе это сделать гораздо проще, чем в командной строке.

1. Активация удаленного рабочего стола

Откройте Settings -> Sharing -> Remote Desktop.

Затем включите переключатели Remote Desktop и Remote Contol:

В разделе Authentication вы можете просмотреть или изменить имя пользователя и пароль:

2. Проверка состояния службы G-R-D

После этого вы можете убедиться, что служба gnome-remote-desktop запущена, выполнив следующую команду:

systemctl status --user gnome-remote-desktop

А затем убедитесь, что служба ожидает подключения на порту 3389:

ss -tulpn | grep 3389

3. Установка расширения Allow Locked Remote Desktop Extension

Если сессия заблокирована, вы не сможете к ней подключиться. Чтобы исправить это, можно установить расширение Allow Locked Remote Desktop.

4. Включение автоматического входа

Вы не сможете удаленно подключиться, если нет активных пользовательских сессий. Пока эта функция не появится в Gnome, все, что вы можете сделать, это включить автологин. Откройте приложение Settings, перейдите в раздел Пользователи и нажмите Unlock:

Затем введите пароль и включите переключатель Automatic Login:

Теперь вы можете подключиться к своему ПК с удаленного компьютера, используя логин и пароль.

5. Установка пустого пароля для связки ключей

Gnome Remote Desktop хранит логин и пароль для удалённого входа в GNOME Keyring. Если у вас включён автоматический вход, то GNOME Keyring не будет разблокирован, следовательно данные входа будут не доступны и G-R-D не сможет принимать подключения. Для того чтобы это исправить откройте главное меню и запустите утилиту SeaHourse. Ещё она может называться Passwords and Keys:

Откройте контекстное меню для пункта Login и выберите Change Password:

Затем введите текущий пароль (обычно совпадает с паролем пользователя):

На следующем шаге нажмите Enter для того чтобы пароль остался пустым:

После этого подтвердите что действительно хотите оставить пароль пустым, и повторите всё выше перечисленное для Default Keyring если такой пункт у вас есть. Теперь вы можете подключится к своему ПК удалённо используя настроенные ранее логин и пароль.

6. Изменение пароля в командной строке

Пароль для удаленного рабочего стола создается случайным образом. Это очень удобно, если вы хотите предоставить кому-то доступ к своему компьютеру, чтобы помочь вам решить какую-то проблему и т. д. Но если вы хотите использовать функцию удаленного рабочего стола для доступа к вашему удаленному серверу, вам нужно иметь возможность изменить пароль в командной строке. И это возможно с помощью команды grdctl. Команда имеет следующий синтаксис:

grdctl options command

Например, вы можете получить текущее состояние с помощью команды status:

grdctl status

Для просмотра текущего имени пользователя и пароля запустите команду grdctl с опцией --show credentials:

grdctl status --show-credentials

Также вы можете установить пароль с помощью grdctl через SSH. Например:

grdctl rdp set-credentials losst new_password

После этого вы сможете удаленно подключаться, используя пароль "new_password".

Как включить удаленный рабочий стол в командной строке (альтернативный способ)

Вы можете настроить Gnome Remote Desktop в командной строке. Однако вам все равно понадобится запущенная сессия GNOME. Я нашел этот метод на Reddit и добавил некоторые изменения. Тем не менее, вы можете проверить оригинальный пост здесь, если что-то изменилось. Все команды в этом разделе предназначены для выполнения через SSH.

1. Включение автоматиченского входа

Если нет активных сессий, можно включить автологин в /etc/gdm3/custom.conf. Здесь вам нужно установить true в AutomaticLoginEnable, а затем указать своего пользователя в опции AutomaticLogin. Например, если ваше имя пользователя losst, конфигурация будет выглядеть следующим образом:

/etc/gdm3/custom.confAutomaticLoginEnable = true AutomaticLogin = losst

2. Разблокировка сессии

После этого вы можете перезагрузить ваш удаленный сервер и затем снова войти в систему с помощью SSH. Список активных сессий можно получить с помощью следующей команды:

sudo loginctl list-sessions

Если сессия заблокирована, ее необходимо разблокировать. В предыдущем примере сессия пользователя с именем losst находится на TTY2 и имеет ID 1:

sudo loginctl unlock-session 1

Проверить, заблокирована сессия или нет, можно с помощью следующей команды:

sudo loginctl show-session 1 | grep Locked

3. Разблокировка Gnome Keyring

Gnome Remote Deskop хранит пароли в Gnome Keyring. Поэтому перед выполнением любых команд, связанных с удаленным рабочим столом, его необходимо разблокировать. Сначала остановите gnome-keyring-daemon, запущенный с помощью systemd:

systemctl --user stop gnome-keyring-daemon

Ещё вы можете остановить все запущенные процессы этого сервиса с помощью killall:

killall -TERM -u "$(whoami)" gnome-keyring-daemon

Затем, выполните следующую команду, введите свой пароль, и нажмите два раза сочетание клавиш Ctrl+D:

gnome-keyring-daemon --unlock

Или же вы можете передать пароль с помощью echo:

echo -n "password" | gnome-keyring-daemon --unlock

После этого вы можете убедится что связка ключей разблокирована с помощью busctl:

busctl --timeout=10 --user get-property org.freedesktop.secrets /org/freedesktop/secrets/collection/login org.freedesktop.Secret.Collection Locked

Команда должна вывести false если всё прошло успешно. Если вы ввели пароль неверно, то в файле /var/log/auth.log появится сообщение об ошибке:

Однако здесь есть неочевидный баг. Команда gnome-keyring-daemon с опцией --unlock предназначена для использования во время автоматического входа в систему. И если она получает неверный пароль, то думает что это новый пароль вашего пользователя. Поэтому при следующей разблокировке связки ключей, пароль автоматически будет изменен на новый, для того чтобы соответствовать паролю пользователя. В данном случае будет установлен тот самый неверный пароль. И в результате вы больше не сможете разблокировать связку ключей старым паролем. Для того чтобы это исправить удалите все файлы в ~/.local/share/keyring, перезапустите g-k-d или перезагрузите систему и выполните команды описанные выше снова. Поскольку связки ключей нет, будет создана новая и для неё будет использован пароль, который вы введете. Но эти действия удалят все пароли которые были сохранены.

Обратите внимание, что это только первая разблокировка. Если вы хотите чтобы удаленнй стол работал после перезагрузки, установите пустой пароль для gnome-keyring после входа в графический интерфейс.

3. Создание сертификатов FreeRDP

Gnome Remote Desktop использует FreeRDP в качестве бэкенда, которому для корректной работы необходимы сертификаты. Давайте создадим эти сертификаты:

mkdir certs && cd certs openssl genrsa -out rdp-tls.key 4096 openssl req -new -key rdp-tls.key -subj "/C=US" | openssl x509 -req -days 730 -signkey rdp-tls.key -out rdp-tls.crt

После этого переместите сертификаты в .local/share/gnome-remote-desktop/, который находится в домашней директории вашего пользователя. Например:

mkdir -p /home/losst/.local/share/gnome-remote-desktop/ mv rdp-tls.key rdp-tls.crt /home/losst/.local/share/gnome-remote-desktop/

4. Настройка G-R-D

На данный момент вы готовы к настройке Gnome Remote Desktop. Сначала проверьте статус службы:

grdctl status

Затем добавьте сертификаты:

grdctl rdp set-tls-cert /home/losst/.local/share/gnome-remote-desktop/rdp-tls.crt grdctl rdp set-tls-key /home/losst/.local/share/gnome-remote-desktop/rdp-tls.key

Затем задайте имя пользователя и пароль, которые будут использоваться для удаленного входа:

grdctl rdp set-credentials losst password

Эта команда может зависнуть и ничего не сделать. Это может означать, что gnome-keyring не разблокирован, и команда ждет, пока пользователь не введет пароль в графическом интерфейсе. В этом случае следует вернуться к шагу 3 и разблокировать gnome-keyring.

Затем отключите режим "только просмотр", который включен по умолчанию:

grdctl rdp disable-view-only

И, наконец, включите rdp:

grdctl rdp enable

5. Запуск службы G-R-D

Теперь вы знаете, как включить удаленный рабочий стол Ubuntu в командной строке. После этого нужно добавить службу g-r-d systemd в автозапуск и убедиться, что она запущена:

systemctl --user enable gnome-remote-desktop.service systemctl --user start gnome-remote-desktop.service

Затем можно проверить состояние службы:

systemctl --user status gnome-remote-desktop.service

Также вы можете проверить состояние и учетные данные RDP с помощью grdctl:

grdctl status --show-credentials

Теперь вы можете подключиться к своему ПК удаленно, чтобы убедиться, что удаленный режим рабочего стола Ubuntu 22.04 работает хорошо. Кроме того, не забудьте установить расширение "Allow Locked Remote Desktop" с сайта расширений в графическом интерфейсе.

Как подключиться к удаленному рабочему столу в Linux

Когда ваш удаленный рабочий стол настроен, вы можете подключиться к нему с помощью любого RDP-клиента. Например, Reminna или Connections. Если вы хотите использовать Connections, откройте приложение и нажмите на кнопку Plus:

Затем введите IP-адрес удаленного компьютера, выберите протокол RDP и нажмите Connect:

Затем введите имя пользователя и пароль, указанные ранее:

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

При наличии подключенных пользователей вы увидите уведомление в правом верхнем углу панели:

Как зайти на удаленный рабочий стол в Windows

Ну а теперь давайте рассмотрим, как подключиться к удаленному рабочему столу Ubuntu из Windows. С помощью поиска в левом нижнем углу найдите приложение Remote Desktop Connection и откройте его:

Введите IP-адрес вашего удаленного компьютера:

Введите логин и пароль, выбранные ранее:

Примите сертификат RDP от удаленного сервера:

Теперь вы подключены к удаленному ПК:

Как сбросить настройки Gnome Remote Desktop

Если что-то пошло не так и вы хотите сбросить настройки удаленного рабочего стола и попробовать снова, отключите RDP:

grdctl rdp disable

Очистите учетные данные:

grdctl rdp set-credentials "" ""

Затем удалите сертификаты RDP:

gsettings set org.gnome.desktop.remote-desktop.rdp tls-cert "" gsettings set org.gnome.desktop.remote-desktop.rdp tls-key ""

Выводы

В этой статье я показал, как включить удаленный рабочий стол в Ubuntu с Wayland с помощью службы Gnome Remote Desktop. Она работает очень хорошо, и я надеюсь, что в скором времени она будет улучшена и получит возможность запускать новые пользовательские сессии.

20 комментариев к “Удаленный рабочий стол в Ubuntu 22.04”

  1. 1. На сколько я помню данная настройка максимум может использоваться как "удаленный помощьник". Т. е. для того, чтобы подключиться уже должен быть активный сенанс локальный. Еще проще, если Вы перезагрузите систему, Вы уже больше не подключитесь к ней по VNC, пока не зайдете на него локально. И при разлогинивание, соответственно Вас из VNC выкинет, а не просто откроет экран входа.
    2. Пару месяцев назад на хабре была статья от кокого-то хостера с кучей вариантов удаленных подключений. Советую!
    3. От себя могу посоветовать самый простой вариант так сказать для дома, т. к. редко гуй ставят на сервера. TeamViewer.

    Ответить
  2. Использую для объединения домашней и дачной сетей вот такой способ — https://vpnki.ru
    Это бесплатная соединялка VPN туннелей.
    У меня это единственный вариант, потому что белого IP нет, а соединение снаружи закрыто провайдером, хотя ddns и работает, но толку никакого
    Насчет скорости не проверял, но мою камеру с дачи нормально показывает на домашнем телевизоре. Вдруг кому-то поможет

    Ответить
  3. попробовал настроить по данному мануалу, сразу скажу у меня KDE стоит, не получилось с Windows подключиться через Ultravnc

    Ответить
  4. Есть необходимость подключиться из windows к серверу vps. На сервере ОС ubuntu-16.04. Как подключаться? к серверу под windows подключаюсь по rdp, там всё понятно ip адрес, логин, пароль, ок, а как к серверу под кubuntu подключаться?

    Ответить
  5. А если снять галочку в безопасности "запрашивать подтверждение при любой попытке соединения с компом" по сути не должен тогда запрашивать на удаленке разрешить?

    Ответить
  6. Есть вытекающая из этого проблема - просадка по производительности GUI(анимации тупят адово) при удаленном подключении, если у машины не подключен монитор.

    Насколько я понял есть два выхода:

    1) Хардвеерный, засунуть в девайс HDMI/VGA/DVI plug;
    2) Софтовый, установить виртуальный монитор на удаленную машину.

    Если с первым всё понятно, то со вторым я так и не разобрался.

    Ответить
  7. В заголовке написано, что удаленно можно подключиться по ssh и с мобильного устройства, но примеров с подключением нет в статье.

    Ответить
  8. "он медленный и уже устаревший". Именно это мы все и искали.
    P.S. Сам баловался с Win на Ubuntu через Xming. Было пошустрей vnc. Но не без глюков.

    Ответить
  9. Добрый день! Подскажите, пожалуйста, при попытке установить свои логин и пароль командой:

    grdctl rdp set-credentials my_username my_password

    Получаю ошибку:
    Cannot create an item in a locked collection

    Несколько раз пробовал Разблокировку Gnome Keyring, но хожу по кругу - не помогает 🙁

    Ответить
    • Время от времени попытка разблокировки с командой kill повреждает keyring. Попробуйте сделать резервную копию файлов keryring, удалить их и создать новый.

      Ответить

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