Ssh NAT moge, portforward nelkul

Fórumok

Hi!

Az lenne a kerdesem, hogy hogyan tudok ssh-val kapcsolodni olyan gepre, ami NAT mogott van. Olyan megoldas erdekelne, amihez a NATboxon nem kell portforwardot beallitani. Valami olyan modszerre gondolok, amikor a kapcsolatot a NAT mogott kep kezdemenyezi az enyem fele, de ezen a kapcsolaton keresztul en tudok belepni arra a gepre, nem pedig forditva.

By(t)e
TBS::Antiemes

Hozzászólások

es hogy birod ra a nat mogotti gepet, hogy kezdemenyezzen?
todomasom szerint ez igy eleg bajos, ha egyaltalan lehetseges ...

de azert egy otlet:
irni kell egy progit, ami adott porton figyel (mondjuk inetdvel) es amikor azon a porton jon egy "jel" akkor indit egy pont-pont kapcsolatot a masik geped fele

masik megoldas lehet a VPN ...

ha nagyon hulyeseget irtam javitsatok ki :)

--
TH

Pontosan úgy, ahogy leírod.

Pl.


while true; do
    ssh -N -R 10000:localhost:22 lofasz@tavoli.gep.hu
    sleep 30
done

ssh -p 10000 tavoli.gep.hu

Hali.

Nekem is pont ez kene, csak epp nem vilagos valami (ennek ellenere probalkoztam a fentiekkel, sikertelenul). Hatha a megvilagosodas utan sikerrel megvalositom.

Egyszerubbik eset:
Tehat adott egy publikus cimu gep, nevezzuk NETHOST-nak, domain neve: NETHOST.hu. Errol akarjuk az ssh-shellt kezelni, hasznalni, parancsokat osztogatni.
Adott egy masik publikus cimu gep, nevezzuk NATBOX-nak, domain neve: NATBOX.hu. Ezen semmit sem tudunk megvalositani, nem ferunk hozza. Ennek az egyik alhalozatan van a terelgetni kivant gep, nevezzuk PRI_SERV-nek, aminek nincs full domain neve. Nincs publikusan elerheto cime, portja.

A fenti peldaban (az en ertelmezesem szerint, ami nyilvanvaloan teves, hiszen nem mukodott) tehat megirom a PRIV_SERV-en az alabbi scriptet:

while true; do
ssh -N -R 10000:localhost:22 userke@PRIV_SERV
sleep 30
done

es elinditom. Ez 30 mp-enkent lefuttatja az ssh-parancsot. (Ha valamelyik ssh-kapcsolat kiepul, leghamarabb 30 mp mulva lehet kiepiteni megegyet, fuggetlenul attol, hogy az elozo kiepult-e, fennmaradt-e azota is).

A NEHOST-on pedig beirom shellbe, hogy

ssh -p 10000 NATBOX.hu

Ugye????

Nana, azert nem eszik olyan forron a kasat! Amit Mico es mn3monic irt egyik sem jo. Tegyuk fel hogy megszakad a netkapcsolat, vagy beragad a NAT mogott levo gep es ujrainditjak, vagy akarmi. Ilyenkor a celgepen meg mindig be van jelentkezve az elozo session es foglalja a portot. Ezert amikor a NAT mogotti gep ujra ssh-zik, a port forward sikertelen lesz, de alapbol az ssh kliens emiatt nem lep ki. Igy nem is fog ujrakapcsolodni, es nem fogsz tudni ra ssh-zni tavolrol.

Szoval ez a jo megoldas:


$ cat /usr/local/bin/simonesshtunnel 
#!/bin/bash
SSHLOGIN=username@tavoligep.hu
LHOST=localhost
LPORT=22
RPORT=2222
SSHOPTS="-q -N -n -o ServerAliveInterval=90 -o ExitOnForwardFailure=yes -o BatchMode=yes"

while [ true ]; do
  ssh -R "*:${RPORT}:${LHOST}:${LPORT}" $SSHOPTS "$SSHLOGIN"
  sleep 10
done

Aztan ahhoz hogy minden ujrainditaskor elinduljon gentoon a kovetkezot lehet:


echo '/usr/local/bin/simonesshtunnel &' >> /etc/conf.d/local.start

Annyit meg meg kell jegyezni, hogy ez feltetelezi, hogy van egy

/root/.ssh/id_{rsa,dsa}

privat kulcsod, es az ehhez tartozo publikus kulcs benne van a

username@tavoligep.hu:.ssh/authorized_keys

fileban.

Pisz, Bud

Ez a ket parameter a szerveren meg mindig nem oldja meg a problemat amit irtam. Azazhogy nem jon letre a port forward, ha a NAT mogotti gep elobb csatlakozik ujra mint a szerver eldobja a mar nem mukodo kapcsolatot. Ehhez nagyon kicsi ertekekre kellene allitani a ClientAlive parametereket, de akkor viszont ledobhat a szerver akkor is ha csak ideiglenes halozati problema van.
Azonkivul a TCPKeepAlive alapertelmezetten be van kapcsolva, igy a ClientAlive-ra nincs szukseg ahhoz hogy a szerver eldobja a mar nem elo kapcsolatokat.

Ehh, ok.

Minden bizonnyal.

De akkor tovabbra sem tudom, hogy azon a gepen, ami a NAT mogott van, azon kell-e lefuttatnom a while .... done scriptet? Es ebben a "mailcim" domain resze arra a gepre kell-e mutasson, amiROL majd be kivanok lepni a NAT mogotti gepre? Es ennek a "mailcimnek" melyik gepoen kell real usernek lennie: a NAT mogottin, ahova be akarok lepni, vagy azon, AHONNAN be akarok lepni?

Mert nyilvan tokre ertheto, csak ugye nekem nem...
Es ez meg csak az egyszerubbik eset.
Mi van, ha mindket vegpont NAT mogott van, de elerunk publikus ip-vel rendelkezo gepet USER jogokkal? Akkor mit lehet tenni? (Bar nekem valoszinuleg az egyszerubb eset meg fogja oldani a problemamat, ha sikerul(ne) megerteni...

Koszi fiuk, ha faradoztok a megertetessel!

Olvastam (kicsit hianyos) magyar manualt.

Jol ertem-e, hogy egy NAT mogotti gepen a
-R 10000:localhost:22 tavoliuser@tavolihost
opcio kiepit egy kapcsolatot (a NAT mogul kifele) a tavolihost-ra, es OTT IGENYBE VESZI A 10000-es PORTOT; AMI AZON MEGJELENIK, AZT "LEMASOLJA" a localhost 22-es portjara? Es a tavoliuser azert kell, hogy hozzaferhessen egy porthoz (jelen esetben a 10000-hez) a tavoli gepen?

Mert ha jol ertem, akkor a tavoli gepre bejelentkezett user ugy tud belepni a NAT mogotti gepre, ha a tavoli gepen HELYI portra ssh-zik...
ssh -p 10000 NATmogottiuser@localhost
?