Jaka jest różnica w funkcjonalności między nimi? Trochę mnie to zagubiło.
Lokalne przekazywanie sprawia, że zdalny port jest lokalnie dostępny.
Zdalne przekazywanie czyni port lokalny zdalnie dostępnym.
Ale ta „dostępność” będzie działać w obu kierunkach ... czy to prawda?
Np. Następujące (wydane z „domu” hosta)
ssh -R 1234:localhost:2345 user@work
To ustanowi bezpieczny tunel między pracą :: 1234 a domem :: 2345, prawda?
Jeśli włożę cokolwiek na jednym końcu, wyjdzie na drugim końcu.
Ale potem mogę to osiągnąć, wywołując następujące wywołanie z „pracy” hosta:
ssh -L 1234:localhost:2345 user@home
Jedyną różnicą jest to, skąd go nazywam, prawda?
ssh
ssh-tunnel
nandaloo
źródło
źródło
Odpowiedzi:
Główna praktyczna różnica polega na tym, że jeśli podłączasz 2 komputery A i B, a B znajduje się za zaporą ogniową lub routerem NAT, nad którym nie masz kontroli, i blokuje przychodzące ... Siedzisz w A. Nie możesz dostać A połączyć się z B. Ale B nie blokuje wychodzących. Więc dostajesz B, aby połączyć się z A.
- dodano wyjaśnienie--
Powyższe, rozumiane przez pytającego, oznacza główną praktyczną różnicę między przekazaniem lokalnym a zdalnym. ssh -L i ssh -R, kiedy będziesz używać każdego z nich. Nie komentowałem konkretnych przykładowych poleceń, które podał, gdzie przełącza -L i -R, i z którym serwerem sshd się łączy. Ale teraz spróbuję to skomentować. Z wydanymi przez niego komendami ssh, z perspektywy zwykłego klienta i zwykłego serwera, wydaje się, że nie ma różnicy, ponieważ nie mówi „ah, to jest klient ssh i to jest serwer ssh .. ”nie zna ssh, a który jest aspektem klient / serwer ssh, jest nieistotny i nieznany zwykłemu klientowi i zwykłemu serwerowi. Dbają tylko o to, kto słucha, i z ich perspektywy wygląda to tak samo. Komputer roboczy nasłuchuje i na 1234. Nie Zauważ, że w jednym przypadku jest to serwer sshd.exe ssh, aw drugim przypadku jest to ssh.exe, klient ssh. Nawiasem mówiąc, gdzie klient ssh jest uważany za lokalny.
źródło
Tak, jeśli dobrze to rozumiem, przekierowanie portów lokalnych od a do b powinno być identyczne jak zdalne przekierowanie portów od b do a (i odwrotnie). Wychodzący tunel od a do b (patrząc od a) powinien być równy tunelowi przychodzącemu od a do b (patrząc od b).
Lokalne przekierowanie portów tworzy tunel wychodzący, którego można użyć do przeniesienia publicznego komputera internetowego na maszynę lokalną. Użytkownik lokalny może uzyskać dostęp do kombinacji hosta zdalnego: portu na hoście lokalnym, ponieważ dany port na hoście lokalnym (klienckim) jest przekazywany do danego hosta i portu po stronie zdalnej:
Zdalne przekierowanie portów tworzy przychodzący tunel, którego można użyć do wprowadzenia lokalnego komputera do publicznego Internetu. Internauta może uzyskać dostęp do określonej kombinacji hosta lokalnego: portu na hoście zdalnym. Dany port na zdalnym hoście (serwerze) jest przekazywany do danego hosta i portu po stronie lokalnej:
źródło
0x4a6f4672
znaczy?Z lokalnym portem przekierowującym, ty (klient) otwórz gniazdo nasłuchiwania na komputerze i podłącz klienta protokołu na poziomie aplikacji do tego gniazda. Teraz połączenie jest przekazywane przez SSH do serwera. Serwer łączy się ze zdalnym hostem i tuneluje dane z klienta protokołu do końcowego miejsca docelowego.
Dzięki zdalnemu przekierowaniu portów serwer otwiera gniazdo nasłuchujące na hoście serwera. Niektóre zdalne aplikacje łączą się z tym hostem i wysyłają informacje, które są przesyłane na komputer kliencki. Tutaj ustanawia się połączenie z ostatecznym miejscem docelowym (niektóre serwery protokołu na poziomie aplikacji działające na komputerze lub w sieci), a dane są przesyłane ze zdalnej aplikacji do ostatecznego miejsca docelowego.
źródło
Najlepiej to zrozumieć na podstawie małych przykładów. W tych przykładach połączenia mają następującą strukturę:
Serwer lokalny - (LAN) - Terminal ----- (SSH, zwykle przez Internet) ----- Punkt końcowy tunelu - (LAN) - Maszyna zdalna
Korzystasz z przekierowania portów lokalnych, jeśli chcesz tunelować do określonej zdalnej maszyny / portu, osiągalnej przez punkt końcowy tunelu, do którego masz dostęp ssh. Ponadto port tego zdalnego komputera jest również dostępny lokalnie na twoim terminalu, tj. Http: // localhost: terminal_port /.
Dokonuje się tego przy użyciu następującej składni:
Możesz użyć zdalnego przekierowania portów, jeśli chcesz włączyć KAŻDEGO (!) Pilota, który jest w stanie dotrzeć do portu nasłuchiwania punktu końcowego tunelu, aby móc uzyskać zdalny dostęp do adresu IP / portu w lokalnej sieci LAN. W przypadku lokalnego serwera wygląda na to, że połączenie ze zdalnej maszyny jest inicjowane przez terminal.
Składnia jest następująca:
źródło
Strona internetowa socat wyjaśnia to bardzo dobrze. Tak, wiem, że ssh i socat to dwie zupełnie różne rzeczy - ale dokumentacja socat jest po prostu bardzo dobra.
źródło