top of page
Writer's pictureMateusz Kaczyński

Remote session - RDP

Updated: Apr 30



remote desktop protocol


KB000005



Na początek postaram się odpowiedzieć na kilka pytań.


💢 Które zasoby sprzętowe używane są bardziej?


No więc przekonanie jest takie że użycie sprzętu rozkłada się na różne obszary. Nie definiuje się czy nie bada tego.




💢 Czy RDP to jest program komputerowy?


Samo RDP ( remote desktop protocol ) to nie program. Jest to specyfikacja lub protokół komunikacyjny, który pozwala na zdalne interakcje z komputerem. Nie chodzi tu o emulację w klasycznym rozumieniu tego słowa, ale o przesyłanie informacji pomiędzy zdalnym i lokalnym komputerem, co umożliwia kontrolę nad zdalnym systemem.




💢 Czy używanie RDP w domowych warunkach jest bezpieczne?


Zakładając że chce się połączyć z systemem w domu, używa się silnego hasła, systemy są aktualizowane, sieć domowa jest zabezpieczona to tak.




💢 Jak działa to całe zdalne łączenie się i używanie tego RDP?


Posłużę się poniższym diagramem który na pewnym poziomie ogólności opisuje proces:






Klient RDP ( xfreerdp ) na Twoim komputerze inicjuje połączenie do innego komputera używając jego adresu IP i, jeśli to konieczne, niestandardowego numeru portu.


Następnie klient i serwer RDP na docelowym komputerze negocjują parametry bezpieczeństwa, takie jak wykorzystanie szyfrowania do ochrony danych przesyłanych między nimi. W przypadku xfreerdp, można dodatkowo wybrać poziom szyfrowania w opcjach połączenia.


Po ustaleniu parametrów bezpieczeństwa, klient przesyła dane uwierzytelniające do weryfikacji przez serwer. Uwierzytelnianie odbywa się na podstawie nazwy użytkownika i hasła, które muszą być zgodne z kontem użytkownika na komputerze docelowym.


Jeśli dane uwierzytelniające są poprawne, serwer stworzy tzw. remote session ze środowiskiem roboczym z zdalnego systemu.Warto tu podkreślić rolę aktualizacji systemów. Dzięki najnowszym danym, zastosowaniu poprawek, możliwe jest zachowanie integralności oraz przestrzeganie zasad bezpieczeństwa. Jak wkrótce się dowiesz, brak spójności np. pomiędzy wersjami oprogramowania ogranicza użycie narzędzia, jest przyczyną konfliktów a niekiedy nawet błędów krytycznych. Regularnie dbaj o aktualizacje.



Zadania, których nie powinniśmy realizować za pomocą RDP



Mam tu na myśli przede wszystkim:


  • wszelkiego rodzaju działania wymagające wysokiej wydajności graficznej,

  • automatyzacje na dużą skalę,

  • długotrwałe połączenia w systemach krytycznych,

  • administrowanie serwerami tą metodą jako główną




Do czego używać RDP?



Rekomenduję wykorzystać tą metodę jeśli:


  • Chcesz zarządzać systemem operacyjnym lub oprogramowaniem, gdy nie ma do niego fizycznego dostępu

  • Potrzebujesz dostępu do aplikacji które kiedyś stworzy_ś lub otrzymałeś ponieważ zawierają pierwotną ale poprawną konfigurację a nie został zrobiony backup i nie zastosowano systemu kontroli wersji

  • Posiadasz licencję np. oprogramowania na jedno stanowisko i nie chcesz ponosić kolejnych kosztów zakupu

  • Z jakiegoś powodu konkretna aplikacja może zostać uruchomiona tylko w określonym systemie

  • Chcesz udzielić wsparcia technicznego członkom rodziny, skontrolować ich działania lub wydarzył się incydent który wymaga natychmiastowej reakcji

  • Masz określone cele/potrzeby edukacyjne

  • Chcesz udostępnić USB ze swojego urządzenia na drugim i wykonać transfer plików

  • Posiadasz dane które chcesz przenieść, ale zawartość nie powinna trafić na serwery stron 3



W niektórych scenariuszach, to rozwiązanie jest sporym ułatwieniem operacyjnym, a dzięki Ubuntu jego wykorzystanie staje się jeszcze łatwiejsze.



By przejść do konfiguracji, muszę poczynić pewne założenia:


  • Korzystasz z Ubuntu >=22.04.4 LTS

  • Masz zainstalowane xfreerdp

  • Chcesz się podłączyć do Windows 10/11

  • System Windows jest skonfigurowany pod RDP

  • Host do którego będziesz się łączyć znajduje się w twojej sieci domowej

  • Łącze internetowe pozwala na utrzymanie sesji

  • Masz skonfigurowany odpowiednio firewall na swoim Ubuntu

  • Nie grzebał_ś przy domyślnych portach

  • masz zainstalowany python ( opcjonalne )





xfreerdp - remote session



Z jakich parametrów trzeba zbudować polecenie



  • /v:<ip adress> - docelowego hosta



Jakie parametry warto dodać


kolorem czerwonym oznaczono wartości parametrów które są wymagane


  • /u:<nazwa użytkownika>

  • /p:<hasło do konta>

  • /network:<auto | lan> - konfiguracja sieci

  • /clipboard - działa z tekstem

  • /multimon - rozszerza okno na wszystkie monitory

  • /f - fullscreen gdy masz jedno okno

  • /monitors:<0,1,2..> - jeśli chcesz aby sesja otwierała się na konkretnym ekranie

  • /sound - aby mieć dźwięk w systemie do którego się łączysz

  • /drive:driveName,/path/to/directory - mapowanie dysku dzięki któremu przeniesiesz z łatwością dane w obie strony



Jak finalnie wyglądało by tak sparametryzowane polecenie:


Z WYKORZYSTANIEM JEDNEGO MONITORA

xfreerdp /u:username /p:MyPassword123! /network:lan /clipboard /f /monitors:2 /sound /drive:pobrane_ubuntu,/home/user/Pobrane


Z WYKORZYSTANIEM WSZYSTKICH MONITORÓW

xfreerdp /u:username /p:MyPassword123! /network:lan /clipboard /multimon /sound /drive:pobrane_ubuntu:,/home/user/Pobrane







Tips & Tricks



Porada 1


Open source ma to do siebie że nie wszystko działa od razu i w każdej wersji. Niektóre funkcjonalności mogą działać w trybie ograniczonym lub nie stabilnie. Tak jest np. z parametrem usb.


Jak sprawić by usb było widoczne? To bardzo proste, wystarczy że:


  • użyjesz polecenia df -h i dowiesz się jaka jest ścieżka do twojego USB

  • jako dysk wirtualny podasz usb: /drive:usb

  • i dodasz ścieżkę do parametru


Całość finalnie powinna wyglądać tak:


xfreerdp /u:username /p:password /v:remote_address /drive:usb,/media/user/nazwa usb



Porada 2


Bywa tak że tych sesji otwieramy kilka na różne systemy. Wtedy przydało by się jakoś opisać okna, tak aby nie popełnić błędu czy zwyczajnie nie zgubić orientacji.


By opisać okno zgodnie z własną konwencją użyj parametru /t z opisem


/t:"mój opis tego okna"*

*Jeżeli twój opis zawiera spacje, musisz użyć: " "




Porada 3


Nie zawsze używamy trybu fullscreen, a wręcz chcemy mieć wpływ na rozmiar okna z otwartą sesją. By móc zarządzać jego wielkością i szerokością za pomocą myszy, dodaj parametr /smart-sizing




Porada 4


By nieco zoptymalizować wydajność i jakość sesji zdalnego pulpitu można dodać poniższy pakiet parametrów:


  • /gfx,

  • /rfx,

  • /compression,

  • /mouse-motion,

  • /max-fast-path-size:4096,

  • /dynamic-resolution ( wyklucza /smart-sizing )*



*krótkie wyjaśnienie:


  • /smart-sizing: Skaluje zawartość zdalnego pulpitu do rozmiaru okna klienta bez zmiany faktycznej rozdzielczości sesji na serwerze. Umożliwia to łatwe dostosowanie widoku zdalnego pulpitu do różnych rozmiarów okien na lokalnym komputerze, co jest przydatne, gdy chcesz mieć stałą rozdzielczość zdalnego pulpitu, ale chcesz dostosować wielkość okna klienta RDP do swoich potrzeb.

  • /dynamic-resolution: Dostosowuje rozdzielczość zdalnego pulpitu do rozmiaru okna klienta. Gdy zmieniasz rozmiar okna klienta RDP ( na przykład przez zmaksymalizowanie go ), rozdzielczość zdalnego pulpitu jest aktualizowana, aby odpowiadała nowemu rozmiarowi okna. Ta opcja jest szczególnie użyteczna, jeśli chcesz, aby jakość obrazu była optymalna przy różnych rozmiarach okna.

Obie opcje mają swoje zastosowania w zależności od tego, czy priorytetem jest zachowanie jakości obrazu przy zmianie rozmiaru okna ( dynamic-resolution ), czy też elastyczność w dostosowywaniu rozmiaru okna bez wpływu na rozdzielczość zdalnego pulpitu ( smart-sizing ).




Porada 5


Może się okazać że nie masz pojęcia jakie są dane do logowania, w tym sensie że od dłuższego czasu logował_ś się za pomocą Windows Hello, PIN, YubiKey itp a nie przy użyciu danych bazowych. Spróbuj użyć swojego loginu i hasła do konta Microsoft.


xfreerdp pozwala sprawdzić bez uruchamiania sesji czy podane przez ciebie kredki ( login i hasło ) są poprawne.


Załóżmy że:



Wtedy polecenie powinno wyglądać następująco

xfreerdp /v:111.111.11.111 /u:login.do.konta.microsoft@example.com /p:fYpZJSm6WRbuShog5IQeDSZdUJC8AnaF /auth-only

Jeżeli dane konta są nieprawidłowe otrzymasz wynik:


[11:05:58:822] [640364:640365] [ERROR][com.freerdp.core] - Authentication only, exit status 1


w przeciwnym wypadku otrzymasz:


[11:07:26:627] [641193:641194] [ERROR][com.freerdp.core] - Authentication only, exit status 0

[11:07:26:627] [641193:641194] [ERROR][com.freerdp.client.x11] - Authentication only, exit status 0


Gdzie:

  • zero - oznacza powodzenie

  • > 0 - oznacza nie powodzenie


Dopisek .x11 świadczy o uruchomionym GUI mimo że jest to tryb /auth-only. Istotny jest wynik testu.







xfreerdp oferuje znacznie więcej, co stwarza okazję do tego aby napisać skrypt. Dzięki temu że Ubuntu zawiera już w sobie python, nie jesteś ograniczon_ tylko do basha. Przejdź do mojego GitHub, aby zobaczyć przykładowy skrypt wykorzystujący niektóre ww. funkcjonalności.




Jeśli chcesz skorzystać z kodu, pobierz go lokalnie i dostosuj według własnych potrzeb.






LINKI:


Manual xfreerdp:


Tu krótka informacja: zwróć uwagę jaką masz wersję zainstalowaną ( xfreerdp /version ), a jaka jest dostępna u producenta. Wiele z opisanych parametrów może nie działać z powodu rozbieżności. Najnowsza wersja może nie być dostępna w repozytorium Ubuntu. Jeśli chcesz przetestować działanie, pamiętaj o przygotowaniu odizolowanego środowiska.


Twórcy:


GitHub xfreerdp:






logo ubuntu


Commenti


bottom of page