Skip to main content

RDP на Linux (GNOME Remote Desktop)

Этот метод подойдет для GUI Gnome с менеджером Wayland: встает "болт-он", работает быстрее и стабильнее аналогов.
Однако, с другими GUI и менеджерами сессий могут возникнуть проблемы - там лучше не экспериментировать с GRDP, а рассмотреть аналоги

Шаг 1. Установка  GRDP

apt update
apt install -y gnome-remote-desktop

Все дальнейшие шаги будут выполняться от пользователя user1 (не от root!) и в GUI (не в терминале!)

Шаг 2. Включаем RDP

gsettings set org.gnome.desktop.remote-desktop.rdp enable true

Шаг 3. Создание учетных данных для пользователя

Для создания пользователя, выполняем команду от имени того, кто будет заходить на сервер (не root!). Например, для user1:

su - user1
# Чтобы пароль не светился и не попадал в history:
read -rp "RDP user: " RDP_USER
read -srp "RDP pass: " RDP_PASS; echo
grdctl rdp set-credentials "$RDP_USER" "$RDP_PASS"
unset RDP_USER RDP_PASS

Шаг 4. Разрешаем подключение

grdctl rdp enable
# Автозагрузка
sudo systemctl --user enable --now gnome-remote-desktop

Шаг 5. Заранее открываем порт 3389 (пример с UFW)

Если порт 3389 будет закрыть, подключения не произойдет. Чтобы открыть его через UFW, выполняем: 

sudo ufw allow 3389/tcp
sudo ufw reload
# Посмотреть список правил можно так:
sudo ufw status

Шаг 6. Скорее всего, в логах gnome-remote-desktop при первом запуске вы увидите что-то такое:

● gnome-remote-desktop.service - GNOME Remote Desktop
     Loaded: loaded (/usr/lib/systemd/user/gnome-remote-desktop.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-01-14 20:30:15 MSK; 3min 8s ago
   Main PID: 31760 (gnome-remote-de)
      Tasks: 4 (limit: 9379)
     Memory: 15.4M
        CPU: 319ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/gnome-remote-desktop.service
             └─31760 /usr/libexec/gnome-remote-desktop-daemon

янв 14 20:30:15 home-srv-android systemd[1683]: Starting GNOME Remote Desktop...
янв 14 20:30:15 home-srv-android systemd[1683]: Started GNOME Remote Desktop.
янв 14 20:30:15 home-srv-android gnome-remote-de[31760]: RDP TLS certificate and key not configured properly
янв 14 20:32:50 home-srv-android systemd[1683]: Started GNOME Remote Desktop.
янв 14 20:33:23 home-srv-android systemd[1683]: Started GNOME Remote Desktop.

И порт 3389 слушаться не будет, сколько бы вы не перезагружали службу.

Проблема тут вот в этой ошибке:

RDP TLS certificate and key not configured properly

И тут есть 2 варианта решения проблемы: использовать самоподписанный или нормальный TLS-сертификат.

Решение через self-signed TLS

1. Генерируем самоподписанный сертификат в ~/.local/share/grd:

mkdir -p ~/.local/share/grd
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout ~/.local/share/grd/rdp.key \
  -out ~/.local/share/grd/rdp.crt \
  -subj "/CN=home-srv-android"
chmod 600 ~/.local/share/grd/rdp.key

Важно:
1. Ключ должен быть без пароля (unencrypted PEM);
2. Файлы должны быть читаемы пользователем, который будет подключаться (иначе демон их не прочтет).

Если у вас есть свой TLS-сертификат, просто подложите его в директорию:
1. Сертификат: ~/.local/share/grd/rdp.crt
2. Приватный ключ: ~/.local/share/grd/rdp.key

2. Привязываем его к GRDP:

grdctl rdp set-tls-cert ~/.local/share/grd/rdp.crt
grdctl rdp set-tls-key  ~/.local/share/grd/rdp.key
grdctl rdp enable

3. Перезапускаем сервис и проверяем, что он запущен

# Перезапуск
sudo systemctl --user restart gnome-remote-desktop
# Проверяем статус
grdctl status
# Проверяем, что порт слушается
sudo ss -ltnp | grep -E ':3389'