SSH ali Secure Sshell Host je protokol za povezovanje med Linux sistemi. Za razliko od včasih uporabljanega protokola Telnet, SSH vzpostavi šifrirano povezavo med dvema sistemoma, pri čemer SSH preverja tudi avtentikacijo oddaljenega sistema na katerega se povezujemo, s čimer onemogoča man-in-the-middle napad. SSH je sicer poznan kot protokol namenjen terminalskemu povezovanju na oddaljene Linux sisteme, je pa preko ssh protokola mogoče vzpostavljati tudi „grafične“ povezave. Orodje ssh, ki omogoča povezovanje na naš sistem namestimo takole:
sudo apt-get install ssh
PROBLEM: kako se priklopiti preko ssh na računalnik v prostoru, ki je za NAT-om, npr. pisarne v službi, iz interneta?
REŠITEV: reverzni ssh preko zunanjega računalnika.
Iz pisarne se je treba povezati na zunanji računalnik (primer za uporabnika „tone“ na zunanjem računalniku matthai.si):
ssh -R 2048:localhost:22 tone@matthai.si
nato je treba vpisat geslo uporabnika „tone“.
Na drugi strani pa se je treba priklopiti na računalnik (primer za računalnik matthai.si, uporabnik na drugi strani tunela je „janez“):
ssh -p 2048 janez@localhost
in vpisati geslo od uporabnika „janez“ v pisarni.
Uporabnik iz pisarne mora ves čas trajanja povezave ostati priklopljen v terminalu na zunanjem računalniku, saj se v nasprotnem primeru tunel prekine.
Vir: SSH tunelling
PROBLEM: Včasih se zgodi, da smo nekje, kjer potrebujemo grafični dostop do domačega računalnika, odprt pa imamo samo ssh. Drugače povedano: radi bi zagnali neko aplikcijo na oddaljenem računalniku (npr. mojserver.si), vendar v grafičnem načinu, torej tako, da bi zaslon videli na našem trenutnem zaslonu (na oddaljenem računalniku A).
REŠITEV: Če imamo neposreden ssh dostop se iz Linux računalnika iz grafične konzole povežemo z ukazom:
ssh -X uporabnik@mojserver.si
Nato v konzoli vpišemo ukaz npr. firefox ter dodamo znak &, da se program zažene v ozadju. V tem primeru se Firefox požene na „mojserver.si“ (točka B), zaslon oz. okno od programa pa vidimo pri sebi (na točki A):
firefox &
Kaj pa če imamo na točki A Windowse? V tem primeru uporabimo Damn Small Linux, embedded version, ki v virtualnem računalniku Qemu naloži oskubljeno različico Linuxa. Od tam naprej je postopek enak.
PROBLEM: Imamo računalnik, ki je za NAT-om. Iz interneta bi radi dostopali do njega. Predpostavka: imamo dostop do NAT-a.
REŠITEV: ssh tunel: internet –> NAT (gateway) –> lokalni računalnik
Lokalni računalnik bomo imenovali lokalni_racunalnik, računalnik NAT bomo imenovali NAT_server. Uporabnika sta uporabnik_lokalni ter uporabnik_NAT.
Najprej rečemo:
ssh -l uporabnik_NAT -L 7777:lokalni_racunalnik:22 NAT_server cat -
nato pa:
ssh -p 7777 localhost -l uporabnik_lokalni
Npr. (NAT = skrbnik@natserver.org, lokalni računalnik = matej@192.168.1.2):
ssh -l skrbnik -L 7777:192.168.1.2:22 natserver.org cat - ssh -p 7777 localhost -l matej
Več informacij na |SSH tunelling ter na Slo-Tech forumu.