Kartais mums reikia perduoti duomenis per lizdą tarp skirtingų mašinų, tokių kaip „Telnet“ ryšys, FTP failo atsisiuntimas, SQL užklausa ar bet koks kitas perdavimo tipas.
Šie duomenys per tinklą keliauja neapdoroti, taigi nesaugus, o tai reiškia, kad juos galėtų perimti bet kuris mazgas, esantis kelyje tarp kilmės ir paskirties, t. pavogtas.
Mes negalime užkirsti kelio šiems duomenims užfiksuoti, tačiau mes galime užkirsti kelią tam, kad juos interpretuotų ir suprastų trečiosios šalys, šifruodami ryšį.
SSH yra įrankis, leidžiantis mums tai padaryti saugūs ryšiai tarp mašinų. Dažniausiai naudojamas prisijungimas nuotoliniu būdu prie komandų vertėjo.
Tačiau jis siūlo kitas galimybes, pavyzdžiui, kurti užšifruoti tuneliai tarp skirtingų mašinų.
Tarkime, kad mes norime telnetuoti iš host1 į host2:
host1$ telnet host2
Šis bendravimas yra visiškai atviras ir gali būti sulaikytas. Norėdami jį apsaugoti, mes peradresuosime savavališkai pasirinktą 5000 pagrindinio kompiuterio prievadą (pvz., 1) į pagrindinio kompiuterio 23 prievadą (telnetą).
Tokiu būdu mes gausime visus duomenis, siunčiamus į host5000 1 prievadą, užkoduotus per tunelį, kuris ssh atsidaro per host22 2 prievadą, o tada bus nukreiptas į host23 prievadą, taip pasiekiant galutinį tikslą.
Norėdami tai padaryti, turime žinoti „host2“ vartotojo vardą ir slaptažodį.
Norėdami atidaryti tunelį, mes rašome:
host1$ ssh -R 5000:localhost:23 usuariohost2@host2
O gerai:
host1$ ssh -L 5000:host2:23 usuariohost2@host2
Abu variantai yra lygiaverčiai. Norėdami užmegzti ryšį su „Telnet“, mes nurodome nebe „host2“, o „host1“ pasirinktą prievadą:
host1$ telnet localhost 5000
Tokiu būdu bet koks ryšys tampa saugus, nesvarbu, ar jis būtų telnetas, ar ne. Tyrinėdami dar šiek tiek pamatysime, kad SSH Šie peradresavimai taip pat gali būti atliekami į trečiąsias mašinas, o tai mums leistų, kad turėdami vieną įėjimo tašką galėtume saugiai pasiekti visą LAN prie kito LAN.
Teorija atrodo nepaprastai įdomi, tačiau būtų dar įdomiau, jei pamatytume praktinį atvejį.
Tačiau tiesa yra ta, kad, nors ir buvau žemas, man patiko straipsnis.
gal pažiūrėjus į wiki jus įkvepia https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
ir tas pats, bet autoso skyrius https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
Tiesą sakant, viską, ką galite siųsti per ssh, nesvarbu, ar tai srautas, ryšiai su pagrindiniu kompiuteriu. ir kt. kad dėl x priežasčių norite juos užšifruoti.
ir „Securecrt“ taisyklės
Aš kartais naudoju SSH labai paprastu lygiu. Numatytasis prievadas yra 22, tiesa?
Taigi, jei gerai suprantu, mano kompiuteryje yra 1 kompiuteris, o prie kurio noriu prisijungti, yra host2, šis tunelis sukurtų ryšį tarp 5000 prievado ir jo 23 prievado, o tada atsidurtų 22 prievade?
Kodėl verta keisti uostus? Ar galite sukurti tunelį su 22 uostu?
Labai įdomus straipsnis. Kaip ir nano, aš noriu daugiau!
SSH iš tikrųjų pagal numatytuosius nustatymus naudoja 22 prievadą (nors jį galima pakeisti). Šį prievadą naudos tikrasis ryšys tarp dviejų kompiuterių. Būtent jūs turite įsitikinti, kad ji atidaryta ir jokia užkarda jos nenutraukia. Bet vartotojui jis yra visiškai skaidrus. Galite pamiršti apie jį. Šiame pavyzdyje peradresavimas yra tarp 5000 ir 23 prievadų. Vieninteliai tie du, dėl kurių turite jaudintis. Vartotojas pamatys, kad viskas, ką jis siunčia į savo pagrindinio kompiuterio 5000 prievadą, rodoma paskirties pagrindinio kompiuterio 23 vietoje.
Akivaizdu, kad kiekvienas vartotojas gali nukreipti uostus, kuriuos jis laiko tinkamais.
Ačiū už jūsų komentarus. Tai mano pirmasis pranešimas, o jūsų nuomonė padės padaryti kitą geresnį.
Ar tai galima padaryti ir su VPS?
Gerai, tai mano atvejis, PC1 turi prieigą prie serverio, bet PC2 ne, abu prisijungia per ssh, aš noriu turėti prieigą PC2, bet kurį PC1 prievadą peradresuoti? jei iš tikrųjų noriu pasiekti serverio prievadą iš PC2 ir kad paketų šaltinis yra „PC1“. ar suprantu?
Jūs leidžiate save suprasti. Tokiu atveju jums reikia PC1, kad peradresuotumėte PC2 prievadą į 22 serverio prievadą:
PC2 $ ssh -L 5000: serveris: 22 vartotojas PC1 @ PC1
ir, laikydami šį ryšį atvirą, iš kito terminalo:
PC2 $ ssh userServer @ localhost -p 5000
o tu jau viduje.
Pagaliau funkcionalus sprendimas !! Ačiū Getafix, jūs suteikėte man galimybių pasaulį !!
Aš džiaugiuosi!
Puikus straipsnis. Sveiki atvykę į DesdeLinux ????
O ką daryti, jei turime 22 užblokuotus? DAUG JUOKO..
Aciu elav.
Jei turite užblokuotą 22 prievadą, mmmm, turėsime ieškoti alternatyvos, kaip nulaužti XD užkardą
Ir blogiausia (hipotetinis): kad jį blokuoja VPS teikėjas.
Aš prieš kelias valandas tiesiog padariau egzaminą su klausimais apie jį 😛
Nesakyčiau, kad:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
jis prilygsta kitai komandinei eilutei ... turinčiai -L.
Kadangi -R rodo, kad prievadas, atidarytas naujiems ryšiams, yra nutolusioje pusėje, ty jūsų ssh serverio pusėje; o -L atidaro prievadą Vietinėje pusėje, kliento pusėje, kad gautų naujus ryšius.
Linijos vertimas:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
Tai būtų maždaug taip: būdamas host1, prisijunkite prie host22 ssh serverio (2 prievado) su savo vartotojo userhost2 ir persiųskite ryšius, sukurtus nuotoliniame host5000 2 prievade, į host23 1 portą (mano localhost)
Jei ne, pataisyk mane! 😉
-
Kita vertus ... jei serveris užblokavo prisijungimų prie 22 prievado įvedimą, tai yra, mes negalime prisijungti nuotoliniu būdu prie ssh serverio; ką galima padaryti, yra; kad iš serverio (draugo sysadmin už nuotolinės „host2“ sistemos užkardos) vykdoma komandinė eilutė:
host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1
-f eina į antrą planą
-N nevykdo jokios komandos nuotolinio valdymo pulte
„nohup“ neleidžia nutraukti komandos vykdymo atsijungus
host1 $ ssh userhost2 @ localhost -p 6000
Tokiu būdu iš „host1“ mes sukuriame ryšį su „localhost“ (tuo pačiu host1) 6000 prievade, kuris persiųs ryšį su nuotolinės sistemos „host22“ 2 prievadu, kuriame prisijungsime su vartotojo host2.
Tai leistų (aš to neišbandžiau, bet atrodo, kad jis veikia) prisijungti prie ssh serverio, kurį užblokavo ugniasienė, šiek tiek padedant iš vidaus! 😀
Pastarąjį perskaičiau iš paaiškinimo, padaryto žurnale „The Geek Stuff“
http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/
Man labai patinka tavo leidinys; Aš juos dažnai skaitau!
Sveikinimai.
Tu teisus. Straipsnyje yra klaida. Peradresavimai nėra lygiaverčiai. Komanda host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 atlieka atvirkštinį peradresavimą, tai yra, nukreipia nuotolinį 5000 prievadą į 23 vietinį, priešingai nei daro komanda su -L.
Ačiū už taisymą.