Kaip naudotis SSH tuneliavimu prieiti prie riboto serverio ir saugiai naršyti
SSH klientas prisijungia prie „Secure Shell“ serverio, kuris leidžia paleisti terminalo komandas taip, lyg sėdėtumėte prieš kitą kompiuterį. Tačiau SSH klientas taip pat leidžia „tuneluoti“ uostą tarp vietinės sistemos ir nuotolinio SSH serverio.
Yra trys skirtingi SSH tunelių tipai ir jie visi naudojami skirtingiems tikslams. Kiekvienas susijęs su SSH serverio naudojimu, norint nukreipti srautą iš vieno tinklo uosto į kitą. Eismas siunčiamas užšifruotu SSH ryšiu, todėl jo negalima stebėti ar keisti tranzitu.
Tai galite padaryti su ssh
„Linux“, „MacOS“ ir kitose UNIX tipo operacinėse sistemose. „Windows“, kuriame nėra integruotos ssh komandos, rekomenduojame nemokamą įrankį „PuTTY“ prisijungti prie SSH serverių. Jis taip pat palaiko SSH tuneliavimą.
Vietinio uosto perdavimas: Padarykite nuotolinius išteklius prieinamus jūsų vietinėje sistemoje
„Vietinio prievado peradresavimas“ leidžia pasiekti vietinius tinklo išteklius, kurie nėra veikiami internete. Pvz., Tarkime, kad norite pasiekti savo biure esančią duomenų bazės serverį iš savo namų. Saugumo sumetimais šis duomenų bazės serveris yra sukonfigūruotas tik priimti ryšius iš vietinio biuro tinklo. Bet jei jūs turite prieigą prie SSH serverio biure, ir kad SSH serveris leidžia jungtis iš išorinio biuro tinklo, galite prisijungti prie SSH serverio iš namų ir prieiti prie duomenų bazės serverio taip, tarsi buvote biure. Taip dažnai būna, nes lengviau apsaugoti vieną SSH serverį nuo atakų, nei užtikrinti įvairius tinklo išteklius.
Norėdami tai padaryti, užmezgate SSH ryšį su SSH serveriu ir papasakokite klientui persiųsti srautą iš konkretaus uosto iš vietinio kompiuterio, pvz., Prievado 1234 į duomenų bazės serverio adresą ir jo prievadą biuro tinkle. Taigi, kai bandote prieiti prie duomenų bazės serverio dabartiniame kompiuteryje „localhost“ 1234 porte, šis srautas automatiškai „tuneliuojamas“ per SSH ryšį ir siunčiamas į duomenų bazės serverį. SSH serveris sėdi viduryje, nukreipdamas srautą į priekį ir atgal. Jūs galite naudoti bet kurią komandinę eilutę arba grafinę priemonę, kad patektumėte į duomenų bazės serverį taip, tarsi jis veiktų jūsų vietiniame kompiuteryje.
Jei norite naudoti vietinį siuntimą, prisijunkite prie SSH serverio, bet taip pat pateikite -L
argumentas. Sintaksė yra:
ssh -L local_port: remote_address: remote_port vartotojo [email protected]
Pavyzdžiui, tarkime, kad jūsų biure esantis duomenų bazės serveris yra biuro tinkle 192.168.1.111. Jūs turite prieigą prie biuro SSH serverio adresu ssh.youroffice.com
, ir jūsų vartotojo abonementas SSH serveryje Bobas
. Tokiu atveju jūsų komanda atrodys taip:
ssh-L 8888: 192.168.1.111: 1234 [email protected]
Po to, kai paleisite šią komandą, galėsite pasiekti duomenų bazės serverį, esantį prievado 8888 porte. Taigi, jei duomenų bazės serveris pasiūlė prieigą prie interneto, prie interneto naršyklės galite prijungti http: // localhost: 8888. Jei turite komandinės eilutės įrankį, kuriam reikalingas duomenų bazės adresas, nurodykite jį adresu localhost: 8888. Visi srautai, siunčiami į jūsų kompiuterio 8888 prievadą, bus atpažinti į jūsų biuro tinklą iki 192.168.1.111:1234.
Tai šiek tiek paini, jei norite prisijungti prie serverio programos, veikiančios toje pačioje sistemoje kaip ir SSH serveris. Pvz., Tarkime, kad jūsų biuro kompiuterio 22 prievado serveryje veikia SSH serveris, tačiau jūs taip pat turite duomenų bazės serverį, veikiantį toje pačioje sistemoje toje pačioje sistemoje 1234. Norite prieiti prie duomenų bazės serverio iš namų, tačiau sistema priima tik SSH ryšius 22 prievade ir jos užkarda neleidžia kitų išorinių jungčių.
Tokiu atveju galite paleisti tokią komandą kaip:
ssh -L 8888: localhost: 1234 [email protected]
Kai bandote prisijungti prie duomenų bazės serverio savo dabartiniame kompiuteryje 8888, srautas bus siunčiamas per SSH ryšį. Kai jis atvyksta į sistemą, kurioje veikia SSH serveris, SSH serveris išsiųs jį į „localhost“ 1234 prievadą, kuris yra tas pats kompiuteris, kuriame veikia pats SSH serveris. Taigi „localhost“ aukščiau esančioje komandoje reiškia „localhost“ nuotolinio serverio požiūriu.
Norėdami tai padaryti „Windows“ „PuTTY“ programoje, pasirinkite Ryšys> SSH> Tuneliai. Pasirinkite parinktį „Vietinis“. „Šaltinio prievadas“ įveskite vietos uostą. „Paskirties vieta“ įveskite paskirties adresą ir prievadą formoje remote_address: remote_port.
Pavyzdžiui, jei norite sukurti tą patį SSH tunelį kaip ir anksčiau, įvesite 8888
kaip šaltinio uostas ir localhost: 1234
kaip paskirties vietą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Prieš prijungdami, žinoma, pagrindiniame „Sesijos“ ekrane turėsite įvesti patį SSH serverio adresą ir uostą.
Nuotolinis prievadų persiuntimas: vietinių išteklių pasiekimas nuotolinėje sistemoje
„Nuotolinis prievadų peradresavimas“ yra priešingas vietiniam siuntimui ir nėra naudojamas taip dažnai. Tai leidžia jums sukurti išteklius savo vietiniame kompiuteryje, esančiame SSH serveryje. Pvz., Tarkime, kad vietiniame kompiuteryje, kuriame esate priešais, naudojate žiniatinklio serverį. Tačiau jūsų kompiuteris yra už užkardos, kuri neleidžia įeiti į serverio programinę įrangą.
Darant prielaidą, kad galite pasiekti nuotolinį SSH serverį, galite prisijungti prie to SSH serverio ir naudoti nuotolinį prievadų peradresavimą. Jūsų SSH klientas nurodys serveriui persiųsti tam tikrą SSH serverio prievadą, prievadą 1234-į tam tikrą dabartinio kompiuterio ar vietinio tinklo adresą ir prievadą. Kai kas nors prisijungia prie SSH serverio 1234 prievado, šis srautas bus automatiškai „tuneliuojamas“ per SSH ryšį. Kiekvienas, turintis prieigą prie SSH serverio, galės pasiekti jūsų kompiuteryje veikiantį žiniatinklio serverį. Tai yra veiksmingas būdas tuneliui per ugniasienes.
Norėdami naudoti nuotolinį persiuntimą, naudokite ssh
komandą -R
argumentas. Sintaksė iš esmės yra tokia pati, kaip ir vietinio siuntimo metu:
ssh -R remote_port: local_address: local_port [email protected]
Tarkime, kad norite, kad serverio programa būtų klausoma vietiniame kompiuteryje esančiame prievado 1234, esančiame nuotolinio SSH serverio 8888 prievado. SSH serverio adresas yra ssh.youroffice.com
ir jūsų vartotojo vardas SSH serveryje Bobas. Jūs vykdote šią komandą:
ssh-R 8888: localhost: 1234 [email protected]
Tuomet kažkas galėtų prisijungti prie SSH serverio 8888 prievade, ir šis ryšys būtų tuneliuojamas į serverio taikomąją programą, veikiančią 1234 prievade vietiniame kompiuteryje, kuriame nustatėte ryšį nuo.
Norėdami tai padaryti „Windows“ sistemoje „PuTTY“, pasirinkite „Connection“> SSH> Tunnels. Pasirinkite parinktį „Nuotolinis“. „Source Port“, įveskite nuotolinį prievadą. „Paskirtis“ įveskite paskirties adresą ir prievadą formoje local_address: local_port.
Pavyzdžiui, jei norėjote sukurti aukščiau pateiktą pavyzdį, įvesite 8888
kaip šaltinio uostas ir localhost: 1234
kaip paskirties vietą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Prieš prijungdami, žinoma, pagrindiniame „Sesijos“ ekrane turėsite įvesti patį SSH serverio adresą ir uostą.
Tuomet žmonės galėtų prisijungti prie 8888 prievado SSH serveryje ir jų srautas būtų tuneliuojamas į jūsų vietinės sistemos 1234 uostą.
Pagal nutylėjimą, nuotolinis SSH serveris tik klausysis ryšio su tuo pačiu kompiuteriu. Kitaip tariant, tik tie asmenys, kurie turi tą pačią sistemą, kaip ir SSH serveris, galės prisijungti. Taip yra dėl saugumo priežasčių. Jei norite ignoruoti šį elgesį, nuotolinio SSH serverio sshd_config parinktį turėsite įjungti „GatewayPorts“..
„Dynamic Port Forwarding“: naudokite SSH serverį kaip tarpinį serverį
Taip pat yra „dinaminis prievadų perdavimas“, kuris veikia panašiai kaip proxy arba VPN. SSH klientas sukurs SOCKS tarpinį serverį, kurį galite konfigūruoti naudodami programas. Visi srautai, siunčiami per tarpinį serverį, būtų siunčiami per SSH serverį. Tai panaši į vietinį siuntimą - vietinis srautas siunčiamas į tam tikrą kompiuterio prievadą ir siunčiamas per SSH ryšį su tolima vieta.
Pavyzdžiui, tarkime, kad naudojate viešą Wi-Fi tinklą. Jūs norite saugiai naršyti, nepažeidžiant. Jei turite prieigą prie SSH serverio namuose, galite prisijungti prie jo ir naudoti dinaminį portų peradresavimą. SSH klientas jūsų kompiuteryje sukurs SOCKS proxy. Visi srautai, siunčiami į tą tarpinį serverį, bus siunčiami per SSH serverio ryšį. Niekas, stebintis viešąjį „Wi-Fi“ tinklą, negalės stebėti jūsų naršymo ar cenzūravimo svetainėse, kurias galite pasiekti. Iš bet kokių lankomų svetainių perspektyvos tai bus tarsi sėdi prie kompiuterio namuose. Tai taip pat reiškia, kad galite naudoti šį apgauti prieigą prie JAV tik svetainių, o ne JAV, žinoma, jei turite prieigą prie SSH serverio JAV, žinoma.
Kitas pavyzdys - galbūt norėsite pasiekti žiniasklaidos serverio programą, kurią turite savo namų tinkle. Saugumo sumetimais galite turėti tik SSH serverį, veikiantį internete. Neleidžiate įeinančių ryšių iš interneto į medijos serverio programą. Galite nustatyti dinaminį prievadų peradresavimą, sukonfigūruoti žiniatinklio naršyklę, kad galėtumėte naudoti SOCKS tarpinį serverį, o tada prie interneto naršyklės prisijungti prie serverių, veikiančių jūsų namų tinkle, tarsi jūs buvote namuose prieš jūsų SSH sistemą. Pvz., Jei jūsų žiniasklaidos serveris yra jūsų namų tinkle esančiame prievade 192.168.1.123, galite prijungti adresą 192.168.1.123
į bet kurią programą, kuri naudoja SOCKS tarpinį serverį ir prieigą prie medijos serverio taip, lyg buvote savo namų tinkle.
Norėdami naudoti dinaminį persiuntimą, paleiskite ssh komandą su -D
argumentas, pavyzdžiui:
ssh -D local_port [email protected]
Pavyzdžiui, tarkime, kad turite prieigą prie SSH serverio ssh.yourhome.com
ir jūsų vartotojo vardas SSH serveryje Bobas
. Norite atidaryti dinaminį peradresavimą, kad atidarytumėte SOCKS tarpinį serverį dabartiniame kompiuteryje esančiame 8888 porte. Jūs vykdote šią komandą:
ssh-D 8888 [email protected]
Tada galite sukonfigūruoti žiniatinklio naršyklę ar kitą programą, kad galėtumėte naudoti vietinį IP adresą (127.0.01) ir 8888 prievadą. Visas srautas iš tos programos būtų nukreiptas per tunelį.
Norėdami tai padaryti „Windows“ sistemoje „PuTTY“, pasirinkite „Connection“> SSH> Tunnels. Pasirinkite parinktį „Dinaminis“. „Šaltinio prievadas“ įveskite vietos uostą.
Pvz., Jei norite sukurti SOCKS tarpinį serverį 8888 prievade, įvesite 8888
kaip šaltinio prievadą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Prieš prijungdami, žinoma, pagrindiniame „Sesijos“ ekrane turėsite įvesti patį SSH serverio adresą ir uostą.
Tada galite sukonfigūruoti programą, kad galėtumėte pasiekti SOCKS tarpinį serverį vietiniame kompiuteryje (ty IP adresą 127.0.0.1, kuris nurodo jūsų vietinį kompiuterį) ir nurodykite teisingą prievadą.
Pavyzdžiui, galite konfigūruoti „Firefox“ naudoti „SOCKS“ tarpinį serverį. Tai ypač naudinga, nes „Firefox“ gali turėti savo tarpinio serverio nustatymus ir nereikia naudoti visos sistemos tarpinio serverio nustatymų. „Firefox“ siunčia savo srautą per SSH tunelį, o kitos programos paprastai naudos jūsų interneto ryšį.
Kai tai darote „Firefox“, pasirinkite „Rankinis proxy konfigūravimas“, įveskite „127.0.0.1“ į „SOCKS“ prieglobos laukelį ir įveskite dinaminį prievadą į „Port“ langelį. Palikite HTTP Proxy, SSL Proxy ir FTP Proxy laukus tuščius.
Tunelis bus aktyvus ir atidarytas tol, kol atidarysite SSH sesijos ryšį. Kai baigiate SSH sesiją ir atsijungsite nuo serverio, tunelis bus uždarytas. Tiesiog vėl sujunkite atitinkamą komandą (arba atitinkamas parinktis „PuTTY“), kad atkurtumėte tunelį.