Zdalny dostęp do komputera

Zdalny dostęp do komputera przez Internet otwiera przed nami bardzo szerokie możliwości. Możemy z domu zalogować się na komputer firmowy i dokończyć pracę, możemy z laptopa czy tabletu zalogować się do komputera domowego i pokazać znajomym zdjęcia z wakacji. Z resztą jeśli czytasz ten wpis oznacza to, że masz już taką potrzebę.

Zdalny dostęp przez Secure Shell (SSH)

SSH to następca protokołu Telnet służącego to terminalowego łączenia się ze zdalnymi komputerami. SSH umożliwia ponadto przesyłanie plików, tunelowanie czy zdalną kontrolę zasobów. Od Telnetu różni się przede wszystkim tym, że SSH jest protokołem szyfrowanym, a zatem bezpiecznym. Co prawda SSH możemy zainstalować na dowolnym systemie operacyjnym, jednak najbardziej rozpowszechniony jest ona na systemach unixopodobnych. Zdalny dostęp realizowany przez SSH odbywa się domyślnie w trybie tekstowym, ale po włączeniu opcji X11 forwarding możliwe jest uruchamiania aplikacji graficznych na stacji odległej z widocznym interfejsem użytkownika na lokalnym serwerze X.

InstalacjÄ™ SSH na Ubuntu / Linux Mint / LMDE przeprowadzamy jednym prostym poleceniem:

Polecenie to zainstaluje zarówno klienta jak i serwer SSH.
Do łączenia z poziomu Linuksa ze zdalnym komputerem służy komenda ssh, oto przykładowe użycie:

użytkownika podajemy tylko jeśli nazwa użytkownika zdalnego jest różna od lokalnego

Zdalny dostęp do serwera SSH z poziomu Windowsa, możemy zrealizować przy pomocy świetnego programu PuTTY

PuTTY Configuration

PuTTY Configuration

Zdalny dostęp do serwera SSH z Androida możemy zrealizować instalując klienta ConnectBot

Jak wspomniałem powyżej SSH można wykorzystać do przesyłania plików, klientem który to umożliwia jest świetny program FileZilla. Program ten występuje w wersjach zarówno dla Linuksa jak i Windowsa. W Ubuntu / Linux Mint / LMDE instalujemy go jednym prostym poleceniem:

FileZilla

FileZilla

Wspomniałem także, że SSH umożliwia także zdalny dostęp do aplikacji pracujących w środowisku graficznym. W przypadku Linuksa wystarczy do polecenia ssh dodać przełącznik -X lub -Y. W przypadku Windowsa musimy zainstalować serwer X. Zdecydowanie najlepszą implementacją serwera X dla Windows jest Xming.

Xming

Xming

Skoro serwer X został zainstalowany i uruchomiony na naszym Windowsie, uruchamiamy teraz klienta PuTTY. Na ekranie konfiguracyjnym przechodzimy do Connection -> SSH -> X11 i zaznaczamy Enable X11 forwarding. Teraz już możemy zalogować się do zdalnego serwera SSH i odpalić jaką aplikację pracującą w środowisku graficznym. Ja dla przykładu uruchomiłem w Linux Mint 13 uruchomiłem Edytor plików tekstowych pluma, którego interfejs graficzny widzimy w Windows XP.

SSH X11 forwarding

SSH X11 forwarding

SSH standardowo pracuje na porcie 22, konieczne jest zatem odblokowanie tego portu na systemowym firewallu, co w przypadku Linuksa opisuję w artykule o iptables a w przypadku Windowsa w artykule o SSH na Cygwinie. Dodatkowo musimy przekierować ten port na naszym routerze.

Zdalny dostęp - przekierowanie portu 22

Zdalny dostÄ™p – przekierowanie portu 22

Zdalny dostęp przez Pulpit zdalny (RDP)

Pulpit zdalny (ang. Remote Desktop Protocol w skrócie RDP) to natomiast protokół, który natywne powstał w środowisku Windows. Usługa RDP jest dostępna we wszystkich systemach operacyjnych Windows od wersji Windows 2000, z wyjątkiem edycji Home, w których nie występuje serwer RDP. Pulpit zdalny został także przeniesiony na systemy unixopodobne. Zdalny dostęp realizowany przez protokół RDP ma tę zaletę, że pracujemy w środowisku graficznym. Ma to szczególne znaczenie w przypadku Windows, gdyż pod tym systemem nie mamy tak szerokiego pola manewru pracując w linii komend jak to jest w przypadku Linuksa.

Podobnie jak to było w przypadku SSH tak i w przypadku Pulpitu zdalnego konieczne jest odblokowanie portu na systemowym firewallu oraz przekierowanie tegoż portu na naszym routerze. W przypadku SSH był to port 22, natomiast w przypadku Pulpitu zdalnego standardowo jest to port 3389.

Zdalny dostęp - przekierowanie portu 3389

Zdalny dostÄ™p – przekierowanie portu 3389

Pulpit zdalny włączamy w Windosach klikając odpowiednio Panel sterowania -> System -> Ustawienia zdalne

Ustawienia zdalne

Ustawienia zdalne

Jak widać w przypadku Windows Vista / 7 mamy 3 opcje do wyboru:

  1. Nie zezwalaj na połączenie z tym komputerem
  2. Zezwalaj na połączenie z komputerów z dowolną wersją Pulpitu zdalnego (mniej bezpieczne)
  3. Zezwalaj na połączenie tylko z komputerów, na których Pulpit zdalny jest uruchomiony z uwierzytelnianiem na poziomie sieci (bardziej bezpieczne)

Czym różni się opcja druga i trzecia i dlaczego warto wybrać opcję trzecią? Wybierając drugą opcję połączenie Pulpitu zdalnego zostaje w pełni zestawione i dopiero w tym momencie może nastąpić uwierzytelnienie użytkownika już na maszynie do której się podłączyliśmy. Pisząc wprost widzimy ekran logowania maszyny zdalnej, na którym wybieramy użytkownika i podajemy hasło. W przypadku trzecim użytkownika i hasło podajemy we wczesnej fazie zestawiania połączenia w kliencie Pulpitu zdalnego, który w kliencie z Windowsa nazywa się Połączenie pulpitu zdalnego, po czym następuje uwierzytelnienie użytkownika i dopiero wtedy zostaje w pełni zestawiona sesja terminalowa. Jest to zatem rozwiązanie bezpieczniejsze i nieco mniej obciążające system. Uwierzytelnianie na poziomie sieci (Network Level Authentication) obsługiwane jest w Windows Vista i nowszych. Windows 2000 / XP nie obsługują uwierzytelniania na poziomie sieci, więc w przypadku tych systemów nie będzie tam trzeciej opcji.

Uwierzytelnienie na poziomie sieci w kliencie RDP uruchomionym na Windowsie XP

Z poziomu Windows XP możliwe jest również zalogowanie się na zdalnej maszynie na której włączono uwierzytelnianie na poziomie sieci, ale wymaga to kilku zabiegów.

Przede wszystkim musimy mieć zainstalowany dodatek Service Pack 3 dla Windowsa XP. W razie wątpliwości możesz kliknąć na Panel sterowania -> System i na zakładce Ogólne sprawdzić czy zainstalowany jest Dodatek Service Pack 3.

Następnie musimy zaktualizować klienta usługi Podłączanie pulpitu zdalnego do wersji 7.0, którą ściągniemy z tego miejsca.

Na koniec uruchamiamy Edytor rejestru regedit i przechodzimy do klucza HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages gdzie dopisujemy na końcu wartość tspkg

Security Packages

Security Packages

Następnie przeskakujemy do klucza HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SecurityProviders gdzie na końcu dopisujemy wartość credssp.dll

SecurityProviders

SecurityProviders

Jeśli nie chcesz się bawić w ręczną edycję rejestru możesz skorzystać z mojego gotowego pliku wpisów rejestru. Przed wypróbowaniem Połączenia pulpitu zdalnego z włączonym uwierzytelnianiem na poziomie sieci musimy jeszcze zrestartować system.

Poniżej przedstawiam zrzut ekranu Połączenia pulpitu zdalnego z Windowsa XP SP3 na Windowsa 7 z włączonym uwierzytelnianiem na poziomie sieci.

Połączenie pulpitu zdalnego

Połączenie pulpitu zdalnego

Wielodostępny Pulpit zdalny (ang. Concurrent Remote Desktop)

W wersjach serwerowych Windows możliwe jest jednoczesne zalogowanie wielu użytkowników. W pozostałych wersjach, gdy do komputera zalogowany jest jakiś użytkownik lokalnie, przy próbie zalogowania przez Pulpit zdalny pojawi się stosowna informacja wraz z pytaniem, czy mimo to chcemy się zalogować zdalnie. Gdy odpowiemy twierdząco, użytkownikowi lokalnemu pojawi się monit czy zezwala na logowanie zdalne. Jeśli się zgodzi zostanie on wylogowany, a użytkownik zdalny zalogowany. Jest to zdecydowanie bez sensu. Na szczęście moje zdanie na ten temat podziela niejaki deepxw, autor maleńkiego ale jakże przydatnego programu Universal Termsrv.dll Patch V1.0b Build 20090425. Program ten modyfikuje bibliotekę termsrv.dll, tak aby możliwe jednoczesne zalogowanie i korzystanie z maszyny przez wielu użytkowników. Na stronie autor pisze, że program wspiera Windows XP SP2 i SP3, Vista SP1 i SP2 oraz Windows 7, zarówno architektury 32-bitowe (i386) jak i 64-bitowe (amd64). Ja jednak przetestowałem go z powodzeniem na Windows 7 SP1. Obsługa programu jest banalnie prosta, archiwum rozpakowujemy do dowolnego katalogu po czym w zależności od architektury systemu uruchamiamy odpowiedni plik wykonywalny.

Universal Termsrv.dll Patch

Universal Termsrv.dll Patch

Klikamy Patch, po czym restartujemy komputer.

Od tej chwili do naszego komputera mogą być jednocześnie zalogowani użytkownicy zdalni oraz użytkownik lokalny.

Zalogowani użytkownicy

Zalogowani użytkownicy

Jak widać użytkownik basienka jest zalogowany lokalnie i to on wykonał ten zrzut ekranu, natomiast użytkownik jazz jest zalogowany z telefonu Motorola RAZR XT910, pracującego pod kontrolą Androida, na którym została uruchomiona aplikacja 2X Client. Jak widać obie sesje są aktywne.

Wielodostępny Pulpit zdalny (ang. Concurrent Remote Desktop) na Windows 8

Użytkownik zalogowany

Użytkownik zalogowany

Jak wspomniałem powyżej patcher ten działa na Windowsach od wersji XP SP2 do 7 SP1. W przypadku Windows 8 musimy użyć innego patchera. Windows 8 Patcher jest dostępny na forum My Digital Life. Obsługuje on wszystkie edycje Windows 8 dla architektur i386 i amd64. Ściągamy i uruchamiamy ten maleńki programik. W linii komend powinien nam się wyświetlić następujący komunikat:

Po restarcie możemy cieszyć się już wielodostępnym Pulpitem zdalnym na Windows 8.

Wielodostępny Pulpit zdalny (ang. Concurrent Remote Desktop) na Windows 8.1 oraz Windows 10

  1. ÅšciÄ…gamy spatchowany plik termsrv.dll:
    • dla Windows 8.1 dostÄ™pny np tu w archiwum termsrv.8.1-64.rar,
    • a dla Windows 10 dostÄ™pny np tu w archiwum termsrv_patched_windows_10_august_2015.zip
  2. Rozpakowujemy gdzieÅ› to archiwum.
  3. Zatrzymujemy Usługi pulpitu zdalnego (TermService), co spowoduje zatrzymanie także usługi Przekierowanie portu trybu użytkownika usług pulpitu zdalnego (UmRdpService).
  4. Przejmujemy na własność plik ‪C:\Windows\System32\termsrv.dll oraz dodajemy sobie prawo zapisu do niego.
  5. Kopiujemy spatchowanÄ… bibliotekÄ™ termsrv.dll do C:\Windows\System32\termsrv.dll.
  6. Odbieramy sobie prawo zapisu i przywracamy domyślnego właściciela pliku, którym jest TrustedInstaller. I tu taki mały myk trzeba zastosować, otóż w oknie gdzie wprowadzamy nazwę użytkownika wpisujemy NT SERVICE\TrustedInstaller, po kliknięciu przycisku Sprawdź nazwy zmieni się ona na TrustedInstaller.
    NT SERVICE - TrustedInstaller

    NT SERVICE – TrustedInstaller

  7. Uruchamiamy usługę Przekierowanie portu trybu użytkownika usług pulpitu zdalnego (UmRdpService), która spowoduje także start Usług pulpitu zdalnego (TermService).

Na wszelki wypadek, gdyby ktoś namieszał sobie z uprawnieniami, poniżej przedstawiam zrzut ekranu, jak one powinny wyglądać.

Uprawnienia termsrv.dll

Uprawnienia termsrv.dll

Zdanly pulpit z Androida

Zdalny dostęp do usługi RDP z Androida możemy zrealizować instalując bezpłatną aplikację 2X Client for RDP/Remote Desktop (niestety nie obsługuje ona uwierzytelnienia na poziomie sieci) lub płatną Remote Desktop Client.

Zdalny dostęp a oszczędzanie energii

Jest rzeczÄ… oczywistÄ…, że komputer do którego chcemy mieć zdalny dostÄ™p musi być wÅ‚Ä…czony. Z drugiej jednak strony trudno trzymać wÅ‚Ä…czony komputer tylko na wypadek, że być może chcielibyÅ›my z niego zdalne skorzystać. Na szczęście istnieje proste rozwiÄ…zanie tego problemu – możemy zdalnie wÅ‚Ä…czyć nasz komputer. Tak! To prawda i nie jest to trudne, wszystko opisaÅ‚em w artykule Wake on LAN przez Internet.

Zdalne wyłączanie komputera

Skoro możemy zdalnie włączyć komputer, dobrze by było także móc go zdalnie wyłączyć. Zatem tytułem uzupełnienia podam po 4 komendy dzięki, którym z linii komend będziemy mogli:

  1. uśpić (wstrzymać) system
  2. zahibernować system
  3. zamknąć system
  4. zrestartować system

dla Ubuntu / Linux Mint / LMDE i pochodnych dystrybucji Linuksa będą to:

  1. sudo pm-suspend
  2. sudo pm-hibernate
  3. sudo halt
  4. sudo reboot

a dla Windowsa odpowiednio:

  1. rundll32 powrprof.dll,SetSuspendState
  2. rundll32 powrprof.dll,SetSuspendState Hibernate
  3. shutdown -s
  4. shutdown -r

Brak możliwości komentowania.