SSH, więcej niż bezpieczna powłoka

SSH (bezpieczna powłoka) jest protokołem, który pomaga nam bezpiecznie uzyskać dostęp do zdalnych komputerów, w zasadzie tak jak robi to Telnet, ale wykorzystuje algorytmy szyfrowania, które pomagają nam zapewnić bezpieczeństwo naszego połączenia, zwłaszcza jeśli chcemy uzyskać dostęp do komputerów, które wykonują ważną funkcję organizacja.

Generalnie, aby uzyskać dostęp, musimy podać naszą nazwę użytkownika i adres komputera, tak aby serwer SSH poprosił nas o hasło dostępu:

ssh usuario@equiporemoto

Od momentu, gdy klient inicjuje pierwsze połączenie między komputerem zdalnym a nami, informacje już bezpiecznie podróżują, uniemożliwiając komuś uzyskanie naszych danych dostępu do tego komputera, jednak SSH jest protokołem bardzo elastycznym, który oferuje nam wiele możliwości.

SCP

Pierwszym z nich jest możliwość przesyłania plików między klientem a komputerem zdalnym, bez konieczności montowania serwera FTP lub NFS, po prostu za pomocą SCP (Secure CoPy), który implementuje większość serwerów SSH:

scp archivo.tar.gz usuario@equiporemoto:/home/usuario
scp usuario@equiporemoto:/var/log/messages messages.txt

Tunelowanie SSH

Ta funkcja jest bardzo przydatna, ponieważ umożliwia nam wysyłanie i odbieranie informacji, które niekoniecznie są poleceniami powłoki między klientem a komputerem zdalnym, na przykład zwykłe przeglądanie. Jeśli nie wiesz, jakie może to mieć zastosowanie, zastanów się nad następującymi kwestiami: musisz uzyskać dostęp do strony, ale miejsce, w którym się znajdujesz, ma zaimplementowaną zaporę ogniową, która blokuje dokładnie tę stronę, dlatego możemy `` tunelować '' za pomocą zdalnego komputera, który nie ma wspomniane bloki i przeglądanie wspomnianej strony za pośrednictwem naszej sesji SSH:

ssh -D 8888 usuario@equiporemoto

Po nawiązaniu połączenia nasz klient SSH „nasłuchuje” na porcie 8888 jako serwer proxy, dzięki czemu możemy skonfigurować naszą przeglądarkę, a cały ruch jest przesyłany przez sesję SSH

Tunel SSH

Innym przykładem, który przychodzi mi do głowy, jest sytuacja, gdy z powodu pewnych ograniczeń geograficznych nie możemy uzyskać dostępu do usługi internetowej z miejsca, w którym się znajdujemy, podczas tworzenia tunelu wspomniana usługa sieciowa wykrywa adres IP naszego zdalnego serwera jako źródło, a nie adres IP klienta. Jest to w pewnym sensie odpowiednik VPN (wirtualnej sieci prywatnej)

Odwróć SSH

Jeśli z jakiegoś powodu potrzebujemy uzyskać dostęp do komputera znajdującego się za zaporą ogniową i nie pozwala on na przekierowanie do niego ruchu SSH, możemy wykonać `` odwrotne SSH '' w taki sposób, że ten komputer łączy się z innym serwerem SSH pod adresem z którym możemy się również połączyć, aby uzyskać dostęp do sprzętu znajdującego się za zaporą. Przykładem, który przychodzi na myśl, jest sytuacja, gdy chcemy pomóc znajomemu, który nie ma pojęcia, jak skonfigurować przekierowanie na swoim modemie, ale musimy uzyskać zdalny dostęp do jego komputera:

Przyjaciel -> Modem -> Serwer SSH <- O nas

Kroki, które należy wykonać, są stosunkowo bardzo proste:

Amigo
ssh -R 9999:localhost:22 usuario@servidorssh

o nas
ssh usuario@servidorssh
Po wejściu na serwer SSH możemy połączyć się z zespołem naszego znajomego za pomocą
ssh amigo@localhost -p 9999

Jak widać, cała magia tkwi w parametrze -R, który mówi serwerowi pośredniczącemu, że na porcie 9999 komputer naszego przyjaciela nasłuchuje teraz jako serwer.

To tylko niektóre możliwości, które oferuje nam SSH, ale zapraszam do eksperymentowania z kilkoma, na przykład; możemy wykonywać nienadzorowane skrypty za pomocą kluczy RSA, przekierowywać sesje X (tryb graficzny) do naszego środowiska graficznego, żeby wymienić tylko kilka.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Astro powiedział

    Świetny artykuł, chętnie wracam do domu i zaczynam je ćwiczyć.

    1.    adres14n powiedział

      Wielkie dzięki! To właściwie mój pierwszy wpis na blogu i naprawdę miło jest przeczytać te komentarze. Twoje zdrowie!

  2.   Pablo cardozo powiedział

    Jeszcze wczoraj o coś pytałem na ten temat, a jest to co następuje.

    Czy istnieje sposób, aby móc przeskanować cały folder, ale biorąc pod uwagę datę plików? Innymi słowy, mam folder z wieloma plikami, które pobrałem jakiś czas temu, jestem zainteresowany pobieraniem tylko tego, co zostało przesłane do tego folderu od określonej daty.

    Pozdrawiam i dziękuję z góry.

    1.    pełen życia powiedział

      Możesz to zrobić za pomocą RSYNC przez SSH. 😉

      1.    giskard powiedział

        rsync to pokrywka słoika !!! 😀

      2.    Eduardo powiedział

        Polecam wypróbować unison, jest SPEKTAKULARNY, jest dostępny w repozytoriach (przynajmniej debian i ubuntu)

        http://www.cis.upenn.edu/~bcpierce/unison/

        Używam go do codziennego tworzenia kopii zapasowych moich notatek na innym komputerze, oprócz synchronizowania katalogów na różnych komputerach.

        Jest bardzo łatwy w użyciu

        Mam nadzieję, że Ci się przyda!

        Exitos
        Eduardo

    2.    Leworęczny powiedział

      Wydaje się, że jest to bardziej zadanie jak dla rsync, ale nie wiem, czy istnieje parametr, który to robi, jeśli nie, może musiałby być obsługiwany ze skryptu

    3.    adres14n powiedział

      To, co przychodzi mi do głowy, to zrobić ls uporządkowane według daty, a stamtąd skopiować te, których potrzebujesz, za pomocą prostego scp, ponieważ scp nie ma tak wielu funkcji, jak mówią, ma rsync.

  3.   Anonimo powiedział

    Poświadczam, że odwrotny ssh jest luksusowy, używałem go między moim komputerem a innym, który był oddalony o ponad 700 km i zero problemów.
    Dziękuję za te artykuły, są bardzo cenne.

  4.   zaprzestać powiedział

    Tak słony! Haha, nie wiedziałem, że ssh ma tak wiele możliwości, już chcę się nauczyć, jak skonfigurować serwer ssh i poeksperymentować z jego możliwościami, tylko jedno, czy możesz wyjaśnić, co robi każdy parametr?

    1.    adres14n powiedział

      Według samego ssh man, -D służy do lokalnego określenia „dynamicznego przesyłania dalej aplikacji”, który, jak wyjaśniłem w artykule, służy do przekazywania ruchu przez tunel w ramach tej samej sesji SSH. -R określa zdalny port, który zostanie przekierowany do naszego lokalnego komputera poprzez „przekazywanie”. I wreszcie -p określa, do którego portu klient powinien się podłączyć, gdy nie używa standardowego portu: 22

  5.   manuelmdn powiedział

    Dobrze, że porusza ten temat, mam pytanie o klucze ssh, czy możesz wygenerować więcej niż jeden klucz dla różnych usług? Mam nadzieję, że zrobili post o zarządzaniu kluczami ssh, wiem że w google jest odpowiedź, ale mam nadzieję, że ty będą o tym mówić,

    Pozdrowienia!

    1.    adres14n powiedział

      Korzystając z uwierzytelniania za pomocą kluczy SSL, możesz wyeksportować ten sam (swój komputer) do różnych usług iw ten sam sposób, jeśli Twój komputer jest serwerem, możesz włączyć różne klucze z różnych komputerów. Nie wiem, czy odpowiedziałem na twoje pytanie, ale zrozumiałem. Twoje zdrowie

  6.   Luis powiedział

    Myślę, że pamiętam, że istniał sposób przez ssh, który pozwolił nam na zdalne uruchamianie aplikacji i przeglądanie jej na naszym komputerze tak, jakby to była aplikacja lokalna.

    Na przykład możemy uruchomić firefox, widzimy go i kontrolujemy na naszym komputerze lokalnym, ale proces przebiega na komputerze zdalnym.

    Szczególnie przydatne na komputerach z niewielkimi zasobami, ale niestety nie kontroluję problemu i nie wiem, jak skonfigurować komputery, aby to zrobić.

    Czy ktoś coś o tym wie?

    1.    Personel powiedział

      W przypadku czegoś takiego byłoby wygodne użycie VNC i można tunelować za pomocą SSH.

      1.    x11tete11x powiedział

        @Personel dla mnie korzystanie z VNC nie byłoby wygodne .. z VNC, jeśli nie jestem zły, przynosisz cały pulpit ..

        @Luis, to, co robisz, to po prostu dodanie parametru "-X" do ssh (musisz zezwolić na przekazywanie X na swoim serwerze)

        http://i.imgur.com/NCpfzBL.jpg

      2.    Personel powiedział

        @ x11tete11x
        Biorąc pod uwagę to, o czym wspomniał Luis, pomyślałem o zaproponowaniu mu innej alternatywy, ponieważ:

        1. „Szczególnie przydatne na komputerach z małą ilością zasobów ...”

        -W przypadku pojedynczej aplikacji może nie zużywać tak wielu zasobów, ale próba otwarcia 10 okien z przekierowaniem x nadal sprawia, że ​​system działa ciężej niż posiadanie jednej instancji VNC, ponieważ VNC nie „przenosi całego pulpitu”
        -Podczas zamykania programu na kliencie kończy się tak samo na serwerze (ktoś mnie poprawi, jeśli się mylę), podczas gdy z VNC możesz na przykład zostawić pobieranie torrenta na całą noc i zalogować się ponownie rano i wszystko będzie kontynuowane tak jak wyszedłem.
        -VNC jest protokołem niezależnym od systemu, można uzyskać do niego dostęp z poziomu klienta w Win, Andorid, Mac OSX itp. i używaj programów GNU / Linux bez konieczności instalowania czegokolwiek poza samym klientem VNC.

        Oraz 2. "... niestety nie kontroluję sprawy i nie wiem jak skonfigurować komputery, żeby to zrobiły."

        O wiele łatwiej (i bez ryzyka wpisania czegoś źle i restartu bez pulpitu) jest zainstalowanie VNC i skonfigurowanie tunelu SSH (odbywa się to za pomocą GUI) niż przenoszenie plików konfiguracyjnych X.

      3.    Luis powiedział

        Dziękuję obojgu za uwagi.

        Używam SSH razem z SHFS do uzyskiwania dostępu do zdalnej zawartości na moim małym serwerze przez długi czas, ale nigdy nie byłem w stanie uruchamiać zdalnych aplikacji w środowisku graficznym.

        Spróbuję obu opcji, aby zobaczyć, jak to działa. To, co mówiłem na początku, wydaje się prostsze, ponieważ zgodnie z x11tete11x wystarczy dodać jeden parametr.

        Potem zobaczę, czy znajdę prosty sposób na skonfigurowanie VNC, ponieważ jestem trochę pomocny, jestem użytkownikiem Arch, więc na pewno będą informacje na wiki, inną rzeczą jest to, że się dowiem. Hehehe

        Pozdrowienia.

    2.    adres14n powiedział

      Można to zrobić, przekazując parametr -X do sesji, ale musisz skonfigurować swój X serwer tak, aby akceptował połączenia z komputera w sieci, myślę, że jest to skonfigurowane za pomocą narzędzia xhost. Jak wspomina Staff, VNC jest również bardzo dobrą opcją

    3.    mario powiedział

      To przekazywanie X11, tutaj na tej samej stronie jest post o tym:
      https://blog.desdelinux.net/x11-forwarding-a-traves-de-ssh/

    4.    Luis powiedział

      Dzięki za informacje przyjaciele.

      Powiedziałem, zrobię to, używając obu opcji, aby zobaczyć, która z nich bardziej mi odpowiada.

      Pozdrowienia!