Kako postaviti SSH Jump server u Linuxu


jump host (također poznat kao jump server) je posrednički host ili SSH gateway do udaljene mreže, preko kojeg se može uspostaviti veza s drugim hostom u druga sigurnosna zona, na primjer, demilitarizirana zona (DMZ). Premošćuje dvije različite sigurnosne zone i nudi kontrolirani pristup između njih.

Host za skok bi trebao biti visoko osiguran i nadgledan, posebno kada se proteže na privatnu mrežu i DMZ sa serverima koji pružaju usluge korisnicima na internetu.

Klasičan scenario je povezivanje sa vašeg desktopa ili laptopa iz unutrašnje mreže vaše kompanije, koja je visoko zaštićena zaštitnim zidovima na DMZ. Da biste lako upravljali serverom u DMZ-u, možete mu pristupiti putem jump hosta.

Ukratko, SSH Jump server je Linux server koji se koristi kao gateway za druge Linux servere na privatnoj mreži preko SSH protokola.

U ovom članku ćemo pokazati kako pristupiti udaljenom Linux serveru putem jump hosta, a također ćemo konfigurirati potrebne postavke u vašim konfiguracijama SSH klijenta po korisniku.

SSH Jump Server Setup

Razmotrite sljedeći scenario.

Za više jasnoće, ispod je jednostavno podešavanje koje demonstrira ulogu SSH Jump servera.

Razlozi za konfiguraciju SSH Jump servera

Jump server pruža pristup vašoj infrastrukturi i smanjuje potencijalnu površinu napada na vaše resurse. Takođe pruža transparentno upravljanje uređajima kao i jedinstvenu tačku ulaska u vaše resurse.

Imajte na umu da kada ugrađujete jump server u svoju infrastrukturu, osigurajte da je server ojačan, inače bi bilo dobro kao da ga ne koristite. Na ovo ćemo se vratiti kasnije u ovom tutorijalu.

Kako napraviti jednostavan SSH Jump server

Hajde da se sada fokusiramo na to kako možete kreirati jednostavan SSH Jump server. Evo našeg jednostavnog podešavanja.

  • Izvorna IP adresa: 105.68.76.85.
  • Preskoči IP servera (ovo ćemo nazvati host-jump): 173.82.232.55.
  • Odredišna IP adresa (ovo ćemo nazvati host_destination): 173.82.227.89.

U gornjem scenariju, želite se povezati na HOST 2 (173.82.227.89), ali morate proći kroz HOST 1 (173.82.232.55), zbog firewall-a, rutiranje i privilegije pristupa. Postoji niz valjanih razloga zašto su jump hostovi potrebni.

Dynamic Jumphost List

Najjednostavniji način za povezivanje na ciljni server preko jump hosta je korištenje -A i -J zastavica iz komandne linije. Ovo govori ssh-u da uspostavi vezu sa jump hostom i zatim uspostavi TCP prosljeđivanje na ciljni server, odatle (uvjerite se da imate SSH prijavu bez lozinke između strojeva).

ssh -A -J user@jump-server  user@destination server

Na primjer, u našoj postavci imamo korisnika zvanog james konfiguriranog na Jump server i tecmint konfiguriranu na odredišnom ili ciljnom sistemu.

Komanda će izgledati na sljedeći način sa izvorne IP adrese.

ssh -A -J [email  [email 

Naredba će od vas zatražiti korisničku lozinku jump servera, nakon čega slijedi lozinka ciljnog sistema nakon koje će vam biti odobren pristup ciljnom sistemu.

Ako se korisnička imena ili portovi na mašinama razlikuju, navedite ih na terminalu kao što je prikazano.

ssh -J username@host1:port username@host2:port	  

Lista višestrukih skokova

Ista sintaksa se može koristiti za skokove preko više servera.

ssh -J username@host1:port,username@host2:port username@host3:port

Static Jumphost lista

Statička jumphost lista znači da znate jumphost ili jumphost koji su vam potrebni za povezivanje mašine. Stoga morate dodati sljedeće statičko jumphost 'routing' u datoteku ~/.ssh/config i specificirati pseudonime hosta kao što je prikazano.

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

Sada pokušajte da se povežete na ciljni server preko jump hosta kao što je prikazano.

ssh -J vps1 contabo

Druga metoda je korištenje opcije ProxyCommand za dodavanje konfiguracije jumphost u vaš ~.ssh/config ili $HOME/. ssh/config fajl kao što je prikazano.

U ovom primjeru, ciljni host je contabo, a jumphost je vps1.

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

Sačuvajte promjene i izađite iz datoteke. Da biste primijenili promjene, ponovo pokrenite SSH demon.

sudo systemctl restart ssh

Hajde da istražimo opcije koje se koriste u konfiguracionoj datoteci:

  • -q – Ovo je skraćenica za tihi način rada. On potiskuje upozorenja i dijagnostičke poruke.
  • -W – Zahtijeva da standardni ulaz i izlaz na klijentu budu proslijeđeni HOST-u na PORT-u preko sigurnog kanala.
  • %h – Određuje host za povezivanje.
  • %p – Odredio port za povezivanje na udaljenom hostu.

Da biste 'skočili' na odredišni sistem sa vašeg izvornog IP-a preko Jump servera, samo pokrenite sljedeću naredbu:

ssh contabo

Gornja komanda će prvo otvoriti ssh konekciju sa vps1 u pozadini na koju utiče ProxyCommand, a nakon toga će pokrenuti ssh sesiju na ciljnom serveru contabo jako>.

Učiniti SSH Jump server sigurnijim

Jedan od načina da ovo podešavanje učinite sigurnijim je kopiranje javnog SSH ključa sa izvornog sistema na Jump server, a zatim na ciljni sistem, a zatim onemogućavanje provjere autentičnosti lozinkom. Pogledajte naš vodič o tome kako omogućiti SSH autentifikaciju bez lozinke.

Osim toga, pogledajte savjete za jačanje SSH servera.

Također, osigurajte da se na Jump serveru ne nalaze povjerljivi podaci jer bi to moglo dovesti do curenja akreditiva za pristup kao što su korisnička imena i lozinke što bi dovelo do proboja u cijelom sistemu.

Za više informacija pogledajte ssh man stranicu ili pogledajte: OpenSSH/Cookbxook/Proxies i Jump Hosts.

To je sve za sada! U ovom članku smo demonstrirali kako pristupiti udaljenom serveru putem jump hosta. Koristite obrazac za povratne informacije ispod da postavite bilo kakva pitanja ili podijelite svoje mišljenje s nama.