FreeRDP
< Soft
| 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 xfreerdp3
Техническая часть
Согласно https://miloserdov.org/?p=4508:
Разрешить доступ всем (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
Чтобы заработало подключение из 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
Сервер (с возможностью логина на рабочий стол)
Есть возможность настроить сервер на доступ к логин-менеджеру и входить на рабочий стол как локальный пользователь (и подключаться к уже локально вошедшему пользователю соответственно). Так-же будет можно выходить с рабочего стола с дальнейшей возможностью переподключения с логин-менеджеру. При такой настройке rdp сервер будет стартовать из-под учетной записи root.
0. Устанавливаем пакеты с сервером, если они еще не установлены:
# apt-get install freerdp3-server xfreerdp3
1. Если не хочется лишней путанницы то удаляем "коробочный" файл сервиса freerdp-server.
# systemctl disable --now freerdp-server.service # rm -f /usr/lib/systemd/user/freerdp-server.service
2. Создаем несколько самописных скриптов, которые будут делать за нас всю работу:
Скрипт "/usr/bin/ss-rdpserver-disable" выключает rdp-сервер из автозагрузки:
#!/bin/bash if ! `head -n 1 /etc/sudoers &> /dev/null`; then echo -e "!Ошибка, нужны права root.\n" exit 1 fi if ! [ -f "/usr/bin/freerdp-shadow-cli" ]; then echo -e "!Ошибка, freerdp3-server не установлен.\n" exit 1 fi systemctl disable --now rdpserver echo -e "Выполнено.\n" exit 0 #VER:250930.01
Скрипт "/usr/bin/ss-rdpserver-enable" включает rdp-сервер и добавляет в автозагрузку.
#!/bin/bash if ! `head -n 1 /etc/sudoers &> /dev/null`; then echo -e "!Ошибка, нужны права root.\n" exit 1 fi if ! [ -f "/usr/bin/freerdp-shadow-cli" ]; then echo -e "!Ошибка, freerdp3-server не установлен.\n" exit 1 fi if ! [ -f "/etc/systemd/system/rdpserver.service" ]; then cat <<EOF > "/etc/systemd/system/rdpserver.service" [Unit] Description=FreeRDP 3 server for connect to local session. After=display-manager.service [Service] User=root ExecStart=/usr/sbin/rdpserver-start-daemon Restart=on-failure RestartSec=2 [Install] WantedBy=graphical.target EOF chown -f root:root "/etc/systemd/system/rdpserver.service" chmod -f 0644 "/etc/systemd/system/rdpserver.service" fi if ! [ -f "/etc/rdpusers.sam" ]; then echo "" > "/etc/rdpusers.sam" chown -f root:root "/etc/rdpusers.sam" chmod -f 0600 "/etc/rdpusers.sam" fi systemctl disable --now rdpserver sleep 1s systemctl enable --now rdpserver echo -e "Выполнено.\n" exit 0
Скрипт "/usr/bin/ss-rdpserver-useradd" создает новых пользователей и меняет пароли уже существующим.
#!/bin/bash
if ! `head -n 1 /etc/sudoers &> /dev/null`; then
echo -e "!Ошибка, нужны права root.\n"
exit 1
fi
targetUser=""
targetPasswd=""
if ! [ -f "/usr/bin/freerdp-shadow-cli" ]; then
echo -e "!Внимание, freerdp3-server не установлен.\n"
#exit 1
fi
if [ -n "$1" ]; then
targetUser="$1"
else
read -p "Введите имя пользователя для добавления: " targetUser
if [ -z "$targetUser" ]; then
echo -e "!Ошибка, указано пустое имя пользователя.\n"
exit 1
fi
fi
if ! `echo "$targetUser" | grep "^[a-zA-Z0-9][-_.@a-zA-Z0-9]*[a-zA-Z0-9]$" &> /dev/null`; then
echo -e "!Ошибка, имя пользователя содержит недопустимые символы.\n"
exit 1
fi
if [ "$targetUser" = "root" ]; then
echo -e "!Ошибка, указаное имя пользователя использовать запрещено.\n"
exit 1
fi
read -p "Введите пароль для пользователя \"$targetUser\": " targetPasswd
if [ -z "$targetPasswd" ]; then
echo -e "!Ошибка, использование пустых паролей запрещено.\n"
exit 1
fi
targetHash=`winpr-hash -u $targetUser -p $targetPasswd`
if [ -f "/etc/rdpusers.sam" ]; then
if `grep "^${targetUser}:::" "/etc/rdpusers.sam" &> /dev/null`; then
sed -i "/^${targetUser}:::/d" "/etc/rdpusers.sam"
fi
fi
echo "${targetUser}:::${targetHash}:::" >> "/etc/rdpusers.sam"
echo -e "Выполнено."
exit 0
#VER:251001.01
Скрипт "/usr/bin/ss-rdpserver-userdel" удаляет пользователей rdp-сервера (без сброса их активной сессии):
#!/bin/bash
if ! `head -n 1 /etc/sudoers &> /dev/null`; then
echo -e "!Ошибка, нужны права root.\n"
exit 1
fi
if ! [ -f "/usr/bin/freerdp-shadow-cli" ]; then
echo -e "!Внимание, freerdp3-server не установлен.\n"
#exit 1
fi
targetUser=""
if [ -n "$1" ]; then
targetUser="$1"
else
read -p "Введите имя пользователя для удаления: " targetUser
if [ -z "$targetUser" ]; then
echo -e "!Ошибка, указано пустое имя пользователя.\n"
exit 1
fi
fi
if [ -z "$targetUser" ]; then
echo -e "!Ошибка, пользователь не указан.\n"
exit 1
fi
if [ "$targetUser" = "users" ]; then
echo -e "!Ошибка, указаное имя пользователя использовать запрещено.\n"
exit 1
fi
if [ -f "/etc/rdpusers.sam" ]; then
if `grep "^${targetUser}:::" "/etc/rdpusers.sam" &> /dev/null`; then
sed -i "/^${targetUser}:::/d" "/etc/rdpusers.sam"
echo -e "Выполнено.\n"
exit 0
fi
fi
echo -e "!Ошибка, пользователь \"$targetUser\" не найден.\n"
exit 1
#VER:250930.01
Скрипт "/usr/bin/ss-rdpserver-userlist" показывает список пользователей rdp-сервера.
#!/bin/bash if ! `head -n 1 /etc/sudoers &> /dev/null`; then echo -e "!Ошибка, нужны права root.\n" exit 1 fi if ! [ -f "/usr/bin/freerdp-shadow-cli" ]; then echo -e "!Внимание, freerdp3-server не установлен.\n" #exit 1 fi if [ -f "/etc/rdpusers.sam" ]; then if [ "$(cat /etc/rdpusers.sam | wc -l)" = "0" ]; then echo -e "!Пользователи не найдены.\n" exit 1 fi fi echo -e " Пользователи сервера RDP:\n" sed 's/:::.*:::$//' "/etc/rdpusers.sam" | sed '/^users:::/d' echo -e "\nВыполнено.\n" exit 0 #VER:250930.01
И скрипт "/usr/sbin/rdpserver-start-daemon" который будет выступать непосредственно в качестве сервиса:
#!/bin/bash
if ! [ -f "/etc/rdpusers.sam" ]; then
echo "!Error, cant find file \"/etc/rdpusers.sam\"."
exit 1
fi
AUTH=`ps aux | grep "\-auth " | head -n 1`
AUTH=${AUTH/*\-auth /}
AUTH=${AUTH/ */}
export DISPLAY=:0
export XAUTHORITY=$AUTH
if [ -f "/var/log/rdpserver.log" ]; then
logSize=$(stat -c%s /var/log/rdpserver.log)
if [ $logSize -gt 10240000 ]; then
cat /var/log/rdpserver.log > /var/log/rdpserver.old.log
echo "" > /var/log/rdpserver.log
fi
else
touch /var/log/rdpserver.log
chmod -f 0644 /var/log/rdpserver.log
chown -f root:root /var/log/rdpserver.log
fi
/usr/bin/freerdp-shadow-cli /sam-file:/etc/rdpusers.sam /sec:nla -gfx-avc444 &>> /var/log/rdpserver.log
exit $?
#VER:250930.01
3. Делаем скрипты исполняемыми:
# chmod 0755 /usr/bin/ss-rdpserver-* # chmod 0755 /usr/sbin/rdpserver-start-daemon
4. Добавляем сервер в автозагрузку и запускаем:
# ss-rdpserver-enable
5. Добавляем пользователей для подключения (или меняем пароли существующим):
# ss-rdpserver-useradd testuser1 # ss-rdpserver-useradd testuser2
6. Удаляем лишних пользователей:
# ss-rdpserver-userdel testuser2
Далее пробуем подключится клиентом из-вне. Вывод сообщений сервера можно посмотреть в файлах "/var/log/rdpserver.log" и "/var/log/rdpserver.old.log"
Клиент
Основные возможности 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> |
Параметры принятия сертификата. Используйте с осторожностью!
|
| Удаленное приложение | /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
$ 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
См. GUI-клиенты RDP
