Kako uporabljati tuneliranje SSH za dostop do omejenih strežnikov in zanesljivo brskanje
Odjemalec SSH se poveže s strežnikom Secure Shell, ki omogoča zagon terminalskih ukazov, kot če bi sedel pred drugim računalnikom. Toda SSH odjemalec vam omogoča tudi »tuneliranje« vrat med lokalnim sistemom in oddaljenim strežnikom SSH.
Obstajajo trije različni tipi SSH tuneliranja in vsi se uporabljajo za različne namene. Vsak od njih vključuje uporabo strežnika SSH za preusmeritev prometa z enega omrežnega v drugega na drugo. Promet se pošlje prek šifrirane povezave SSH, zato ga ni mogoče spremljati ali spreminjati med prevozom.
To lahko storite z ssh
ukaz, vključen v Linux, MacOS in druge operacijske sisteme, podobne Unixu. V operacijskem sistemu Windows, ki ne vključuje vgrajenega ukaza ssh, priporočamo, da brezplačno orodje PuTTY povežete s strežniki SSH. Podpira tudi SSH tuneliranje.
Posredovanje lokalnih vrat: omogočite dostop do oddaljenih virov v vašem lokalnem sistemu
»Lokalno posredovanje vrat« vam omogoča dostop do lokalnih omrežnih virov, ki niso izpostavljeni internetu. Na primer, recimo, da želite dostopati do strežnika baze podatkov v pisarni iz vašega doma. Iz varnostnih razlogov je ta strežnik baz podatkov konfiguriran samo za sprejem povezav iz lokalnega pisarniškega omrežja. Če imate v pisarni dostop do strežnika SSH in strežnik SSH omogoča povezave zunaj pisarniškega omrežja, se lahko s tem strežnikom SSH povežete od doma in dostopate do strežnika baze podatkov, kot bi bili v pisarni. To se pogosto zgodi, saj je lažje zagotoviti en sam strežnik SSH pred napadi, kot pa zaščititi različne omrežne vire.
To naredite tako, da vzpostavite SSH povezavo s strežnikom SSH in naročite odjemalcu, da posreduje promet iz določenega porta iz vašega lokalnega računalnika, na primer, vrata 1234, na naslov strežnika baze podatkov in vrata v pisarniškem omrežju. Torej, ko poskušate dostopiti do strežnika baz podatkov v priključku 1234, vaš trenutni računalnik, »localhost«, se promet samodejno »tunelira« prek povezave SSH in pošlje v strežnik baze podatkov. Strežnik SSH sedi na sredini, posreduje promet naprej in nazaj. Za dostop do strežnika baz podatkov lahko uporabite katero koli ukazno vrstico ali grafično orodje, kot če bi se izvajal na vašem lokalnem računalniku.
Če želite uporabiti lokalno posredovanje, se običajno povežite s strežnikom SSH, vendar pa tudi -L
prepir. Skladnja je:
ssh -L local_port: remote_address: remote_port [email protected]
Recimo, da je strežnik baz podatkov v vaši pisarni na naslovu 192.168.1.111 v pisarniškem omrežju. Imate dostop do strežniškega strežnika SSH na naslovu ssh.youroffice.com
, in vaš uporabniški račun na strežniku SSH je bob
. V tem primeru bo vaš ukaz izgledal takole:
ssh -L 8888: 192.168.1.111: 1234 [email protected]
Po zagonu tega ukaza boste lahko dostopali do strežnika baz podatkov na priključku 8888 na localhost. Če strežnik baz podatkov ponuja spletni dostop, lahko za dostop do spletnega brskalnika priključite tudi http: // localhost: 8888. Če ste imeli orodje ukazne vrstice, ki potrebuje omrežni naslov baze podatkov, bi ga usmerili na localhost: 8888. Ves promet, poslan v vrata 8888 na vašem računalniku, bo tuneliran na 192.168.1.111:1234 v vašem pisarniškem omrežju.
Malo bolj zmedeno je, če se želite povezati s strežniško aplikacijo, ki deluje na istem sistemu kot strežnik SSH. Recimo, da imate strežnik SSH, ki deluje na vratih 22 na vašem računalniku v pisarni, vendar pa imate strežnik baz podatkov, ki se izvaja na priključku 1234 na istem sistemu na istem naslovu. Želite dostopiti do strežnika baz podatkov od doma, vendar sistem sprejema samo povezave SSH na vratih 22 in njegov požarni zid ne dovoljuje drugih zunanjih povezav.
V tem primeru lahko zaženete ukaz, kot je naslednji:
ssh -L 8888: localhost: 1234 [email protected]
Ko poskušate dostopiti do strežnika baz podatkov na priključku 8888 na trenutnem računalniku, se bo promet poslal prek povezave SSH. Ko prispe na sistem, ki poganja strežnik SSH, ga bo strežnik SSH poslal v pristanišče 1234 na »localhost«, ki je isti računalnik, ki izvaja sam strežnik SSH. Tako »localhost« v zgornjem ukazu pomeni »localhost« z vidika oddaljenega strežnika.
To naredite v aplikaciji PuTTY v sistemu Windows, izberite Connection> SSH> Tunnels. Izberite možnost »Lokalno«. Za »Izvorna vrata« vnesite lokalna vrata. Za »Destination« (Cilj) vnesite ciljni naslov in vrata v obliki remote_address: remote_port.
Če želite na primer nastaviti zgoraj navedeni SSH tunel, ga vnesete 8888
kot pristanišče vira in localhost: 1234
kot cilj. Nato kliknite »Dodaj« in nato kliknite »Odpri«, da odprete povezavo SSH. Seveda boste morali vnesti tudi naslov in vrata strežnika SSH na glavnem zaslonu "Session", preden se boste povezali, seveda.
Posredovanje oddaljenih vrat: omogočite dostop do lokalnih virov na oddaljenem sistemu
»Oddaljeno posredovanje pristanišč« je nasprotno od lokalnega posredovanja in se ne uporablja tako pogosto. Omogoča vam, da vir na lokalnem računalniku na voljo na strežniku SSH. Recimo, da uporabljate spletni strežnik na lokalnem računalniku, pred katerim sedite. Toda računalnik je za požarnim zidom, ki ne dovoljuje dohodnega prometa za strežniško programsko opremo.
Ob predpostavki, da lahko dostopate do oddaljenega strežnika SSH, se lahko povežete s tem strežnikom SSH in uporabite oddaljeno posredovanje vrat. Vaš odjemalec SSH bo povedal strežniku, naj posreduje določen port-say, pristanišče 1234-na strežniku SSH na določen naslov in vrata na vašem trenutnem računalniku ali lokalnem omrežju. Ko nekdo dostopa do vrat 1234 na strežniku SSH, se bo promet samodejno »tuneliral« prek povezave SSH. Vsakdo, ki ima dostop do strežnika SSH, bo lahko dostopal do spletnega strežnika, ki se izvaja v računalniku. To je dejansko način za tuneliranje skozi požarne zidove.
Če želite uporabljati oddaljeno posredovanje, uporabite ssh
z ukazom -R
prepir. Skladnja je v veliki meri enaka kot pri lokalnem posredovanju:
ssh -R remote_port: local_address: local_port [email protected]
Recimo, da želite, da strežniška aplikacija posluša na priključku 1234 na vašem lokalnem računalniku, ki je na voljo na vratih 8888 na oddaljenem strežniku SSH. Naslov strežnika SSH je ssh.youroffice.com
in vaše uporabniško ime na strežniku SSH je bob. Zaženite ta ukaz:
ssh -R 8888: localhost: 1234 [email protected]
Nekdo bi se lahko nato povezal s strežnikom SSH v vratih 8888 in ta povezava bi bila predorana na strežniško aplikacijo, ki se izvaja v vratih 1234 v lokalnem računalniku, s katerim ste vzpostavili povezavo..
Če želite to narediti v programu PuTTY v sistemu Windows, izberite Connection> SSH> Tunnels. Izberite možnost »Oddaljeno«. Za »Izvorna vrata« vnesite oddaljena vrata. Za »Cilj« vnesite ciljni naslov in vrata v obliki local_address: local_port.
Če želite na primer nastaviti zgornji primer, ga vnesete 8888
kot vhodna vrata in localhost: 1234
kot cilj. Nato kliknite »Dodaj« in nato kliknite »Odpri«, da odprete povezavo SSH. Seveda boste morali vnesti tudi naslov in vrata strežnika SSH na glavnem zaslonu "Session", preden se boste povezali, seveda.
Ljudje bi se nato lahko povezali na vrata 8888 na strežniku SSH, njihov promet pa bi bil tuneliran v vrata 1234 v vašem lokalnem sistemu.
Privzeto bo oddaljeni strežnik SSH poslušal le povezave istega gostitelja. Z drugimi besedami, samo ljudje na istem sistemu, kot je strežnik SSH, se lahko povežejo. To je iz varnostnih razlogov. Če želite preglasiti to vedenje, morate omogočiti možnost »GatewayPorts« v sshd_config na oddaljenem strežniku SSH.
Dynamic Port Forwarding: Uporabite strežnik SSH kot proxy
Obstaja tudi »dinamično posredovanje vrat«, ki deluje podobno kot proxy ali VPN. Odjemalec SSH bo ustvaril SOCKS proxy, ki ga lahko konfigurirate za uporabo. Ves promet, poslan v strežnik proxy, bi bil poslan prek strežnika SSH. To je podobno lokalnemu posredovanju, saj lokalni promet pošlje v določeno pristanišče v računalniku in ga pošlje prek povezave SSH na oddaljeno lokacijo..
Recimo, da uporabljate javno omrežje Wi-Fi. Hočete varno brskati, ne da bi vas nahajali. Če imate doma dostop do strežnika SSH, se lahko z njim povežete in uporabite dinamično posredovanje vrat. Odjemalec SSH bo na vašem računalniku ustvaril proxy SOCKS. Ves promet, poslan v ta proxy, bo poslan prek povezave strežnika SSH. Nihče, ki spremlja javno omrežje Wi-Fi, ne bo mogel nadzorovati vašega brskanja ali cenzurirati spletnih mest, do katerih lahko dostopate. Z vidika vseh spletnih strani, ki jih obiščete, bo tako, kot da bi sedeli pred računalnikom doma. To tudi pomeni, da lahko uporabite ta trik za dostop do spletnih mest, ki so samo v ZDA, medtem ko zunaj ZDA - ob predpostavki, da imate dostop do strežnika SSH v ZDA, seveda.
Drug primer je, da boste morda želeli dostopati do aplikacije strežnika medijev, ki jo imate v domačem omrežju. Iz varnostnih razlogov lahko imate strežnik SSH izpostavljen samo internetu. Dohodnih povezav z interneta ne dovolite v aplikaciji predstavnostnega strežnika. Lahko nastavite dinamično posredovanje vrat, konfigurirate spletni brskalnik za uporabo proxy strežnika SOCKS in nato dostopate do strežnikov, ki se izvajajo v vašem domačem omrežju, prek spletnega brskalnika, kot da bi bili doma pred vašim sistemom SSH. Na primer, če se vaš medijski strežnik nahaja na vratih 192.168.1.123 v vašem domačem omrežju, lahko naslov priključite 192.168.1.123
v katero koli aplikacijo, ki uporablja proxy SOCKS, in do medijskega strežnika bi dostopali tako, kot bi bili v domačem omrežju.
Če želite uporabiti dinamično posredovanje, zaženite ukaz ssh z ukazom -D
argument:
ssh -D local_port [email protected]
Recimo, da imate dostop do strežnika SSH na ssh.yourhome.com
in vaše uporabniško ime na strežniku SSH je bob
. Želite uporabiti dinamično posredovanje, da odprete proxy SOCKS na priključku 8888 na trenutnem računalniku. Zaženite ta ukaz:
ssh -D 8888 [email protected]
Nato lahko konfigurirate spletni brskalnik ali drugo aplikacijo za uporabo lokalnega naslova IP (127.0.01) in vrat 8888. Ves promet iz te aplikacije bi bil preusmerjen skozi predor.
Če želite to narediti v programu PuTTY v sistemu Windows, izberite Connection> SSH> Tunnels. Izberite možnost »Dinamično«. Za »Izvorna vrata« vnesite lokalna vrata.
Če želite na primer ustvariti proxy SOCKS na priključku 8888, ga vnesete 8888
kot izhodna vrata. Nato kliknite »Dodaj« in nato kliknite »Odpri«, da odprete povezavo SSH. Seveda boste morali vnesti tudi naslov in vrata strežnika SSH na glavnem zaslonu "Session", preden se boste povezali, seveda.
Nato lahko konfigurirate aplikacijo za dostop do SOCKS proxyja na vašem lokalnem računalniku (to je, IP naslov 127.0.0.1, ki kaže na vaš lokalni računalnik) in določite pravilna vrata.
Firefox lahko na primer konfigurirate za uporabo proxy SOCKS. To je še posebej uporabno, ker ima Firefox lahko lastne nastavitve proxyja in mu ni treba uporabljati nastavitev proxyja za celoten sistem. Firefox bo svoj promet poslal prek tunela SSH, medtem ko bodo druge aplikacije uporabljale vašo internetno povezavo normalno.
Pri tem v Firefoxu izberite »Manual proxy configuration«, vnesite »127.0.0.1« v gostiteljsko polje SOCKS in v polje »Port« vnesite dinamično vrata. Polja HTTP Proxy, Proxy SSL in Proxy FTP pustite prazna.
Predor bo ostal aktiven in odprt, dokler imate odprto povezavo SSH seje. Ko končate sejo SSH in prekinete povezavo s strežnikom, bo tunel tudi zaprt. Znova vzpostavite povezavo z ustreznim ukazom (ali ustreznimi možnostmi v PuTTY), da ponovno odprete predor.