Функция удаленного рабочего стола позволяет подключаться к компьютеру и управлять им удаленно. Например, вы можете подключиться к своему рабочему компьютеру, когда находитесь дома, или подключиться к удаленной рабочей станции, которая доступна только в вашей рабочей сети.
В этой статье я покажу, как включить удаленный рабочий стол в Ubuntu 22.04, 23.04 или 23.10. Текущая реализация удаленного рабочего стола имеет некоторые ограничения из-за Wayland, но она вполне пригодна для использования.
Содержание статьи
- Что нужно знать?
- Как включить удаленный рабочий стол в Ubuntu 22.04 GUI
- Как включить удаленный рабочий стол в командной строке (альтернативный способ)
- Как подключиться к удаленному рабочему столу в Linux
- Как зайти на удаленный рабочий стол в Windows
- Как сбросить настройки Gnome Remote Desktop
- Выводы
Что нужно знать?
Исторически существует два наиболее популярных протокола удаленного рабочего стола: 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. Изменение пароля в командной строке
Пароль для удаленного рабочего стола создается случайным образом. Это очень удобно, если вы хотите предоставить кому-то доступ к своему компьютеру, чтобы помочь вам решить какую-то проблему и т. д. Но если вы хотите использовать функцию удаленного рабочего стола для доступа к вашему удаленному серверу, вам нужно иметь возможность изменить пароль в командной строке. И это возможно с помощью команды 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. Она работает очень хорошо, и я надеюсь, что в скором времени она будет улучшена и получит возможность запускать новые пользовательские сессии.
1. На сколько я помню данная настройка максимум может использоваться как "удаленный помощьник". Т. е. для того, чтобы подключиться уже должен быть активный сенанс локальный. Еще проще, если Вы перезагрузите систему, Вы уже больше не подключитесь к ней по VNC, пока не зайдете на него локально. И при разлогинивание, соответственно Вас из VNC выкинет, а не просто откроет экран входа.
2. Пару месяцев назад на хабре была статья от кокого-то хостера с кучей вариантов удаленных подключений. Советую!
3. От себя могу посоветовать самый простой вариант так сказать для дома, т. к. редко гуй ставят на сервера. TeamViewer.
Я тоже юзаю Team Viewer.
Более менее шустрый и прост...
спасибо, друг!
долго ломал голову с этой бедой!
наконец-то победил!
А как сделать чтоб VNC сервер не спрашивал разрешение на подключение? Это же все время нужно тогда иметь физический доступ к машине.
Использую для объединения домашней и дачной сетей вот такой способ — https://vpnki.ru
Это бесплатная соединялка VPN туннелей.
У меня это единственный вариант, потому что белого IP нет, а соединение снаружи закрыто провайдером, хотя ddns и работает, но толку никакого
Насчет скорости не проверял, но мою камеру с дачи нормально показывает на домашнем телевизоре. Вдруг кому-то поможет
попробовал настроить по данному мануалу, сразу скажу у меня KDE стоит, не получилось с Windows подключиться через Ultravnc
Есть необходимость подключиться из windows к серверу vps. На сервере ОС ubuntu-16.04. Как подключаться? к серверу под windows подключаюсь по rdp, там всё понятно ip адрес, логин, пароль, ок, а как к серверу под кubuntu подключаться?
Не могу настроить в Ubuntu 17.10
А если снять галочку в безопасности "запрашивать подтверждение при любой попытке соединения с компом" по сути не должен тогда запрашивать на удаленке разрешить?
Есть вытекающая из этого проблема - просадка по производительности GUI(анимации тупят адово) при удаленном подключении, если у машины не подключен монитор.
Насколько я понял есть два выхода:
1) Хардвеерный, засунуть в девайс HDMI/VGA/DVI plug;
2) Софтовый, установить виртуальный монитор на удаленную машину.
Если с первым всё понятно, то со вторым я так и не разобрался.
В заголовке написано, что удаленно можно подключиться по ssh и с мобильного устройства, но примеров с подключением нет в статье.
В ubuntu 18.04 не работает!
"он медленный и уже устаревший". Именно это мы все и искали.
P.S. Сам баловался с Win на Ubuntu через Xming. Было пошустрей vnc. Но не без глюков.
AnyDesk в последнее время - топ
sudo systemctl status rdp -> sudo systemctl status xrdp Здесь ошибка
из вин11 ==> ubuntu 16 не заработал, хотя демон работает даже коннектит показывает стол в шашечку и умирает
а ещё, при наличии Wayland - его нужно отключить в том же
/etc/gdm3/custom.conf
Добрый день! Подскажите, пожалуйста, при попытке установить свои логин и пароль командой:
grdctl rdp set-credentials my_username my_password
Получаю ошибку:
Cannot create an item in a locked collection
Несколько раз пробовал Разблокировку Gnome Keyring, но хожу по кругу - не помогает 🙁
Время от времени попытка разблокировки с командой kill повреждает keyring. Попробуйте сделать резервную копию файлов keryring, удалить их и создать новый.
В статье была ошибка в описании ввода пароля для gnome-keyring-daemon. Уже обновил статью, новые команды должны работать.