Redirekti havenojn per SSH

Foje ni bezonas transdoni datumojn per ingo inter malsamaj maŝinoj, kiel Telnet-konekto, elŝuta FTP-dosiero, SQL-konsulto aŭ iu ajn alia speco de transdono.

Tiuj datumoj vojaĝas krudaj tra la reto, do nesekura, kio signifas, ke ilin povus kapti iu ajn nodo, kiu estas sur la vojo inter la origino kaj la celloko, tio estas, ŝtelita.

Ni ne povas eviti ke ĉi tiuj datumoj estu kaptitaj, sed ni povas malhelpi, ke ĝi estas interpretata kaj komprenata de triaj, ĉifrante la komunikadon.

SSH estas la ilo, kiu permesas al ni fari sekuraj ligoj inter maŝinoj. Ĝia plej ofta uzo estas konekti malproksime al komandinterpretilo.

Tamen ĝi ofertas aliajn eblecojn, kiel krei ĉifritaj tuneloj inter malsamaj maŝinoj.
Supozu, ke ni volas telnet de gastiganto1 al gastiganto2:

host1$ telnet host2

Ĉi tiu komunikado estas tute malferma kaj povas esti interkaptita. Por protekti ĝin, ni redirektos arbitre elektitan havenon (ekzemple 5000) ĉe gastiganto 1 al haveno 23 (telnet) ĉe gastiganto2.

Tiel ni ricevos ĉiujn datumojn senditajn al la haveno 5000 de gastiganto1 vojaĝi ĉifritaj tra la tunelo, kiu malfermiĝas tra la haveno 22 de gastiganto2 kaj poste estos redirektita al la haveno 23 de gastiganto2, tiel atingante sian finan celon.

Por fari tion, ni bezonas scii la uzantnomon kaj pasvorton de gastiganto2.

Por malfermi la tunelon ni skribas:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

Nu bone:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

Ambaŭ ebloj samvaloras. Por establi la telnet-konekton, ni ne plu raportas al gastiganto2 sed al la elektita haveno ĉe gastiganto1:

host1$ telnet localhost 5000

Per ĉi tio ni certigas iun ajn komunikadon, ĉu telnet aŭ alimaniere. Esplorante iom pli, ni vidos tion danke al la potenco de SSH Ĉi tiuj alidirektiloj ankaŭ povas esti faritaj al triaj maŝinoj, kio permesus al ni, ke per ununura enirejo ni povus sekure aliri de tuta LAN al alia LAN.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

15 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   nano diris

    La teorio aspektas ege interesa, sed estus eĉ pli se ni vidus praktikan kazon.

    Sed la vero estas, ke, kvankam mi estis malalta, mi amis la artikolon.

    1.    sama diris

      eble rigardante la vikion vi inspiriĝas https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      kaj la sama, sed la aŭtomata sekcio https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Fakte ĉion ajn vi povas sendi per ssh, ĉu flui, ligoj al la gastiganto. ktp. ke pro x vi volas ĉifri ilin.
      kaj la sekurecraj reguloj

  2.   Teslo diris

    Mi foje uzas SSH je tre baza nivelo. La apriora haveno estas 22, ĉu ne?

    Do, se mi bone komprenas, mia komputilo estas gastiganto 1 kaj tiu al kiu mi volas konektiĝi estas gastiganto2, ĉi tiu tunelo kreus ligon inter haveno 5000 kaj ĝia haveno 23, kaj tiam finiĝus ĉe haveno 22?

    Kial la kialoj por ŝanĝi havenojn? Ĉu vi povas krei tunelon kun haveno 22?

    Tre interesa artikolo. Kiel nano, mi volas pli!

    1.    Getafix diris

      SSH efektive uzas la havenon 22 defaŭlte (kvankam ĝi povas esti ŝanĝita). Ĉi tiu haveno estas tiu, kiun uzus la efektiva komunikado inter la du gastigantoj. Ĝi estas tiu, kiun vi devas certigi, ke ĝi estas malferma kaj neniu fajroŝirmilo fortranĉas ĝin. Sed por la uzanto ĝi estas tute travidebla. Vi povas forgesi pri li. En la ekzemplo, la alidirektado estas inter havenoj 5000 kaj 23. Tiuj du estas la solaj, pri kiuj vi devas zorgi. La uzanto vidos, ke ĉio, kion li sendas al la haveno 5000 de sia gastiganto, aperas ĉe 23 de la celloka gastiganto.
      Evidente, ĉiu uzanto povas redirekti la havenojn, kiujn li opinias taŭgaj.

      Dankon pro viaj komentoj. Ĉi tiu estas mia unua afiŝo kaj viaj opinioj helpos plibonigi la sekvan.

  3.   eliotime3000 diris

    Ĉu tio ankaŭ fariĝas per VPS?

  4.   ĉasisto diris

    Bone ĉi tio estas mia kazo, PC1 havas aliron al servilo, sed PC2 ne, ambaŭ konektas per ssh, mi volas havi aliron en PC2, sed kiun havenon de PC1 mi redirektas? se efektive mi volas atingi la servilan havenon de PC2 kaj ke la pakaĵetoj havas PC1 kiel fontan ip. ĉu mi komprenas?

    1.    Getafix diris

      Vi komprenigas vin. Ĉi-kaze vi bezonas PC1 por redirekti havenon de PC2 al la haveno 22 de la servilo:

      PC2 $ ssh -L 5000: Servilo: 22 uzanto PC1 @ PC1

      kaj, konservante ĉi tiun konekton malfermita, de alia fina stacio:

      PC2 $ ssh userServer @ localhost -p 5000

      kaj vi jam estas interne.

      1.    ĉasisto diris

        Fine funkcia solvo !! Dankon Getafix, vi donis al mi mondon da ebloj !!

        1.    Getafix diris

          Mi ĝojas!

  5.   elav diris

    Bonega artikolo. Bonvenon al DesdeLinux 😀

    Kaj kion fari se ni havas 22 blokitajn? LOL ..

    1.    Getafix diris

      Dankon elav.
      Se vi havas blokitan havenon 22, mmmm, ni devos serĉi alternativon por haki la XD-fajromuron

    2.    eliotime3000 diris

      Kaj plej malbone (hipoteza): ke ĝi estas blokita de la provizanto de VPS.

  6.   AGR diris

    Mi ĵus faris ekzamenon antaŭ kelkaj horoj kun demandoj pri ĝi 😛

  7.   mario diris

    Mi ne dirus tion:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    ĝi ekvivalentas al la alia komandlinio ... tiu kun la -L.
    Ĉar -R indikas, ke la haveno malfermita al novaj konektoj estas sur la fora flanko, tio estas sur la flanko de via ssh-servilo; dum -L malfermas havenon ĉe la Loka flanko, ĉe la kliento por ricevi novajn konektojn.

    La traduko de la linio:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Estus io tia: Estante ĉe gastiganto1, konektiĝu al la ssh-servilo (haveno 22) de gastiganto2 kun mia uzanto userhost2 kaj plusendu la ligojn generitajn sur fora haveno 5000 de gastiganto2 al haveno 23 de gastiganto1 (mia loka gastiganto)

    Se ne, korektu min! 😉

    -

    Aliflanke ... se servilo blokis la eniron de ligoj al haveno 22, tio estas, ni ne povas konekti malproksime al la ssh-servilo; kio povas esti farita estas; ke de la servilo (amika administranto malantaŭ la fajroŝirmilo de la fora sistemo host2) komandlinio estas ekzekutita:

    host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1

    -f iras al fono
    -N ne plenumas iun komandon sur la fora
    nohup malhelpas la plenumon de la komando interrompiĝi kiam elsaluti

    gastiganto1 $ ssh userhost2 @ localhost -p 6000

    Tiel, de host1 ni generas konekton al localhost (la sama host1) ĉe la haveno 6000, kiu plusendos la konekton al la haveno 22 de la fora sistemo host2, en kiu ni ensalutos kun la uzanto host2.

    Ĉi tio permesus (mi ne provis ĝin, sed ŝajnas, ke ĝi funkcias) ensaluti en ssh-servilo blokita de firewal kun iom da helpo de interne! 😀

    Ĉi-lastan mi legis el klarigo farita en la revuo The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Mi tre ŝatas vian publikigon; Mi legas ilin ofte!
    Salutojn.

    1.    Getafix diris

      Vi pravas. Estas eraro en la artikolo. Alidirektiloj ne samvaloras. La komando host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 plenumas la inversan alidirektilon, tio estas, ĝi redirektas la foran havenon 5000 al la 23 loka, male al tio, kion faras la komando kun -L.
      Dankon pro la korekto.