Wprowadzenie
SSH, znany również jako Secure Shell, może być wykorzystywany do znacznie więcej niż uzyskiwania zdalnej powłoki. W tym artykule zademonstrujemy, w jaki sposób SSH może być wykorzystywany do przekierowania portów i proxy.
Jedynymi warunkami wstępnymi są serwer OpenSSH (instalowany domyślnie na obrazach Vultr Linux) i klient OpenSSH (dostępny na Linux, BSD i MS Windows).
Cel, powód
Serwer proxy SSH służy głównie do proxy ruchu sieciowego. Na przykład można go wykorzystać do zabezpieczenia ruchu sieciowego przed niebezpieczną siecią lokalną.
Przekierowanie portów SSH jest często używane w celu uzyskania dostępu do usług, które nie są publicznie dostępne. Na przykład, możesz mieć interfejs administratora sieci działający na twoim serwerze, taki jak Webmin, ale ze względów bezpieczeństwa nasłuchuje połączeń na hoście lokalnym. W takim przypadku możesz użyć protokołu SSH, aby przekierować połączenia na wybranym porcie z komputera lokalnego do portu, na którym usługa nasłuchuje po stronie serwera, zapewniając w ten sposób zdalny dostęp do tej konkretnej usługi przez tunel SSH. Innym częstym scenariuszem, w którym wykorzystuje się przekierowanie portów SSH, jest dostęp do usług w zdalnej sieci prywatnej przez tunel SSH do hosta w tej sieci prywatnej.
Stosowanie
Zarówno proxy, jak i przekierowanie portów nie wymagają specjalnej konfiguracji na serwerze. Jednak w przypadku SSH zawsze zaleca się stosowanie uwierzytelniania opartego na kluczach. Proszę przeczytać Jak wygenerować klucze SSH.
Serwer proxy SSH
Tworzenie proxy SSH jest bardzo proste, ogólna składnia jest następująca:
ssh -D [bind-address]:[port] [username]@[server]
Gdzie [bind-address]jest adres lokalny, na którym nasłuchujesz, [port]jest port lokalny, na którym nasłuchujesz, [username]jest twoja nazwa użytkownika na serwerze i [server]jest to adres IP lub nazwa hosta twojego serwera. Jeśli [bind-address]nie zostanie określony, domyślnie SSH będzie localhostpożądane w większości przypadków.
Oto praktyczny przykład:
ssh -D 8080 root@your_server
Aby korzystać z tego serwera proxy, musisz skonfigurować przeglądarkę, aby używała go SOCKSv5jako typu serwera proxy i 8080jako portu serwera proxy.
Przekierowanie portów SSH
Ogólna składnia polecenia jest następująca:
ssh -L [localport]:[remotehost]:[remoteport] [username]@[server]
Gdzie [localport]jest port, na którym nasłuchuje klient SSH, [remotehost]jest adres IP hosta, do którego będą przekazywane połączenia. Dzieje się tak, 127.0.0.1jeśli tunelujesz połączenia z serwerem. Wreszcie [remoteport]jest numerem portu na serwerze używanym przez usługę, z którą się łączysz.
Przykład 1:
Zastanów się nad uruchomieniem ważnej usługi internetowej na porcie 10000na serwerze, ale nie jest ona publicznie dostępna. Następujące polecenie zostanie użyte do ustanowienia tunelu SSH dla tej usługi.
ssh -L 80:127.0.0.1:10000 root@your_server
Będzie można teraz połączyć się, wpisując http://127.0.0.1w lokalnej przeglądarce.
Przykład 2:
Masz dwie serwery Vultr w prywatnej sieci. Jeden działa z dystrybucją Linuksa, drugi z systemem MS Windows. W instancji Windows serwer RDP jest uruchomiony, ale nie jest narażony na działanie Internetu ze względów bezpieczeństwa. Zakładając, że 192.168.1.5jest to prywatny adres IP komputera z systemem Windows, możesz użyć następującego polecenia, aby połączyć się z serwerem pulpitu zdalnego za pośrednictwem portu na komputerze:
ssh -L 3389:192.168.1.5:3389 root@your_server
Wszelkie połączenia RDP z komputera do siebie będą teraz tunelowane przez serwer Linux do serwera Windows.