06.03.2009
Esa Turtiainen

SSH on pääteohjelma, jolla voidaan ottaa salattu yhteys toiseen Internet-verkon tietokoneeseen. SSH osaa myös luoda pääteyhteyden rinnalle tunneleita, joilla tietokoneen tarjoamia palveluja voidaan siirtää tunnelin toisessa päässä käytettäväksi.

Internet-palveluihin otetaan yhteyttä porttinumeroiden perusteella. Porttinumerot on standardoitu, ja esimerkiksi SSH-palvelu on portti numero 22.

image0

Monet palomuurit sallivat SSH-yhteydet, vaikka ne eivät sallisi muita palveluja.

Joskus SSH-yhteyden voi ottaa yhteen tietokoneeseen, mutta tästä halutaan jatkaa toiseen tietokoneeseen. Jos tämä toinenkin tietokoneyhteys halutaan salata, otetaan ensimmäisen SSH-yhteyden sisällä toinen SSH-yhteys.

as> ssh vali
  vali> ssh palv
  palv> ...

image1

Palvelujen tuominen suoraan paikalliseen tietokoneeseen

Palvelintietokoneessa on yleensä tärkeitä palveluja, joita haluaisimme käyttää suoraan. Esimerkiksi:

22 SSH Itse SSH
25 SMTP Sähköpostin lähettäminen
110 POP3 Sähköpostin vastaanottaminen (POP)
143 IMAP Sähköpostin vastaanottaminen (IMAP)
389 LDAP Osoitekirja

Oletamme, että nämä portit ovat vapaita asiakastietokoneessa. Tunneloimme nämä palvelut palvelintietokoneesta asiakastietokoneeseen samoihin porttinumeroihin. Tällöin palvelintietokoneen postinlähetys eli SMTP-palveluun voi ottaa yhteyttä määrittelemällä sähköpostin lähettämispalvelimeksi localhost tai 127.0.0.1 (synonyymi omalle koneelle). Mikäli nämä portit eivät ole asiakastietokoneessa vapaita, niiden tilalla voidaan käyttää mitä tahansa vapaita portteja.

Voisimme kuljettaa jokaisen portin jokaisen välissä olevan tietokoneen lävitse jokaisen SSH-tunnelin ylitse. Helpompaa kuitenkin on ensin tunneloida kohdekoneen SSH-portti paikalliseen tietokoneeseen. Tämän jälkeen voimme luoda sen avulla tunnelit suoraan palvelinkoneeseen.

as> ssh vali -L 22:palv:22 -N

image2

Tämä komento tuo palvelintietokoneen portin 22 paikallisen tietokoneen portiksi 22 eikä aukaise varsinaista komentotulkkiyhteyttä välitietokoneeseen ollenkaan (-N). Yhteys asiakastietokoneen ja välitietokoneen välillä on salattu, mutta tässä vaiheessa välitietokoneen ja palvelintietokoneen välinen yhteys ei ole salattu. Tämä ei kuitenkaan haittaa, koska emme tule käyttämään tätä yhteyttä muuten kuin toisen SSH-yhteyden ylitse.

Nyt voimme tuoda loput portit paikallisiksi ottamalla yhteyttä paikallisessa koneessa olevaan porttiin 22:

ssh localhost -L 25:localhost:25 110:localhost:110 143:localhost:143 389:localhost:389 -N

localhost tarkoittaa tässä kahta eri asiaa: ensimmäinen localhost viittaa asiakastietokoneeseen ja muut localhostit viittaavat palvelintietokoneeseen.

Mikäli palvelintietokoneesta pääsee Internet-välipalvelimeen www-cache, portti 8888, voimme tuoda sen paikalliseksi komennolla:

ssh localhost -L 8888:www-cache:8888 -N

Kun asiakastietokoneessa HTTP-välipalvelimeksi asetetaan nyt localhost:8888, selauksessa käytetään suoraan välipalvelinta www-cache.

Yleiskäyttöisin ratkaisu saadaan tunneloimalla kaikki verkkokomennot tunnelin ylitse SOCKS-käytännöllä (ssh -D). Tällöin jokaista porttia ei tarvitse siirtää paikalliseen tietokoneeseen -L valitsimen luettelossa. Tätä käsitellään muissa artikkeleissani.

Muuta

Mikäli SSH on jostain syystä estetty asiakastietokoneen ja välitietokoneen välillä, voit yrittää muuttaa portin 22 portiksi 443 (https://). Tällöin sinun tulee voida asettaa itse välitietokoneen SSH-portti. SSH-komennossa käytettävä portti asetetaan:

ssh -p 443 vali ...

Voit myös yrittää käyttää ohjelmaa Corkscrew, joka muttaa SSH-liikenteen kulkemaan HTTP-välipalvelimen läpi.

Mikäli SSH-yhteydessä ei kulje liikennettä vähään aikaan, se päätetään automaattisesti. Tämän voi estää jättämällä SSH-yhteys välitietokoneeseen päälle omaan ikkunaansa ja ajamalla siinä ohjelmaa, joka tuottaa jatkuvasti liikennettä verkkoon. Esimerkiksi:

as> ssh vali -L 22:palv:22

vali> watch -n 60 echo

Jossa watch on useimmissa Linux-jakeluissa mukana tuleva komento, joka herää kerran minuutissa päivittämään näytön.

Mainittuja ohjelmia

Corkscrew http://www.agroman.net/corkscrew/