Что делать, если нужно получить удалённый доступ к серверу или десктопу Linux? Или подключиться к Windows-машине с Linux-десктопа? Какие клиенты RDP и FTP подходят лучше всего под Debian и Red Hat / CentOS? Интересно посмотреть, что нового появилось в последнее время.

Как известно, Remote Desktop Protocol (RDP) — проприетарный протокол Microsoft для удалённого управления десктопом. Ориентирован на передачу по сети графического интерфейса и всех функций управления.

Хотя протокол выпустила Microsoft, к настоящему моменту создано множество свободных серверов и клиентов RDP с открытым исходным кодом, под свободной лицензией и для всех операционных систем. В последние годы появились достойные серверы RDP под Linux, хотя раньше хосты всегда работали под Windows, а под Linux выпускались только клиенты. Однако к 2022 году ситуация сильно изменилась, так что стали возможно и противоположные сценарии.

Выбор сервера и клиента зависит от операционной системы хоста. RDP-сессия устанавливается между клиентом и сервером. Соответственно, для серверной и клиентской части RDP и FTP существуют разные инструменты, в том числе доступные в репозиториях Debian, Red Hat, CentOS и др.

Сервер RDP под Linux


В современных системах GNOME — сервер RDP уже интегрирован, но там много чего не хватает, так что приходится пока использовать сторонние решения. Судя по всему, сервер RDP в GNOME пока не доработан до окончательного вида. По крайней мере, там отсутствуют некоторые важные функции. Руководство по использованию и планы на доработку программы см. здесь.

▍ xRDP


Неплохой вариант для Linux-сервера — xRDP. Последняя версия 0.9.20 вышла 15 сентября 2022 года.

Эта программа специализируется на управлении Linux-десктопом по RDP, при этом xRDP как бы мимикрирует под Windows-систему, нативную для данного протокола.

Предполагается, что клиенты — это обычно системы под Windows, мобильные устройства или дешёвые RDP-терминалы типа Wyse Winterm (на Windows CE), которые можно дёшево купить б/у на «Авито» или найти списанные вообще бесплатно.


Старый терминал WYSE-530 Winterm S30 на процессоре AMD Geode 366 МГц (ноябрь 2008)

Поднимаете RDP-сервер под Linux с десятком X-сессий — и практически без усилий получаете сеть из десятка компьютеров, которые могут вводить информацию на сервер. Это просто пример, как использовать RDP-клиенты под Windows для доступа к Linux-серверу.

xRDP обеспечивает удалённый доступ по Microsoft Remote Desktop Protocol (RDP) и принимает соединения по порту 3389/tcp от следующих RDP-клиентов:

  • FreeRDP.
  • rdesktop.
  • KRDC.
  • NeutrinoRDP.
  • Windows MSTSC (Microsoft Terminal Services Client, она же mstsc.exe).
  • Microsoft Remote Desktop (есть Microsoft Store, отличается от MSTSC).

Некоторые из этих клиентов доступны только на определённых ОС, например, только на Windows. Другие поддерживают более широкий список платформ, включая Linux, MacOS, iOS и/или Android.



xRDP поддерживает повторные подключения к прерванной сессии, изменение размера дисплея, функцию RDP/VNC-прокси (подключение к другому серверу RDP/VNC через xrdp), двусторонний буфер обмена между хостом и клиентом, в том числе передачу через него туда и обратно текста, изображений и файлов, перенаправление аудиопотока и микрофона (требует сборки дополнительных модулей), перенаправление дисков (монтирование локальных клиентских дисков на удалённой машине).

В большинство популярных дистрибутивов включены последние версии пакетов xrdp и xorgxrdp, они есть также в Debian и CentOS.

▍ Установка на Ubuntu / Debian


apt install xrdp

▍ Установка на RedHat / CentOS / Fedora


На RedHat / CentOS сначала нужно активировать пакеты EPEL:

yum install epel-release

Потом можно установить xrdp

yum install xrdp

ogon


Один из многочисленных альтернативных вариантов сервера RDP под Linux — проект ogon. Это набор инструментов на C/C++, которые предоставляют удобный GUI для удалённого десктопа по RDP. Проект поддерживает большинство современных расширений протокола RDP, кодеки сжатия растровых изображений, отключение и повторное подключение к сессиям, перенаправление устройств.

Сервер совместим практически со всеми существующими клиентами RDP, сессии можно устанавливать через приложение X11, Weston или QT. Благодаря модульной конструкции, сервер легко расширяется, в него можно добавить новые функции или новые бэкенды. Ставится на Debian, CentOS и т. д.

xpra


Известный сервер под Linux с терминальными GUI-сессиями (экран для X11) — xpra. Во многом работает как xRDP, хотя и не поддерживает RDP. Но мы решили помянуть его здесь для сравнения с решениями на RDP и VNC.

Тут встроенный HTML5-клиент, аппаратное ускорение графики, поддержка множества пользователей, GUI для настройки, синхронизация клавиатуры и буфера обмена, перенаправление принтера, курсора, звука, системных уведомлений, поддержка IPv6, SSL, десктопный режим и проч.

Официальные стабильные сборки:


Клиенты RDP и FTP под Linux


Пожалуй, лучшие клиенты RDP под Debian — это Remmina и Apache Guacamole, хотя есть и другие варианты.

Remmina


Remmina — клиент RDP по умолчанию в некоторых дистрибутивах, в том числе в Ubuntu. Это одна из самых удобных и функциональных программ для удалённой работы, поддерживает RDP, SSH, SPICE, VNC, X2Go, HTTP/HTTPS.



В июне 2022 вышла последняя версия 1.4.27 с исправлением ошибок и рядом не самых существенных изменений вроде новых цветовых схем для SSH.

Некоторые из основных функций Remmina, которые можно настраивать на стороне клиента RDP:

  • Запоминание последнего режима просмотра для каждого соединения.
  • Конфигурация двойным щелчком.
  • Качество масштабирования.
  • Размер шага автоматической прокрутки.
  • Максимальное количество последних элементов.
  • Нажатия клавиш.
  • Папка для скриншотов.
  • Предотвращение попадания скриншотов в буфер обмена.
  • Настройка разрешения экрана.
  • Конфигурация вкладок.
  • Видимость панели инструментов.
  • Режим просмотра по умолчанию.
  • Настройка поведения в полноэкранном режиме.
  • Строка поиска в главном окне.
  • Установка горячих клавиш для хоста: включение полноэкранного режима, автоподгонка окна, переключение страниц вкладок, переключение режима масштабирования, захват клавиатуры, минимизировать окно, показать/скрыть панель инструментов, сделать скриншот, режим просмотра.
  • Локальный порт SSH-туннеля.
  • Парсинг ~/.ssh/config.
  • Логи SSH.
  • Выбор шрифта терминала.
  • И др.

В наборе плагинов есть SFTP для защищённой передачи файлов.

Из специфических настроек RDP — установка глубины цвета, качества передачи видео и звука, редирект локального микрофона, подключение консоли, распознавание сервера через Remote Desktop Gateway, возможность отключить автоматические реконнекты, синхронизацию буфера обмена и некоторых других функций.



Remmina входит в состав большинства популярных дистрибутивов, включая Debian 11:



В старых версиях Debian для установки Remmina можно скопировать строки в консоль:

echo 'deb http://ftp.debian.org/debian stretch-backports main' | sudo tee --append /etc/apt/sources.list.d/stretch-backports.list >> /dev/null
sudo apt update
sudo apt install -t stretch-backports remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-spice

Сразу после установки предлагается сделать Remmina клиентом RDP по умолчанию:



Инструкции по установке для всех систем см. на этой странице, а руководство по сборке из исходников — в справочном вики.

На CentOS есть вариант установки из репозитория EPEL, вставив в консоль следующие строчки:

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

В качестве альтернативы — Remmina устанавливается через универсальный пакет Flatpak, который работает буквально на всех дистрибутивах:

flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# In order to have H.264 codecs
flatpak install org.freedesktop.Platform
flatpak install org.freedesktop.Platform.openh264
flatpak install --user flathub org.remmina.Remmina
flatpak run --user org.remmina.Remmina

Apache Guacamole


Apache Guacamole (HTML5, в браузере) предоставляет доступ к хосту без клиента, то есть без инсталляции на компьютер клиентской части. Работает просто через браузер. Последняя версия 1.4.0 вышла 1 января 2022 года.

Понятно, что браузерный клиент имеет определённые преимущества, поскольку запускается абсолютно на любом устройстве, где есть браузер, независимо от операционной системы.

Более того, сам десктоп необязательно должен существовать физически, это может быть просто виртуальная машина на сервере.




Из других RDP и VNC-клиентов под Linux можно упомянуть Vinagre, Boxes, TightVNC (для доступа к Windows-хостам), FreeRDP (xfreerdp/wlfreerdp, пакет для Debian) и rdesktop.
Telegram-канал и уютный чат

Комментарии (32)


  1. abutorin
    26.09.2022 12:17
    +12

    Зашёл почитать какие есть серверы кроме xRDP, выяснилось что никаких. Один и не RDP вовсе, а второй в зачаточном состоянии похоже.


    1. AndreyAf
      26.09.2022 12:55
      +4

      я пишу для linux, большой опыт сисадминства и поэтому есть куча своих идеи как это должно работать, есть и рабочее демо
      https://github.com/AndreyBarmaley/linux-terminal-service-manager/blob/main/README_ru.md


  1. alexrett
    26.09.2022 12:32
    +3

    Когда-то очень давно мне пришлось делать некоторое упражнение с обеспечением удаленного доступа к 1с7.7 на линуксе с wine паре десяткам пользователей на разных ОС еще и с пробросом всего необходимого (флешки, принтеры и т.д.). Тогда лучшим решением на замену RDP оказался - x2go. Не знаю уж как сейчас дела обстоят, но в статье он упоминается только в качестве поддерживаемого протокола в клиенте Remmina, хотя вполне себе достойная замена RDP.


    1. unwrecker
      26.09.2022 13:29
      +2

      x2go вполне юзабилен. К тому же работает поверх SSH, то есть не нужно думать над авторизацией и открытием новых дыр (ну если мы говорим о подключении Linux-Linux). Родной клиент выглядит странно, но раз в Реммину завезли поддержку, надо будет её попробовать.


      1. SerjV
        26.09.2022 13:51

        ну если мы говорим о подключении Linux-Linux

        А при подключении с Windows на Linux - какие-то сильно дополнительные уязвимости появляются из-за x2go?


        1. unwrecker
          26.09.2022 13:53

          Нет, но при подключении с Windows на Linux не будет нативной SSH-авторизации.


      1. litos
        27.09.2022 06:44

        x2go запускает ssh сервер на клиенте, по крайней мере в убунту, учитывайте этот момент в плане безопасности, можно настроить его чтобы слушал 127.0.0.1


    1. DistortNeo
      26.09.2022 14:02
      +2

      Поддерживаю x2go. Что мне в нём особенно нравится — это десктопная интеграция (удалённо запущенные приложения выглядят как локальные), плюс весьма приятная скорость работы и качество картинки (не тупая передача фреймбуффера).


  1. benjik
    26.09.2022 12:36

    Вот ещё одно комплексное решение https://rustdesk.com/


    1. 13werwolf13
      26.09.2022 14:37
      +5

      вообще ни разу не замена rdp
      rdp это терминальные сессии, когда на сервере сидят 100 людей в разных сессиях и это не мешает работать админу подцепившемуся монитором в физический порт, а teamviewer/anydesk/rustdesk/etc это доступ к той же сессии что и на экране (хотя в случае серверной винды anydesk емнип может и в терминальные сессии, но не уверен..).


      1. benjik
        26.09.2022 14:46

        Действительно, проглядел заголовок.


  1. 13werwolf13
    26.09.2022 14:35
    +1

    в клиентах явно не хватает упоминания пары, например krdc

    вообще забавно, для линукса существует огромное кол-во способов устроить терминальную сессию и/или получить доступ к удалённому раб столу (vnc/spice/XoverSSH/X2Go/etc), но почему-то народ упорно пытается оседлать монструозный и проприетарный rdp..


    1. Nnnnoooo
      26.09.2022 14:50
      +2

      проблема в том что только rdp работает с максимальным приближением к локальному десктопу. и работает вменяемо на любых каналах.
      Печально что все бесплатные клиенты далеки по качеству связи/картинки до виндового клиента :( Даже линуксовый клиент от параллелс все равно имеет лаг в разы больше чем встроенный виндовый клиент :( из всех линуксовых клиентов ближе всего к оригиналу freerdp, но у него тоже куча косяков, которые становятся заметны при использовании 24/7


      Понятно что для разового подключения и настройки подойдет любой альтернативный сервис (x2go, vnc), но для постоянной и комфортной работы в течении всего дня для рдп в данный момент нет достойной альтернативы :(


      1. 13werwolf13
        26.09.2022 14:59
        +2

        Да всё нормально с x2go в этом плане. Просто не надо вешать лишние украшательства.


        1. Nnnnoooo
          26.09.2022 15:03

          Я же не говорю что у него все плохо, я говорю о том что у него хуже чем у рдп. Вот и все.
          И хуже значительно особенно на каналах с задержкой (мобильная связь). Через рдп в таких случаях работать в разы приятнее.


    1. DistortNeo
      26.09.2022 15:21

      А ещё в линуксе нет никакой возможности отвязать сессию от дисплея, как в винде.
      Есть прокси-костыли, но они не очень удобны.


      1. paluke
        27.09.2022 07:45

        xpra как раз про это


        1. DistortNeo
          27.09.2022 14:56

          Нет, там как в x2go, надо делать xpra attach как при удалённом, так и при локальном подключении.


  1. wataru
    26.09.2022 16:27

    А что насчет chrome remote desktop?


    1. Pest85
      27.09.2022 08:09

      насколько я помню там нужно 2 вещи: уникальный код которым надо поделиться с клиентом и нажать кнопку подтверждения соединения на "сервере".
      совершенно непонятно как это сделать не имея доступа к самому "серверу"


      1. hssergey
        27.09.2022 09:26

        Нет, можно настроить доступ без подтверждения на "сервере". При это под виндой будет открываться в той же сессии пользователя (хотя может на сервере можно несколько одновременно юзать), а под линуксом будет открывать новый сеанс иксов (лечится патчиньем серверной части на линуксе, там питоновский код, если нужно, чтобы в той же сессии).


  1. xhd
    26.09.2022 16:48
    +1

    Интересно, неужели RDP сейчас настолько эффективнее X11, что последний не заслуживает даже упоминания?


    1. Nnnnoooo
      26.09.2022 16:59
      +3

      на слабых каналах или каналах с задержкой — да, рдп в разы лучше.


  1. LevOrdabesov
    26.09.2022 20:08

    Remmina, к сожалению, не умеет к UltraVNC виндовому с шифровательным плагином. И вообще не нашёл ничего, что умело бы, кроме самого UltraVNC.


  1. VT100
    26.09.2022 21:05

    Почитаю потом.
    Главное — в каком-то из клиентов догадались таки сделать назначение клавиш мыши или ситуация по прежнему на уровне 10-летней давности, когда "леворукая удалённо" * "леворукая локально" = "праворукая"?


  1. engine9
    27.09.2022 09:36

    Посоветуйте софт для ситуации тонкий клиент на столе связан по медному сетевому кабелю с шумным PC в другой комнате. Оба на LINUX.


    1. allter
      27.09.2022 11:30
      +1

      если хочется производительности, то никак. лучше протянуть видео и USB кабель, если хочется прямо тихого решения.

      а так - я пользовался xpra


      1. engine9
        27.09.2022 13:53

        А почему не будет производительности? Протокол тормозной?


    1. kyberorg
      27.09.2022 11:45
      +2

      Советую NoMachine (aka NX).


    1. kale
      27.09.2022 17:46
      +1

      NoMachine, великолепная штучка


      1. ElvenSailor
        28.09.2022 14:03

        так она с недавних пор платная?


        1. DistortNeo
          28.09.2022 14:18

          Платная для коммерческого использования.