Kaip naudotis SSH tuneliu norint pasiekti ribotus serverius ir saugiai naršyti

SSH klientas prisijungia prie „Secure Shell“ serverio, kuris leidžia jums paleisti terminalo komandas taip, tarsi sėdėtumėte priešais kitą kompiuterį. Bet SSH klientas taip pat leidžia „tunelinti“ prievadą tarp vietinės sistemos ir nuotolinio SSH serverio.

Yra trys skirtingi SSH tunelio tipai, ir jie visi naudojami skirtingiems tikslams. Kiekvienas iš jų apima SSH serverio naudojimą nukreipiant srautą iš vieno tinklo prievado į kitą. Eismas siunčiamas per užšifruotą SSH ryšį, todėl jo negalima stebėti ar modifikuoti perduodant.

Tai galite padaryti naudodami sshkomandą, įtrauktą į „Linux“, „MacOS“ ir kitas į UNIX panašias operacines sistemas. „Windows“ sistemoje, kurioje nėra įmontuotos ssh komandos, rekomenduojame nemokamą įrankį „PuTTY“ prisijungti prie SSH serverių. Jis palaiko ir SSH tunelį.

Vietinio uosto persiuntimas: Padarykite nuotolinius išteklius prieinamus savo vietinėje sistemoje

„Vietinio uosto persiuntimas“ leidžia pasiekti vietinio tinklo išteklius, kurie nėra veikiami interneto. Pavyzdžiui, tarkime, kad norite prieiti prie duomenų bazės serverio savo biure iš savo namų. Saugumo sumetimais tas duomenų bazės serveris sukonfigūruotas priimti ryšius tik iš vietinio biuro tinklo. Bet jei turite prieigą prie SSH serverio biure ir tas SSH serveris leidžia prisijungti ne iš biuro tinklo, tuomet galite prisijungti prie to SSH serverio iš namų ir prieiti prie duomenų bazės serverio, tarsi būtumėte biure. Dažnai taip būna, nes lengviau apsaugoti vieną SSH serverį nuo atakų, nei apsaugoti įvairius skirtingus tinklo išteklius.

Norėdami tai padaryti, užmegzkite SSH ryšį su SSH serveriu ir liepiate klientui persiųsti srautą iš konkretaus uosto iš jūsų vietinio kompiuterio, pavyzdžiui, 1234 prievado, į duomenų bazės serverio adresą ir jo prievadą biuro tinkle. Taigi, kai bandote prisijungti prie duomenų bazės serverio, esančio 1234 prievade, dabartiniame kompiuteryje „localhost“, tas srautas automatiškai „tuneliuojamas“ per SSH ryšį ir siunčiamas į duomenų bazės serverį. SSH serveris sėdi viduryje, persiųsdamas srautą pirmyn ir atgal. Norėdami pasiekti duomenų bazės serverį taip, lyg jis veiktų jūsų vietiniame kompiuteryje, galite naudoti bet kurią komandų eilutę ar grafinį įrankį.

Norėdami naudoti vietinį persiuntimą, paprastai prisijunkite prie SSH serverio, bet taip pat pateikite -Largumentą. Sintaksė yra:

ssh -L vietinis_portas: nuotolinis_adresas: nuotolinis_portas vartotojo [email protected]

Pavyzdžiui, tarkime, kad jūsų biuro duomenų bazės serveris yra 192.168.1.111 biuro tinkle. Jūs turite prieigą prie biuro SSH serverio ssh.youroffice.com, o jūsų vartotojo paskyra yra SSH serveryje bob. Tokiu atveju jūsų komanda atrodys taip:

ssh -L 8888: 192.168.1.111: 1234 [email protected]

Vykdę šią komandą, galėsite prisijungti prie duomenų bazės serverio 8888 uoste „localhost“. Taigi, jei duomenų bazės serveris pasiūlė prieigą prie žiniatinklio, prie jos galite prisijungti // localhost: 8888 prie savo žiniatinklio naršyklės. Jei turėtumėte komandinės eilutės įrankį, kuriam reikia duomenų bazės tinklo adreso, nurodykite jį adresu localhost: 8888. Visas srautas, siunčiamas į jūsų kompiuterio 8888 prievadą, bus nukreiptas į 192.168.1.111:1234 jūsų biuro tinkle.

Šiek tiek painiau, jei norite prisijungti prie serverio programos, veikiančios toje pačioje sistemoje kaip ir pats SSH serveris. Pavyzdžiui, tarkime, kad turite SSH serverį, veikiantį 22 prievade savo biuro kompiuteryje, tačiau taip pat turite duomenų bazės serverį, veikiantį 1234 prievade toje pačioje sistemoje tuo pačiu adresu. Norite prieiti prie duomenų bazės serverio iš namų, bet sistema priima SSH ryšius tik 22 prievade, o jos užkarda neleidžia jokių kitų išorinių ryšių.

Tokiu atveju galite paleisti tokią komandą kaip ši:

ssh -L 8888: localhost: 1234 [email protected]

Kai bandysite patekti į duomenų bazės serverį 8888 prievade dabartiniame kompiuteryje, srautas bus siunčiamas per SSH ryšį. Kai jis pateks į sistemą, kurioje veikia SSH serveris, SSH serveris nusiųs ją į 1234 prievadą „localhost“, 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“ programoje „PuTTY“, pasirinkite Ryšys> SSH> Tuneliai. Pasirinkite parinktį „Vietinis“. Laukelyje „Source Port“ įveskite vietinį prievadą. Skiltyje „Paskirties vieta“ įveskite paskirties adresą ir prievadą formoje nuotolinis adresas: nuotolinis_portas.

Pvz., Jei norėtumėte nustatyti tą patį SSH tunelį, kaip nurodyta aukščiau, įveskite 8888kaip šaltinio prievadą ir localhost:1234kaip tikslą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Be to, prieš prisijungdami, be abejo, pagrindiniame „Sesijos“ ekrane turėsite įvesti paties SSH serverio adresą ir prievadą.

Nuotolinis uosto persiuntimas: Padarykite vietinius išteklius prieinamus nuotolinėje sistemoje

„Nuotolinis uosto persiuntimas“ yra priešingas vietiniam persiuntimui ir nėra naudojamas taip dažnai. Tai leidžia jums padaryti išteklių vietiniame kompiuteryje prieinamą SSH serveryje. Pavyzdžiui, tarkime, kad jūs naudojate žiniatinklio serverį vietiniame kompiuteryje, prie kurio sėdite. Bet jūsų kompiuteris yra už ugniasienės, kuri neleidžia įeiti į serverio programinę įrangą.

Darant prielaidą, kad galite pasiekti nuotolinį SSH serverį, galite prisijungti prie to SSH serverio ir naudoti nuotolinį prievado persiuntimą. Jūsų SSH klientas nurodys serveriui persiųsti konkretų SSH serverio prievadą, tarkim, 1234 prievadą, į konkretų adresą ir prievadą dabartiniame jūsų kompiuteryje arba vietiniame tinkle. Kai kas nors pasiekia 1234 prievadą SSH serveryje, tas srautas bus automatiškai „tunelinis“ per SSH ryšį. Kiekvienas, turintis prieigą prie SSH serverio, galės pasiekti jūsų kompiuteryje veikiantį žiniatinklio serverį. Tai iš tikrųjų yra būdas tuneliui per užkardas.

Norėdami naudoti nuotolinį persiuntimą, naudokite sshkomandą su -Rargumentu. Sintaksė iš esmės sutampa su vietiniu persiuntimu:

ssh -R remote_port: local_adresas: local_port vartotojo [email protected]

Tarkime, kad norite, kad serverio programa, klausanti vietinio kompiuterio 1234 prievade, būtų prieinama nuotolinio SSH serverio 8888 prievade. SSH serverio adresas yra, ssh.youroffice.como jūsų vartotojo vardas SSH serveryje yra „ bob“ . Vykdytumėte šią komandą:

ssh -R 8888: localhost: 1234 [email protected]

Tada kažkas galėjo prisijungti prie SSH serverio 8888 prievade ir šis ryšys bus nutolęs prie serverio programos, veikiančios 1234 prievade vietiniame kompiuteryje, iš kurio užmezgėte ryšį.

Norėdami tai padaryti „PuTTY“ sistemoje „Windows“, pasirinkite Ryšys> SSH> Tuneliai. Pasirinkite parinktį „Nuotolinis“. „Source Port“ lauke įveskite nuotolinį prievadą. Skiltyje „Paskirties vieta“ įveskite paskirties adresą ir prievadą formoje vietinis_adresas: vietinis_portas.

Pvz., Jei norite nustatyti aukščiau pateiktą pavyzdį, įveskite 8888kaip šaltinio prievadą ir localhost:1234kaip tikslą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Be to, prieš prisijungdami, be abejo, pagrindiniame „Sesijos“ ekrane turėsite įvesti paties SSH serverio adresą ir prievadą.

Tada žmonės galėjo prisijungti prie 8888 prievado SSH serveryje, o jų srautas bus nukreiptas į 1234 prievadą jūsų vietinėje sistemoje.

Pagal numatytuosius nustatymus nuotolinis SSH serveris klausys ryšių tik iš to paties pagrindinio kompiuterio. Kitaip tariant, prisijungti galės tik žmonės, esantys toje pačioje sistemoje kaip ir pats SSH serveris. Taip yra saugumo sumetimais. Jei norite nepaisyti šios elgsenos, nuotoliniame SSH serveryje turėsite įgalinti parinktį „GatewayPorts“ sshd_config.

Dinaminis uosto persiuntimas: naudokite SSH serverį kaip tarpinį serverį

SUSIJEDS: Koks skirtumas tarp VPN ir tarpinio serverio?

Taip pat yra „dinaminis uosto persiuntimas“, kuris veikia panašiai kaip tarpinis serveris ar VPN. SSH klientas sukurs SOCKS tarpinį serverį, kurį galite sukonfigūruoti naudoti programas. Visas srautas, siunčiamas per tarpinį serverį, bus siunčiamas per SSH serverį. Tai panašu į vietinį persiuntimą - vietinis srautas nukreipiamas į tam tikrą jūsų kompiuterio prievadą ir per SSH ryšį siunčiamas į nuotolinę vietą.

SUSIJEDS: Kodėl viešojo „Wi-Fi“ tinklo naudojimas gali būti pavojingas net ir lankantis šifruotose svetainėse

Pavyzdžiui, tarkime, kad naudojate viešąjį „Wi-Fi“ tinklą. Norite saugiai naršyti be jūsų. Jei turite prieigą prie SSH serverio namuose, galite prisijungti prie jo ir naudoti dinaminį prievadų persiuntimą. SSH klientas sukurs SOCKS tarpinį serverį jūsų kompiuteryje. Visas srautas, siunčiamas į tą tarpinį serverį, bus siunčiamas per SSH serverio ryšį. Niekas, stebintis viešąjį „Wi-Fi“ tinklą, negalės stebėti jūsų naršymo ar cenzūruoti svetainių, prie kurių galite prisijungti. Žiūrint iš visų jūsų lankomų svetainių perspektyvos, tarsi sėdėtumėte namuose prie savo kompiuterio. Tai taip pat reiškia, kad šį triuką galėtumėte naudoti norėdami patekti į tik JAV esančias svetaines būdami už JAV ribų - žinoma, jei turite prieigą prie SSH serverio JAV.

Kaip kitą pavyzdį galbūt norėsite pasiekti medijos serverio programą, kurią turite savo namų tinkle. Saugumo sumetimais SSH serveris gali būti veikiamas tik internete. Neleidžiate įeiti iš interneto į medijos serverio programą. Galėtumėte nustatyti dinaminį prievadų persiuntimą, sukonfigūruoti žiniatinklio naršyklę naudoti „SOCKS“ tarpinį serverį ir tada per žiniatinklio naršyklę pasiekti savo namų tinkle veikiančius serverius, tarsi sėdėtumėte priešais savo SSH sistemą namuose. Pavyzdžiui, jei jūsų daugialypės terpės serveris yra 192.168.1.123 prievade jūsų namų tinkle, galite prijungti adresą 192.168.1.123prie bet kurios programos naudodami „SOCKS“ tarpinį serverį ir prieiti prie daugialypės terpės serverio, tarsi būtumėte namų tinkle.

Norėdami naudoti dinaminį persiuntimą, paleiskite komandą ssh su -Dargumentu, taip:

ssh -D local_port vartotojo [email protected]

Pvz., Tarkime, kad turite prieigą prie SSH serverio, ssh.yourhome.como jūsų vartotojo vardas SSH serveryje yra bob. Norint naudoti „SOCKS“ tarpinį serverį 8888 prievade dabartiniame kompiuteryje, norite naudoti dinaminį persiuntimą. Vykdytumėte šią komandą:

ssh -D 8888 [email protected]

Tada galite sukonfigūruoti žiniatinklio naršyklę ar kitą programą, kad ji naudotų jūsų vietinį IP adresą (127.0.01) ir 8888 prievadą. Visas srautas iš tos programos bus nukreiptas tuneliu.

Norėdami tai padaryti „PuTTY“ sistemoje „Windows“, pasirinkite Ryšys> SSH> Tuneliai. Pasirinkite parinktį „Dinaminis“. Laukelyje „Source Port“ įveskite vietinį prievadą.

Pvz., Jei norėtumėte sukurti SOCKS tarpinį serverį 8888 prievade, įveskite 8888kaip šaltinio prievadą. Po to spustelėkite „Pridėti“, tada spustelėkite „Atidaryti“, kad atidarytumėte SSH ryšį. Be to, prieš prisijungdami, be abejo, pagrindiniame „Sesijos“ ekrane turėsite įvesti paties SSH serverio adresą ir prievadą.

Tada galite sukonfigūruoti programą, kad ji galėtų pasiekti SOCKS tarpinį serverį jūsų vietiniame kompiuteryje (tai yra IP adresas 127.0.0.1, nurodantis jūsų vietinį kompiuterį) ir nurodyti teisingą prievadą.

SUSIJEDS: Kaip sukonfigūruoti tarpinį serverį "Firefox"

Pavyzdžiui, galite sukonfigūruoti „Firefox“ naudoti „SOCKS“ tarpinį serverį. Tai ypač naudinga, nes „Firefox“ gali turėti savo tarpinio serverio nustatymus ir jai nereikia naudoti visos sistemos tarpinio serverio nustatymų. „Firefox“ siųs srautą per SSH tunelį, o kitos programos jūsų interneto ryšį naudos įprastai.

Tai darydami „Firefox“, pasirinkite „Manual proxy configuration“, „SOCKS“ pagrindiniame laukelyje įveskite „127.0.0.1“, o laukelyje „Port“ įveskite dinaminę prievadą. HTTP tarpinio serverio, SSL tarpinio serverio ir FTP tarpinio serverio langelius palikite tuščius.

Tunelis išliks aktyvus ir atidarytas tol, kol bus atidarytas SSH seanso ryšys. Kai baigsite SSH sesiją ir atsijungsite nuo serverio, tunelis taip pat bus uždarytas. Tiesiog vėl prijunkite naudodami atitinkamą komandą (arba atitinkamas „PuTTY“ parinktis), kad vėl atidarytumėte tunelį.