Freerdp как пользоваться windows

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Время на прочтение3 мин

Количество просмотров426K

Не секрет, что в современном мире без продуктов Microsoft практически не обойтись. Однако во многих случаях получается так, что гораздо эффективней использовать на рабочих компьютерах системы на базе GNU/Linux, а не Windows. Это значительно упрощает администрирование и сокращает расходы, предоставляя при этом пользователям гораздо больше легкодоступного функционала. Но что делать с теми приложениями, которые работают только под Windows и которым нет подходящего аналога в мире Linux? Поскольку обычно таких приложений единицы (иначе просто нету смысла ставить Linux на рабочий компьютер), то разумным выбором может стать использование терминальных серверов, работающих под серверными ОС от Microsoft. Кроме того, Linux лучше всего подходит для любых тонких клиентов, поскольку адекватных версий Windows для них просто не существует.

В любом случае необходимо уметь подключаться к терминальным серверам Windows. Для этого в MS был разработан свой протокол удалённого рабочего стола — RDP. Однако до недавнего времени для Linux существовал единственный открытый клиент для работы с этим протоколом — rdesktop. К сожалению, его развитие давно остановилось, и он испытывает огромные трудности при взаимодействии с современными версиями Windows.

Но недавно тихо и незаметно проект rdesktop был форкнут, в результате чего на свет появился новый открытый RDP клиент — FreeRDP. Первый же релиз этой программы разом исправил большинство известных проблем rdesktop, и проект продолжает активно развиваться. Почему-то появление столь полезного приложение обошли вниманием, поэтому я и решил опубликовать этот пост, чтобы хоть как-то исправить эту ситуацию и рассказать всем о существовании нормального RDP клиента для Linux. Под катом — описание возможностей FreeRDP и немного про отличную графическую оболочку Remmina для него.

FreeRDP

Официальный сайт проекта — www.freerdp.com

Там же можно найти описание возможностей текущей версии и планы на будущее. Основные отличия от rdesktop:

  • Произведён значительный рефакторинг кода. Пользовательский интерфейс полностью переписан и отделён от основной библиотеки, реализована система плагинов.
  • Код максимально приведён в соответствие со спецификацией RDP от Microsoft и подробно комментирован.
  • Переписана работа с клавиатурой — больше никаких проблем с раскладками.
  • Переписана работа с принтерами, звуком и другими пробрасываемыми устройствами и сервисами.
  • Исправлены проблемы с указателем и лицензиями при подключении к серверу терминалов Windows 2008.
  • Реализовано кеширование графики (bitmap caching), что позволяет значительно повысить производительность.

Поломанные и убранные возможность rdesktop:

  • В данный момент не реализована поддержка проброса COM портов и поддержка смарт-карт.
  • Убрана поддержка режима SeamlessRDP в пользу реализации RemoteApp, которой правда тоже пока что нет.

Remmina

Кроме того, один из самых удобных графических менеджеров подключений к удалённым рабочим столам Remmina с версии 0.8 перешёл на использование FreeRDP в качестве RDP клиента.

В версии 0.8 также реализована поддержка .rdp файлов Windows, все протоколы теперь являются отдельными плагинами, добавлена поддержка IPv6 и произведено много мелких улучшений и исправлений ошибок.

Скачать последние версии FreeRDP и Remmina можно с официальных сайтов:

  • Официальный сайт Remmina
  • Официальный сайт FreeRDP

Для пользователей Ubuntu также доступен PPA репозиторий от разработчика FreeRDP и Remmina с самыми последними версиями этих программ:

  • https://launchpad.net/~llyzs/+archive/ppa

Установка freerdp
Варианты использования freerdp для подключения к удаленному рабочему столу
xfreerdp_gui — графическая оболочка для работы с freerdp
RemoteApp — запуск приложений

Окружение

  • Версия РЕД ОС: 7.3
  • Конфигурация: Рабочая станция, Сервер графический
  • Версия ПО: freerdp-3:3.8.0-1, freerdp-gui-3.0-2

freerdp — клиент с открытым кодом для подключения к удаленному рабочему столу по протоколу RDP.

Установка FreeRDP

Для установки пакета выполните команду:

dnf install xfreerdp

Описание часто используемых параметров:

Параметр

Описание
 /u:  Имя пользователя
 /d:  Имя домена
 /v:  ip-адрес или имя хоста
 /p:  Пароль
 /w:  /h:  Значения ширины и высоты
 /smartcard:  Проброс токенов
 /a:printer  Подключение принтера
/cert:ignore  Игнорировать сертификат
 /app:program:  Запуск удаленного приложения
 /drive:  Подключение каталога
 /sound:  Перенаправление звука
 /microphone:  Активация микрофона

Полный список параметров представлен на официальной странице  проекта FreeRDP.

Варианты использования FreeRDP для подключения к удаленному рабочему столу

Подключение папки

xfreerdp /u:bob /d:win.redos /v:192.168.1.196 /cert:ignore /sec:rdp /p:my_password /drive:folder,/home/bob@win.redos/temp

Подключение принтера

Названия подключенных принтеров можно вывести командой lpstat -a.

xfreerdp /u:bob /d:win.redos /v:192.168.1.196 /cert:ignore /sec:rdp /p:my_password /a:printer,"Kyocera-Kyocera-ECOSYS-P2335dn-(KPDL)"

Подключение токена

С помощью pcsc_scan узнаем имя токена, например, Reader 0: Aladdin R.D. JaCarta 00 00 достаточно указать первое вхождение в имени Aladdin.

xfreerdp /u:user /p:my_password /smartcard:Aladdin /v:192.168.1.196

Перенаправление звука и микрофона в сессию

xfreerdp /v:192.168.1.196 /u:user /p:my_password /sound:sys:oss,dev:1,format:1 /sound:sys:alsa /microphone:sys:oss,dev:1,format:1 /microphone:sys:alsa

где sys:alsa — явное указание какой звуковой поддержки выбрать (alsa/pulse).

Подключение к сессии с явным указанием размеров окна

xfreerdp /v:192.168.1.196 /u:user /p:my_password /w:800 /h:600

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

freerdp-gui — графическая оболочка для работы с freerdp

Утилита freerdp-gui представляет собой графическую оболочку для работы с FreeRDP

Данная утилита устанавливается следующей командой: 

sudo -E dnf install freerdp-gui 

Запуск утилиты доступен из «Главного меню» — «Интернет» — «Оболочка для FreeRDP» или из терминала командой:

freerdp-gui

Главное окно утилиты представляет функционал по подключению к xrdp или Windows RDP серверу.

Пользователь может задать для своих целей параметры, представленные на снимке основного окна утилиты.

Для выбора необходимого разрешения экрана и дополнительных параметров предусмотрена вкладка «Экран».

Если требуется работа с пробросом папки или устройств, таких как принтер, токен или звук на серверную часть — для этого предусмотрена вкладка «Устройства».

Для настройки протоколирования событий предусмотрена вкладка «Протоколирование».

RemoteApp — запуск приложений

RemoteApp — позволяет запускать приложения по rdp, как если бы они были запущены на локальном компьютере пользователя, т.е пользователь запускает приложение, которое выполняется на сервере, но внешне выглядит, будто оно запущено на локальном компьютере. Для доступа к  приложению, оно предварительно должно быть опубликовано на сервере rdp. В строке подключения укажите приложение, доступное на сервере приложений.

xfreerdp /u:user /d:win.redos /v:192.168.1.196 /cert:ignore /p:my_password /app:program:"||word"

GUI запрос пароля:

xfreerdp /u:user /d:win.redos /v:192.168.1.196 /cert:ignore /p:$(zenity --entry --title="Domain Password" --text="Enter your password:" --hide-text)

В данном примере используется zenityутилита, которая позволяет выводить на экран диалоговые окна. В данном случае — это диалог ввода пароля.

Эта информация оказалась полезной? ДА НЕТ

Дата последнего изменения: 10.12.2024

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

FreeRDP
Разработчик(и) FreeRDP Team
Первый выпуск 2009
Лицензия Apache 2.0
Репозиторий freerdp
freerdp3
Сайт freerdp.com

Сервер

FreeRDP — свободная реализация протокола удаленного рабочего стола (RDP), выпущенная под лицензией Apache. Является форком rdesktop.

Функции

Удаленный доступ к рабочему столу
  • Удалённый доступ к рабочему столу: позволяет подключаться к удалённым сессиям по протоколу RDP.
  • Шифрование соединения: поддержка различных уровней безопасности, включая TLS и NLA (Network Level Authentication).
  • Поддержка нескольких пользователей: одновременная работа нескольких удалённых сессий.
  • Мультиплатформенность: работает на Linux, Windows, macOS, Android и других системах.
Доступ к удаленным ресурсам
  • Передача аудио и видео: поддержка передачи мультимедийного контента с удалённого устройства.
  • Поддержка USB и других устройств: проброс устройств (например, принтеров, смарт-карт) с клиента на сервер.

Установка

В ALT Linux есть две версии версии сервера FreeRDP:

  • freerdp-server — сервер v2
  • freerdp3-server — сервер v3

Но лучше ставить 3-ю версию.

Выберите нужную и установите командой:

# apt-get install freerdp3-server

Примечание: Сервер корректно работает только при запуске от пользователя. Ему нужен запущенный Xorg-сервер. Попытки создать службу от системного пользователя/от root не удаются.

Примечание: FreeRDP (freerdp-shadow-cli) в режиме Shadow позволяет расшаривать только один локальный сеанс.

Техническая часть

Согласно https://miloserdov.org/?p=4508:

Примечание: В статье используется утилита winpr-hash. Она из пакета xfreerdp3.

# apt-get install xfreerdp3
  • Для графического подключения используется бинарник freerdp-shadow-cli. Он из пакета freerdp3-server.
# apt-get install freerdp3-server

Разрешить доступ всем (PAM и X11)

Запускаем бинарник как службу:

$ freerdp-shadow-cli -auth

Если включена аутентификация параметром -auth, используется PAM с подсистемой X11. Запуск от имени root не требуется, однако, если сервер запущен от имени пользователя, аутентификацию может пройти только тот пользователь, который запустил freerdp-shadow.

Внимание! Если аутентификация отключена, подключаться могут все.

Разрешить вход ограниченным пользователям

Любая сетевая служба без аутентификации — это катастрофа для безопасности системы. Поэтому рассмотрим, как запустить freerdp-shadow с поддержкой NLA.

В первую очередь для NLA необходимо создать файл, в котором будет строка вида:

USER:::HASH:::

Мы знаем имя пользователя Linux, для вычисления хеша нам нужно выполнить команду вида:

$ winpr-hash -u USER -p PASSWORD

Например, имя пользователя mial , а пароль 2 , тогда команда будет следующей:

$ winpr-hash -u mial -p 2

Рассчитанный хэш: 8f33e2ebe5960b8738d98a80363786b0

Создайте текстовый файл SAM и запишите в него строку

mial:::8f33e2ebe5960b8738d98a80363786b0:::

Теперь запустите freerdp-shadow-cli с двумя опциями:

/sam-file:FILE – указывает местоположение файла NTLM SAM для аутентификации NLA
/sec:nla - принудительная аутентификация NLA

Итак, команда такая:

$ freerdp-shadow-cli /sam-file:SAM /sec:nla

Внимание! При создании нескольких пользователей в файле SAM, даже если они соответствуют системным, они оба будут подключаться разными сессиями к одному сеансу активного пользователя сервера с которого запущен freerdp-shadow-cli

Чтобы заработало подключение из Windows (Win7/8.1/10)

Mtsc из Windows подключается к FreeRDP при параметре freerdp-shadow-cli -auth

Управление сервисом (службой)

При установке конфигурационный файл службы располагается в /usr/lib/systemd/user/freerdp-server.service.

$ rpm -ql freerdp3-server |grep .service
/usr/lib/systemd/user/freerdp-server.service

Файл службы выглядит так:

[Unit]
Description=Remote access to desktop via RDP
PartOf=graphical-session.target

[Service]
EnvironmentFile=-/etc/sysconfig/freerdp-server
ExecStart=/usr/bin/freerdp-shadow-cli $FREERDP_SERVER_ARGS

[Install]
WantedBy=graphical-session.target

Переменные окружения указанные в файле — EnvironmentFile=-/etc/sysconfig/freerdp-server — содержат следующую информацию:

# Block monitors and input devices upon connection
#FREERDP_SERVER_ARGS="/on-connect:/etc/freerdp/freerdp-login.sh /on-disconnect:/etc/freerdp/freerdp-logout.sh"
FREERDP_SERVER_ARGS=""

Если закомментировать вторую строчку и раскомментировать первую, то сервер будет работать наподобие удаленного рабочего стола в Windows (не терминального сервиса) — при подключении через удаленный рабочий стол сессия будет блокироваться.

Включение автозапуска службы:

$ systemctl enable freerdp-server --user

Запуск службы:

$ systemctl start freerdp-server --user

Остановка службы:

$ systemctl stop freerdp-server --user

Статус службы:

$ systemctl status freerdp-server --user

Клиент

Основные возможности FreeRDP (xfreerdp):

  • Поддержка современных версий RDP
    • Совместимость с RDP 7.1 и выше (вплоть до RDP 10.x).
    • Полная поддержка NLA (Network Level Authentication), необходимого для новых версий Windows Server и Windows 10/11.
  • Многофункциональность
    • Передача звука: звук с удалённого рабочего стола воспроизводится на клиенте.
    • Перенаправление устройств: проброс USB-устройств, дисков, смарт-карт, принтеров.
    • Поддержка RemoteApp: запуск отдельных приложений Windows, без необходимости отображать весь рабочий стол.
    • Работа с несколькими мониторами: можно использовать несколько дисплеев при удалённом подключении.
    • Аппаратное ускорение: поддержка OpenGL, DirectX для оптимизации графики.
  • Безопасность
    • Шифрование TLS.
    • Поддержка CredSSP (Credential Security Support Provider).
    • NLA для безопасного обмена учётными данными.
  • Поддержка стандартов и расширений
    • Умеет работать с FreeRDP Gateway (RD Gateway).
    • Поддержка RDP Dynamic Virtual Channels.
  • Кроссплатформенность
    • Работает на Linux, Windows, macOS, Android и других системах.

Установка

В ALT Linux есть четыре версии клиента FreeRDP:

  • xfreerdp — клиент для X.org v2
  • wlfreerdp — клиент для Wayland v2
  • xfreerdp3 — клиент для X.org v3
  • wlfreerdp3 — клиент для Wayland v3

Выберите нужную и установите командой:

# apt-get install xfreerdp3

Использование

xfreerdp [file] [options] [/v:<server>[:port]]

Синтаксис:

   /flag (включить флаг)
   /option:<value> (указать параметр со значением)
   +toggle -toggle (включить или выключить переключатель, где '/' синоним '+')
Заголовок
Параметр Описание
Включить возможность
Производительность
-fonts Отключить сглаживание шрифтов (ClearType)
-wallpaper Отключить обои рабочего стола
-themes Отключить темы
+aero Включить композицию рабочего стола
-decorations Отключить оформление окон
Безопасность
+auth-only Разрешить доступ только по аутентификации
-authentication Отключить аутентификацию (экспериментально)
+enforce-tlsv1_2 Включить принудительное использование TLS1.2 для подключения. Некоторые серверы имеют ошибочное согласование версии TLS и могут не дать подключиться без этого параметра
+password-is-pin Включить использование аутентификации смарт-карты с паролем в качестве PIN-кода смарт-карты
Разное +auto-reconnect Включить автоматическое переподключение
-toggle-fullscreen Отключить Alt+Ctrl+Enter для переключения на весь экран
+home-drive Включить перенаправление домашней папки пользователя в качестве сетевого ресурса на удаленный стол
-grab-keyboard Отключить захват клавиатуры
-grab-mouse Отключить захват мыши
+clipboard Буфер обмена
Параметры возможностей
Экран /f Полноэкранный режим (<Ctrl>+<Alt>+<Enter> так же переключает в полноэкранный режим)
/w:знач /h:знач Разрешение экрана — длина/ширина. Используются вместе или в одиночку
/size:WxH Разрешение экрана — длина/ширина.
Безопасность /cert:[deny,ignore,name:<name>,tofu,fingerprint:<hash>:<hash as hex>

Параметры принятия сертификата. Используйте с осторожностью!

  • deny … Автоматически отменить соединение, если сертификат не совпадает, без взаимодействия с пользователем.
  • ignore … Игнорировать сертификат, не проверяет вообще (пропускает все остальные варианты)
  • name … Использовать альтернативное <имя> вместо указанного сертификата, сертификат выбирается из локального хранилища
  • tofu … Безоговорочно принять сертификат при первом подключении и отклонить при последующих соединениях, если сертификат не соответствует
  • fingerprint … Список хэшей сертификатов, которые безоговорочно принимаются для подключения
Удаленное приложение /app:<path> или ||<alias> Запуск удаленного приложения
/app-cmd:<parameters> Параметры командной строки для удаленного приложения
/app-file:<file-name> Файл для открытия удаленным приложением
/app-cmd:<parameters> Параметры командной строки удаленного приложения
/app-file:<имя-файла> Файл для открытия с помощью удаленного приложения
/app-icon:<icon-path> Значок удаленного приложения для пользовательского интерфейса
/app-name:<app-name> Имя удаленного приложения для пользовательского интерфейса
/app-workdir:<workspace path> Путь к рабочему пространству удаленного приложения
Автоматическое переподключение /auto-reconnect-max-retries:<повторения> Максимальное количество попыток автоматического переподключения: 0 для неограниченного [0,1000]
Пользователь /d:<домен> Домен
/p:<password> Пароль
/u:[[<domain>\]<user>|<user>[@<domain>]] Пользователь
Сервер /v:<server>[:port] Сервер
/port:<number> Порт сервера
Оборудование /printer[:<name>[,<driver>]] Перенаправление принтера
/smartcard[:<str>[,<str>…]] Перенаправление смарткарт
/usb:[dbg,][id:<vid>:<pid>#…,][addr:<bus>:<addr>#…,][auto] Перенаправление USB
/drive:<name>,<path> Перенаправить каталог <path> как общий ресурс с именем <name>.
/sound Перенаправить звук

Подробный Man:

Syntax:
    /flag (enables flag)
    /option:<value> (specifies option with value)
    +toggle -toggle (enables or disables toggle, where '/' is a synonym of '+')

    /a:<addin>[,<options>]            Addin
    /action-script:<file-name>        Action script
    /admin                            Admin (or console) session
    +aero                             Enable desktop composition
    /app:<path> or ||<alias>          Remote application program
    /app-cmd:<parameters>             Remote application command-line parameters
    /app-file:<file-name>             File to open with remote application
    /app-guid:<app-guid>              Remote application GUID
    /app-icon:<icon-path>             Remote application icon for user interface
    /app-name:<app-name>              Remote application name for user interface
    /app-workdir:<workspace path>     Remote application workspace path
    /assistance:<password>            Remote assistance password
    /auto-request-control             Automatically request remote assistance
                                      input control
    +async-channels                   Enable Asynchronous channels
                                      (experimental)
    +async-input                      Enable Asynchronous input
    +async-update                     Enable Asynchronous update
    /audio-mode:<mode>                Audio output mode
    +auth-only                        Enable Authenticate only
    -authentication                   Disable Authentication (experimental)
    +auto-reconnect                   Enable Automatic reconnection
    /auto-reconnect-max-retries:<retries>
                                      Automatic reconnection maximum retries, 0
                                      for unlimited [0,1000]
    +bitmap-cache                     Enable bitmap cache
    /bpp:<depth>                      Session bpp (color depth)
    /buildconfig                      Print the build configuration
    /cert:[deny,ignore,name:<name>,tofu,fingerprint:<hash>:<hash as hex>
          [,fingerprint:<hash>:<another hash>]]
                                      Certificate accept options. Use with care!
                                      * deny         ... Automatically abort
                                      connection if the certificate does not
                                      match, no user interaction.           *
                                      ignore       ... Ignore the certificate
                                      checks altogether (overrules all other
                                      options)                           * name 
                                             ... Use the alternate <name>
                                      instead of the certificate subject to
                                      match locally stored certificates * tofu  
                                            ... Accept certificate
                                      unconditionally on first connect and deny
                                      on subsequent connections if the
                                      certificate does not match * fingerprints
                                      ... A list of certificate hashes that are
                                      accepted unconditionally for a connection
    /cert-deny                        [deprecated, use /cert:deny] Automatically
                                      abort connection for any certificate that
                                      can not be validated.
    /cert-ignore                      [deprecated, use /cert:ignore] Ignore
                                      certificate
    /cert-name:<name>                 [deprecated, use /cert:name:<name>]
                                      Certificate name
    /cert-tofu                        [deprecated, use /cert:tofu] Automatically
                                      accept certificate on first connect
    /client-build-number:<number>     Client Build Number sent to server
                                      (influences smartcard behaviour, see
                                      [MS-RDPESC])
    /client-hostname:<name>           Client Hostname to send to server
    -clipboard[:[use-selection:<atom>]]
                                      Disable Redirect clipboard.                       
                                      * use-selection:<atom>  ... (X11) Specify
                                      which X selection to access. Default is
                                      CLIPBOARD. PRIMARY is the X-style
                                      middle-click selection.
    /codec-cache:[rfx|nsc|jpeg]       Bitmap codec cache
    -compression                      Disable compression
    /compression-level:<level>        Compression level (0,1,2)
    +credentials-delegation           Enable credentials delegation
    /d:<domain>                       Domain
    -decorations                      Disable Window decorations
    /disp                             Display control
    /drive:<name>,<path>              Redirect directory <path> as named share
                                      <name>. Hotplug support is enabled with
                                      /drive:hotplug,*. This argument provides
                                      the same function as "Drives that I plug
                                      in later" option in MSTSC.
    +drives                           Enable Redirect all mount points as shares
    /dvc:<channel>[,<options>]        Dynamic virtual channel
    /dynamic-resolution               Send resolution updates when the window is
                                      resized
    /echo                             Echo channel
    -encryption                       Disable Encryption (experimental)
    /encryption-methods:[40,][56,][128,][FIPS]
                                      RDP standard security encryption methods
    /f                                Fullscreen mode (<Ctrl>+<Alt>+<Enter>
                                      toggles fullscreen)
    -fast-path                        Disable fast-path input/output
    +fipsmode                         Enable FIPS mode
    /floatbar[:sticky:[on|off],default:[visible|hidden],show:
               [always|fullscreen||window]]
                                      floatbar is disabled by default (when
                                      enabled defaults to sticky in fullscreen
                                      mode)
    -fonts                            Disable smooth fonts (ClearType)
    /frame-ack:<number>               Number of frame acknowledgement
    /from-stdin[:force]               Read credentials from stdin. With <force>
                                      the prompt is done before connection,
                                      otherwise on server request.
    /g:<gateway>[:<port>]             Gateway Hostname
    /gateway-usage-method:[direct|detect]
                                      Gateway usage method
    /gd:<domain>                      Gateway domain
    /gdi:sw|hw                        GDI rendering
    /geometry                         Geometry tracking channel
    +gestures                         Enable Consume multitouch input locally
    /gfx[:[[RFX|AVC420|AVC444],mask:<value>]]
                                      RDP8 graphics pipeline
    /gfx-h264[:[[AVC420|AVC444],mask:<value>] 
               [DEPRECATED] use /gfx:avc420 instead]
                                      RDP8.1 graphics pipeline using H264 codec
    +gfx-progressive                  Enable RDP8 graphics pipeline using progressive
                                      codec
    +gfx-small-cache                  Enable RDP8 graphics pipeline using small cache
                                      mode
    +gfx-thin-client                  Enable RDP8 graphics pipeline using thin client
                                      mode
    +glyph-cache                      Enable Glyph cache (experimental)
    /gp:<password>                    Gateway password
    -grab-keyboard                    Disable Grab keyboard
    -grab-mouse                       Disable Grab mouse
    /gt:[rpc|http[,no-websockets]|auto[,no-websockets]]
                                      Gateway transport type
    /gu:[[<domain>\]<user>|<user>[@<domain>]]
                                      Gateway username
    /gat:<access token>               Gateway Access Token
    /h:<height>                       Height
    -heartbeat                        Disable Support heartbeat PDUs
    /help                             Print help
    +home-drive                       Enable Redirect user home as share
    /ipv6                             Prefer IPv6 AAA record over IPv4 A record
    /jpeg                             JPEG codec support
    /jpeg-quality:<percentage>        JPEG quality
    /kbd:0x<id> or <name>             Keyboard layout
    /kbd-lang:0x<id>                  Keyboard active language identifier
    /kbd-fn-key:<value>               Function key value
    /kbd-list                         List keyboard layouts
    /kbd-lang-list                    List keyboard languages
    /kbd-remap:List of <key>=<value>,... pairs to remap scancodes
                                      Keyboard scancode remapping
    /kbd-subtype:<id>                 Keyboard subtype
    /kbd-type:<id>                    Keyboard type
    /load-balance-info:<info-string>  Load balance info
    /log-filters:<tag>:<level>[,<tag>:<level>[,...]]
                                      Set logger filters, see wLog(7) for
                                      details
    /log-level:[OFF|FATAL|ERROR|WARN|INFO|DEBUG|TRACE]
                                      Set the default log level, see wLog(7) for
                                      details
    /max-fast-path-size:<size>        Specify maximum fast-path update size
    /max-loop-time:<time>             Specify maximum time in milliseconds spend
                                      treating packets
    +menu-anims                       Enable menu animations
    /microphone[:[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,]
                 [channel:<channel>]] Audio input (microphone)
    /monitor-list                     List detected monitors
    /monitors:<id>[,<id>[,...]]       Select monitors to use
    -mouse-motion                     Disable Send mouse motion
    /multimon[:force]                 Use multiple monitors
    +multitouch                       Enable Redirect multitouch input
    +multitransport                   Enable Support multitransport protocol
    -nego                             Disable protocol security negotiation
    /network:[modem|broadband|broadband-low|broadband-high|wan|lan|auto]
                                      Network connection type
    /nsc                              NSCodec support
    +offscreen-cache                  Enable offscreen bitmap cache
    /orientation:[0|90|180|270]       Orientation of display in degrees
    +old-license                      Enable Use the old license workflow (no CAL and
                                      hwId set to 0)
    /p:<password>                     Password
    /parallel[:<name>[,<path>]]       Redirect parallel device
    /parent-window:<window-id>        Parent window id
    +password-is-pin                  Enable Use smart card authentication with
                                      password as smart card PIN
    /pcb:<blob>                       Preconnection Blob
    /pcid:<id>                        Preconnection Id
    /pheight:<height>                 Physical height of display (in
                                      millimeters)
    /play-rfx:<pcap-file>             Replay rfx pcap file
    /port:<number>                    Server port
    -suppress-output                  Disable suppress output when minimized
    +print-reconnect-cookie           Enable Print base64 reconnect cookie after
                                      connecting
    /printer[:<name>[,<driver>]]      Redirect printer device
    /proxy:[<proto>://][<user>:<password>@]<host>:<port>
                                      Proxy settings: override env. var (see
                                      also environment variable below). Protocol
                                      "socks5" should be given explicitly where
                                      "http" is default.
    /pth:<password-hash>              Pass the hash (restricted admin mode)
    /pwidth:<width>                   Physical width of display (in millimeters)
    /rdp2tcp:<executable path[:arg...]>
                                      TCP redirection
    /reconnect-cookie:<base64-cookie> Pass base64 reconnect cookie to the
                                      connection
    /redirect-prefer:<FQDN|IP|NETBIOS>,[...]
                                      Override the preferred redirection order
    /relax-order-checks               Do not check if a RDP order was announced
                                      during capability exchange, only use when
                                      connecting to a buggy server
    /restricted-admin                 Restricted admin mode
    /rfx                              RemoteFX
    /rfx-mode:[image|video]           RemoteFX mode
    /scale:[100|140|180]              Scaling factor of the display
    /scale-desktop:<percentage>       Scaling factor for desktop applications
                                      (value between 100 and 500)
    /scale-device:100|140|180         Scaling factor for app store applications
    /sec:[rdp|tls|nla|ext]            Force specific protocol security
    +sec-ext                          Enable NLA extended protocol security
    -sec-nla                          Disable NLA protocol security
    -sec-rdp                          Disable RDP protocol security
    -sec-tls                          Disable TLS protocol security
    /serial[:<name>[,<path>[,<driver>[,permissive]]]]
                                      Redirect serial device
    /shell:<shell>                    Alternate shell
    /shell-dir:<dir>                  Shell working directory
    /size:<width>x<height> or <percent>%[wh]
                                      Screen size
    /smart-sizing[:<width>x<height>]  Scale remote desktop to window size
    /smartcard[:<str>[,<str>...]]     Redirect the smartcard devices containing
                                      any of the <str> in their names.
    /smartcard-logon                  Activates Smartcard Logon authentication.
                                      (EXPERIMENTAL: NLA not supported)
    /sound[:[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,]
            [channel:<channel>,][latency:<latency>,][quality:<quality>]]
                                      Audio output (sound)
    /span                             Span screen over multiple monitors
    /spn-class:<service-class>        SPN authentication service class
    /ssh-agent                        SSH Agent forwarding channel
    /t:<title>                        Window title
    -themes                           Disable themes
    /timeout:<time in ms>             Advanced setting for high latency links:
                                      Adjust connection timeout, use if you
                                      encounter timeout failures with your
                                      connection
    /tls-ciphers:[netmon|ma|ciphers]  Allowed TLS ciphers
    /tls-seclevel:<level>             TLS security level - defaults to 1
    +enforce-tlsv1_2                  Enable Force use of TLS1.2 for connection. Some
                                      servers have a buggy TLS version
                                      negotiation and might fail without this
    -toggle-fullscreen                Disable Alt+Ctrl+Enter to toggle
                                      fullscreen
    /tune:<setting:value>,<setting:value>
                                      [experimental] directly manipulate freerdp
                                      settings, use with extreme caution!
    /tune-list                        Print options allowed for /tune
    /u:[[<domain>\]<user>|<user>[@<domain>]]
                                      Username
    +unmap-buttons                    Enable Let server see real physical pointer
                                      button
    /usb:[dbg,][id:<vid>:<pid>#...,][addr:<bus>:<addr>#...,][auto]
                                      Redirect USB device
    /v:<server>[:port]                Server hostname
    /vc:<channel>[,<options>]         Static virtual channel
    /version                          Print version
    /video                            Video optimized remoting channel
    /vmconnect[:<vmid>]               Hyper-V console (use port 2179, disable
                                      negotiation)
    /w:<width>                        Width
    -wallpaper                        Disable wallpaper
    +window-drag                      Enable full window drag
    /window-position:<xpos>x<ypos>    window position
    /wm-class:<class-name>            Set the WM_CLASS hint for the window
                                      instance
    /workarea                         Use available work area

Примеры

Простое подключение:

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489

Примечание: Если вы с freerdp подключаетесь к freerdp и у вас выдается ошибка по поводу шифрования, попробуйте указать ключ tls:

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /sec:tls

Файл с параметрами подключения на весь экран:

$ xfreerdp /v:192.168.1.100:4489 /u:JohnDoe /p:Pwd123! /f

Доменный пользователь к серверу с доменным именем:

$ xfreerdp /u:CONTOSO\JohnDoe /p:Pwd123! /v:rdp.contoso.com
$ xfreerdp /u:JohnDoe /p:Pwd123! /d:rdp.contoso.com /v:rdp.contoso.com

Подключение к серверу с указанием разрешения экрана:

$ xfreerdp /u:JohnDoe /p:Pwd123! /w:1366 /h:768 /v:192.168.1.100:4489
$ xfreerdp /u:JohnDoe /p:Pwd123! /size:1920x1080 /v:192.168.1.100:4489

Подключение без проверки сертификата (нужен, если у сервера самоподписанный сертификат):

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /cert:ignore

Перенаправление папки:

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /drive:MyLocalFolder,/home/user/shared

Перенаправление звука:

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /sound

Перенаправление USB-устройства:

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /usb:id,dev:VID:PID
  • Где VID и PID — идентификаторы устройства (можно посмотреть через lsusb).

Подключение с шифрованием NLA (Network Level Authentication)

$ xfreerdp  /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /sec:nla
  • Если сервер требует обязательного использования NLA.
    • Другие варианты /sec:rdp, /sec:tls, /sec:neg (автоматический выбор).

Подключение к удаленному сеансу

$ xfreerdp /u:JohnDoe /p:Pwd123! /v:192.168.1.100:4489 /shadow

GUI

MyConnector

Connector

См. MyConnector

Remmina

Remmina. Главное окно программы

См. Remmina.

GUI на Yad

Вариант 1 (подключение, краткий)

Установите freerdp и yad и создайте и запустите следующий скрипт:

# apt-get install xfreerdp3 yad
#!/bin/bash

# XFreeRDP RemoteApp W/ Prompt Script
# Version 0.3
# Description:
# XFreeRDP Remote App Script utilizing Zentity to populate variables
# Written by Jarrett Higgins 12-2015

OUTPUT=$(zenity --forms --title="Connection Information" \
    --text="Enter information about your Remote Connection" \
    --separator="," \
    --add-entry="Server" \
    --add-entry="Port (Default: 3389)" \
    --add-entry="Domain (Optional)" \
    --add-entry="Username" \
    --add-password="Password" \
    --add-entry="Remote App Name (Optional)")
OUTPUT_RESULTS=$?
if ((OUTPUT_RESULTS != 0)); then
    echo "something went wrong"
    exit 1
fi
Blank=""
Server=$(awk -F, '{print $1}' <<<$OUTPUT)
Port=$(awk -F, '{print $2}' <<<$OUTPUT)
if ["$Port" = "$Blank"]
then
    Port="3389"
else
    Port="$Port"
fi
Domain=$(awk -F, '{print $3}' <<<$OUTPUT)
Username=$(awk -F, '{print $4}' <<<$OUTPUT)
Password=$(awk -F, '{print $5}' <<<$OUTPUT)
App=$(awk -F, '{print $6}' <<<$OUTPUT)
if ["$App" = "$Blank"]
then
    App="$App"
    Title="$Server"
else
    AppName="$App"
    Title="$AppName on $Server"
    App="/app:||$App"
fi
#zenity --info --title="Information Return" --text="$Server $Port $Domain $Username $Password $App"
xfreerdp /t:"$Title" /v:$Server:$Port /d:$Domain /u:$Username /p:$Password $App /cert:ignore /workarea +clipboard
Password=""
Вариант 2 (подключение, подробный)

Установите freerdp и yad и создайте и запустите следующий скрипт:

# apt-get install xfreerdp3 yad
#!/bin/bash

CONFIG_FILE="/tmp/rdp_settings.conf"

# === 📦 Получаем список доступных принтеров
printers=$(lpstat -p 2>/dev/null | awk '{print $2}')
printer_list="None"
for p in $printers; do
  printer_list+="!$p"
done
[ -z "$printers" ] && printer_list="None!Printer1!Printer2"  # fallback

# === 🔐 Получаем список доступных токенов (простая проверка по dev)
tokens=$(ls /dev 2>/dev/null | grep -E 'token|pcsc|smartcard|hid|usb' | sort -u)
token_list="None"
for t in $tokens; do
  token_list+="!$t"
done
[ -z "$tokens" ] && token_list="None!token0!token1"  # fallback

# === Загружаем предыдущее состояние
if [ -f "$CONFIG_FILE" ]; then
  IFS="|" read -r -a data < "$CONFIG_FILE"
else
  data=("" "" "" "" "" "" "TRUE" "TRUE" "TRUE" "TRUE" "TRUE" "None" "None" "" "shared" "nla")
fi

# === Основной цикл
while true; do
  form=$(yad --notebook \
    --title="Подключение к RDP (FreeRDP)" \
    --width=550 --height=500 \
    --center \
    --separator="|" \
    --form \
    --tab="Основное" \
      --field="Сервер (обязательно):" "${data[0]}" \
      --field="Порт:" "${data[1]}" \
      --field="Имя пользователя:" "${data[2]}" \
      --field="Пароль (скрыт):H" "${data[3]}" \
      --field="Домен (опционально):" "${data[4]}" \
      --field="Разрешение экрана:" "${data[5]}" \
    --tab="Параметры" \
      --form \
      --field="Полноэкранный режим:CHK" "${data[6]}" \
      --field="Динамическое изменение экрана:CHK" "${data[7]}" \
      --field="Отключить проверку сертификата:CHK" "${data[8]}" \
      --field="Перенаправлять звук:CHK" "${data[9]}" \
      --field="Переподключаться при обрыве:CHK" "${data[10]}" \
      --field="Принтер:CB" "${data[11]:-None}!${printer_list#None!}" \
      --field="Смарт-карта (токен):CB" "${data[12]:-None}!${token_list#None!}" \
      --field="Папка для перенаправления:DIR" "${data[13]}" \
      --field="Имя общей папки (в сессии):" "${data[14]}" \
    --tab="Безопасность" \
      --form \
      --field="Тип шифрования:CB" "${data[15]:-nla}!nla!tls!rdp!neg"
  )

  [ $? -ne 0 ] && exit 0

  echo "$form" > "$CONFIG_FILE"

  IFS="|" read server port username password domain resolution \
      fullscreen dynres cert_ignore sound autoreconnect \
      printer_choice smartcard_choice folder_redirect folder_name encryption <<< "$form"

  cmd="xfreerdp /v:$server"
  [ -n "$port" ] && cmd+=":$port"
  cmd+=" /u:$username /p:$password"
  [ -n "$domain" ] && cmd+=" /d:$domain"

  if [ "$fullscreen" = "TRUE" ]; then
    cmd+=" /f"
  elif [ -n "$resolution" ]; then
    width=$(echo "$resolution" | cut -d'x' -f1)
    height=$(echo "$resolution" | cut -d'x' -f2)
    cmd+=" /size:${width}x${height}"
  fi

  [ "$dynres" = "TRUE" ] && cmd+=" +dynamic-resolution"
  [ "$cert_ignore" = "TRUE" ] && cmd+=" /cert:ignore"
  [ "$sound" = "TRUE" ] && cmd+=" /sound"
  [ "$autoreconnect" = "TRUE" ] && cmd+=" /auto-reconnect"

  if [ "$printer_choice" != "None" ]; then
    cmd+=" /printer:$printer_choice"
  fi

  if [ "$smartcard_choice" != "None" ]; then
    cmd+=" /smartcard:$smartcard_choice"
  fi

  if [ -n "$folder_redirect" ]; then
    safe_name="${folder_name:-shared}"
    cmd+=" /drive:$safe_name,$folder_redirect"
  fi

  case "$encryption" in
    nla) cmd+=" /sec:nla" ;;
    tls) cmd+=" /sec:tls" ;;
    rdp) cmd+=" /sec:rdp" ;;
    neg) cmd+=" /sec:neg" ;;
  esac

  yad --question --title="Подтверждение" --text="Выполнить следующую команду?\n\n<b>$cmd</b>" --width=400
  [ $? -ne 0 ] && continue

  eval "$cmd"
  result=$?

  if [ $result -eq 0 ]; then
    rm -f "$CONFIG_FILE"
    break
  else
    yad --error --title="Ошибка подключения" --text="Подключение не удалось (код $result). Повторите попытку."
  fi
done

Freerdp-yad-2.png

Вариант 3 (вывод команды)

Установите freerdp и yad и создайте и запустите следующий скрипт:

# apt-get install xfreerdp3 yad
#!/bin/bash

# === 📦 Принтеры
printers=$(lpstat -p 2>/dev/null | awk '{print $2}')
printer_list="None"
for p in $printers; do
  printer_list+="!$p"
done
[ -z "$printers" ] && printer_list="None!Printer1!Printer2"

# === 🔐 Токены
tokens=$(ls /dev 2>/dev/null | grep -E 'token|pcsc|smartcard|hid|usb' | sort -u)
token_list="None"
for t in $tokens; do
  token_list+="!$t"
done
[ -z "$tokens" ] && token_list="None!token0!token1"

# === Загрузка
  data=("" "" "" "" "" "" "TRUE" "TRUE" "TRUE" "TRUE" "TRUE" "None" "None" "" "shared" "nla" "FALSE" "")

while true; do
  form=$(yad --notebook \
    --title="Подключение к RDP (FreeRDP)" \
    --width=600 --height=540 \
    --center \
    --separator="|" \
    --form \
    --tab="Основное" \
      --field="Сервер (обязательно):" "${data[0]}" \
      --field="Порт:" "${data[1]}" \
      --field="Имя пользователя:" "${data[2]}" \
      --field="Пароль (скрыт):H" "${data[3]}" \
      --field="Домен (опционально):" "${data[4]}" \
      --field="Разрешение экрана:" "${data[5]}" \
    --tab="Параметры" \
      --form \
      --field="Полноэкранный режим:CHK" "${data[6]}" \
      --field="Динамическое изменение экрана:CHK" "${data[7]}" \
      --field="Отключить проверку сертификата:CHK" "${data[8]}" \
      --field="Перенаправлять звук:CHK" "${data[9]}" \
      --field="Переподключаться при обрыве:CHK" "${data[10]}" \
      --field="Принтер:CB" "${data[11]:-None}!${printer_list#None!}" \
      --field="Смарт-карта (токен):CB" "${data[12]:-None}!${token_list#None!}" \
      --field="Папка для перенаправления:DIR" "${data[13]}" \
      --field="Имя общей папки (в сессии):" "${data[14]}" \
    --tab="Безопасность" \
      --form \
      --field="Тип шифрования:CB" "${data[15]:-nla}!nla!tls!rdp!neg" \
      --field="Команда подключения:TXT" "${data[17]}"
  )

  [ $? -ne 0 ] && exit 0

  IFS="|" read server port username password domain resolution \
      fullscreen dynres cert_ignore sound autoreconnect \
      printer_choice smartcard_choice folder_redirect folder_name encryption save_on_exit show_command <<< "$form"

  # Формируем команду
  cmd="xfreerdp /v:$server"
  [ -n "$port" ] && cmd+=":$port"
  cmd+=" /u:$username /p:$password"
  [ -n "$domain" ] && cmd+=" /d:$domain"

  if [ "$fullscreen" = "TRUE" ]; then
    cmd+=" /f"
  elif [ -n "$resolution" ]; then
    width=$(echo "$resolution" | cut -d'x' -f1)
    height=$(echo "$resolution" | cut -d'x' -f2)
    cmd+=" /size:${width}x${height}"
  fi

  [ "$dynres" = "TRUE" ] && cmd+=" +dynamic-resolution"
  [ "$cert_ignore" = "TRUE" ] && cmd+=" /cert:ignore"
  [ "$sound" = "TRUE" ] && cmd+=" /sound"
  [ "$autoreconnect" = "TRUE" ] && cmd+=" /auto-reconnect"

  [ "$printer_choice" != "None" ] && cmd+=" /printer:$printer_choice"
  [ "$smartcard_choice" != "None" ] && cmd+=" /smartcard:$smartcard_choice"

  if [ -n "$folder_redirect" ]; then
    safe_name="${folder_name:-shared}"
    cmd+=" /drive:$safe_name,$folder_redirect"
  fi

  case "$encryption" in
    nla) cmd+=" /sec:nla" ;;
    tls) cmd+=" /sec:tls" ;;
    rdp) cmd+=" /sec:rdp" ;;
    neg) cmd+=" /sec:neg" ;;
  esac

  # Показываем в текстовом поле
  data=("$server" "$port" "$username" "$password" "$domain" "$resolution" \
        "$fullscreen" "$dynres" "$cert_ignore" "$sound" "$autoreconnect" \
        "$printer_choice" "$smartcard_choice" "$folder_redirect" "$folder_name" \
        "$encryption" "$save_on_exit" "$cmd")

  # Следующий запуск покажет обновлённое значение
done

Freerdp-yad-3.png

—>

Information about FreeRDP and how to configure the client

FreeRDP is, as the name implies, a free and open-source client for the RDP protocol. NoTouch includes FreeRDP and uses it as the primary RDP client for connections to Windows desktops, Microsoft terminal servers and Hyper-V VDI. The alternative, legacy RDP client RDesktop is still part of NoTouch but its use is discouraged in favor of FreeRDP.

** Update**  With the release of NoTouch OS 3.5.1 the Microsoft RDS/RDP connection type is now supported.

Basic configuration

To create a FreeRDP session only a few steps are to be done:

  1. Create a connection
  2. Set the «Connection mode» parameter to «RDP/FreeRDP»
  3. Enter the host name to connect to into the parameter «Connection target» (if using RD gateway, please see below)
  4. Save changes
  5. FreeRDP Version is set to Default, AS such the latest version will be utilized. If you need to specify an earlier version, you may do so via the drop down dialogue
  6. If desired, navigate to the FreeRDP subgroup and edit values there

Remote Desktop Gateway support

The following parameters are most important with Remote Desktop gateway support:

  • Gateway hostname. The host name or IP address of the Remote Desktop gateway.
  • Load balancing info. This is where you put the RDWeb tsv URL into. For instance, an example value would look like tsv://VMResource.1.Win8x64-POC
  • Gateway usage method. This corresponds to the Microsoft strategies of «Detect» and «Direct». Most people will be fine with the default of «No setting».
    • Direct — Do Not Use RD Gateway
    • Detect — Use an RD Gateway server if a direct connection cannot be made the RD Session Host Server

We suggest to leave the Gateway usernameGateway password and Gateway domain parameters blank. If you do so, NoTouch will use the user credentials that the end user types in for both gateway and actual RDP connection. Thus, entering something into these parameters only makes sense if you have different user accounts for the gateway that you want to preset.

For Remote Desktop gateway support, FreeRDP version 1.2 or newer must be selected! Gateways are not supported with 1.0 or 1.1.

FreeRDP configuration

FreeRDP offers a vast variety of parameters. These relate to RDP protocol behaviour as well as FreeRDP behavior. Most of these parameters are self-explanatory and the defaults are reasonable. Please refer to FreeRDP and RDP documentation for further explanation.

Image sample reflects the user parameter that may improve session performance when using FreeRDP on Raspberry Pi based devices using NoTouch OS

Freerdp_final

2021 FreeRDP update

With the 2021 updates to FreeRDP, the client now requires the use of OpenH264 libraries. If you update or receive an error related to OpenH264, please use the steps below to add the OpenH264 libraries to the NoTouch OS devices

Log into NoTouch Center and go to ‘Configuration’ Scroll down to ‘Download OpenH264 Libraries’ and select ‘Download Now’

OpenH264_1

When asked if you want to download the latest H264 libraries click ‘OK’

OpenH264_2

If successful, you will see the libraries that have been downloaded, and then click save. To ensure all libraries are downloaded by the NoTouch OS endpoints a reboot will be required.

OpenH264_3

If your NoTouch Center appliance has no direct access to the internet It is possible to download these files separately and then upload them to NoTouch Center for deployment via the Extension Module feature.

You can download the latest version from here and then upload it to Misc.Files as shown below.

H.262Update1

Once the file has been uploaded you can then deploy the files using the Extension Modules option. Go to your Group Settings/Extension and configure the parameters as shown below.

H.264Update2

Next go to Group Settings/Security and ensure ‘Check Certificates on System Downloads’ is set to off. Then announce the changes and reboot your endpoints, and the file will be deployed once the devices have rebooted.

H.264Update3

You can check the status of the install by connecting to the web interface of the device and under Diagnostic go to Debug Information/Cache and you should see that the files have been deployed.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Управление дисками форматирование windows
  • Самые важные драйвера для windows 10
  • Как вывести компьютер из спящего режима windows 10 клавиатурой
  • Как подключить bluetooth наушники к компьютеру или ноутбуку на windows 10
  • Как называется служба iis в windows 7