Muokataan sivua SSH-tunneli

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
Tunnelointiin on Linuxissa lukuisia tapoja. Kaikkein helpoiten tunnelointi onnistuu [[SSH#Tunneli|SSH:n porttiohjauksella]], joka tarvitsee ainoastaan tavallisen [[käyttäjä]]n oikeudet kumpaankin järjestelmään.
Tunnelointiin on Linuxissa lukuisia tapoja. Tässä keskitytään kaikkein helpoimpaan, eli tun-tunneliin SSH:n välityksellä. Ratkaisulla saavutetaan seuraavat edut:
 
Tässä ohjeessa sen sijaan keskitytään IP-liikenteen tunnelointiin. Se onnistuu helpoiten tun-tunnelin ja SSH:n välityksellä. IP-tason tunnelointi on tarpeen esimerkiksi, kun on tarvetta tunneloida UDP-liikennettä tai silloin, kun TCP-yhteys ei saa katketa, vaikka IP-osoite vaihtuisikin. Käyttökohde voi olla esimerkiksi [[irssiproxy]]yn yhdistäminen tunnelin välityksellä, jolloin IRC-yhteys ei katkea, vaikka nettiyhteyden IP-osoite vaihtuisi. Tästä on hyötyä esimerkiksi epäluotettavien "mobiililaajakaistojen" kanssa.
 
SSH-välitteisellä IP-tunnelilla saavutetaan seuraavat edut:


* Helposti asetettavissa
* Helposti asetettavissa
* Toimii kaikkien [[palomuuri]]en kanssa, jotka läpäisevät tavallisen SSH-liikenteen
* Toimii kaikkien palomuurien kanssa, jotka läpäisevät tavallisen SSH-liikenteen
* Ei tarvitse asentaa erillisiä ohjelmia
* Ei tarvitse asentaa ohjelmia


Ratkaisulla on myös muutamia haittapuolia:
Ratkaisulla on myös muutamia haittapuolia:


* Tarvitsee [[root]]-oikeudet molemmista koneista (kuten useimmat muutkin tunneloinnit)
* Tarvitsee root-oikeudet molemmista koneista (kuten useimmat muutkin tunneloinnit)
* Ei ole verkkoliikenteen kannalta optimaalinen, koska tunneli toimii TCP-yhteyden välityksellä
* Ei ole verkkoliikenteen kannalta optimaalinen, koska tunneli toimii TCP-yhteyden välityksellä


Tässä artikkelissa esitellään SSH-tunnelin asettelu siten, että se on otettavissa vaivatta käyttöön esimerkiksi kannettavassa koneessa.  
Tässä artikkelissa esitellään SSH-tunnelin asettelu siten, että se on otettavissa vaivatta käyttöön esimerkiksi kannettavalla.  


==Esiasettelu==
==Esiasettelu==
Luo ssh-avaimet tarvittaessa. Tätä tarkoitusta varten voit myös luoda omat avaimet. Tässä esimerkissä käytetään samoja avaimia kuin tavallisella käyttäjällä.
Luo ssh-avaimet tarvittaessa. Tätä tarkoitusta varten voit myös luoda omat avaimet. Tässä esimerkissä käytetään samoja avaimia kuin tavallisella käyttäjällä.


Valitse [[IPv4]]-osoitteet, jotka eivät ole käytössä tunnelia varten. Tässä esimerkissä käytetään osoitetta ''192.168.24.1'' palvelimelle ja ''192.168.24.2'' asiakkaalle. Esimerkin osoitteet on valittu umpimähkäisesti sisäverkkojen osoitealueesta. Valitse osoitteet, joita ei ole lähiverkossasi käytössä.
Valitse IPv4-osoitteet, jotka eivät ole käytössä tunnelia varten. Tässä esimerkissä käytetään osoitetta 192.168.24.1 palvelimelle ja 192.168.24.2 asiakkaalle. Esimerkin osoitteet on valittu umpimähkäisesti sisäverkkojen osoitealueesta. Valitse osoitteet, joita ei ole lähiverkossasi käytössä.


Valitse myös käyttämäsi tunnelinumero. Se voi olla oikeastaan mitä tahansa nollasta ylöspäin, jos käytössä ei ole muita tunneleita. Tässä esimerkissä käytetään onnennumeroa 3, jolloin verkkolaitteen nimeksi tulee ''tun3''. Se saa olla eri palvelimella ja asiakkaalla.
Valitse myös käyttämäsi tunnelinumero. Se voi olla oikeastaan mitä tahansa nollasta ylöspäin, jos käytössä ei ole muita tunneleita. Tässä esimerkissä käytetään onnennumeroa 3, jolloin verkkolaitteen nimeksi tulee tun3. Se saa eri palvelimella ja asiakkaalla.


==Palvelimen asettaminen==
==Palvelimen asettaminen==
Muokkaa [[asetustiedosto]]a <tt>~root/.ssh/authorized_keys</tt>. Lisää sinne rivi
 
Muokkaa tiedostoa ~root/.ssh/authorized_keys. Lisää sinne rivi
  command="/root/tunnelip.sh",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding AVAIMESI TIEDOT
  command="/root/tunnelip.sh",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding AVAIMESI TIEDOT


Komento antaa oikeudet suorittaa vain komennon <tt>/root/tunnelip.sh</tt> palvelimella.
Komento antaa oikeudet suorittaa vain komennon /root/tunnelip.sh palvelimella.


Muokkaa asetustiedostoa <tt>/etc/ssh/sshd_config</tt> ja lisää sinne rivi
Muokkaa tiedostoa /etc/ssh/sshd_config ja lisää sinne rivi PermitTunnel yes.
PermitTunnel yes


Luo uusi tiedosto <tt>~root/tunnelip.sh</tt>, ja lisää sinne seuraava sisältö:
Luo tiedosto ~root/tunnelip.sh ja laita sille sisällöksi


  #!/bin/bash
  #!/bin/bash
  # muodostaa ssh-tunnelin ja tuhoaa aiemman tarvittaessa
  # muodostaa ssh-tunnelin ja tuhoaa aiemman tarvittaessa
  CONNECTED=$(ip addr show dev tun3 to 192.168.24.1)
  CONNECTED=$(ip addr show dev tun3 to 192.168.24.1)
 
  if [ "$CONNECTED" ]; then
  if [ "$CONNECTED" ]; then
         RAWSSHPID=$(lsof -F p /dev/net/tun)
         RAWSSHPID=$(lsof -F p /dev/net/tun)
Rivi 48: Rivi 45:
  fi
  fi


Mikäli haluat reitittää tunneloitavia paketteja myös lähiverkon ja Internetin välillä, lisää seuraava rivi iptablesiin:
==Asiakkaan asettaminen==
iptables -t nat -A POSTROUTING -s 192.168.24.2/32 -o eth0 -j MASQUERADE


Korvaa esimerkissä oleva ''eth0'' käyttämäsi verkkolaitteen nimellä.
Asiakaskoneena voi toimia esimerkiksi kannettava tietokone, jolta haluat päästä lähiverkkoon.


==Asiakkaan asettaminen==
Luo tiedosto ~root/tunnelconnect.sh ja laita siihen sisällöksi
Asiakaskoneena voi toimia esimerkiksi kannettava tietokone, jolta haluat päästä lähiverkkoon. Linux-käyttöjärjestelmässä on tuki tunneloinnille mukana. Tuen tunneloinnille voi asentaa erikseen myös Mac OS X:lle. Paketti on ladattavissa osoitteesta http://tuntaposx.sourceforge.net/ .
 
Luo uusi tiedosto <tt>~root/tunnelconnect.sh</tt>, jonne sisällöksi:
  #!/bin/bash
  #!/bin/bash
  ifconfig tun3 192.168.24.2 192.168.24.1 &&
  ifconfig tun3 192.168.24.2 192.168.24.1 &&
Rivi 62: Rivi 55:
   
   
  # elamaa helpottavat reitit
  # elamaa helpottavat reitit
  xargs -n 1 -I '{}' route add -host '{}' 192.168.24.1 <<END
  xargs -n 1 -I '{}' route add -host '{}' 192.168.24.1 <<-END
         svn.cc.jyu.fi
         svn.cc.jyu.fi
         trac.cc.jyu.fi
         trac.cc.jyu.fi
Rivi 68: Rivi 61:
  END
  END


Esimerkissä olevat kolme palvelimen nimeä, esimerkiksi ''svn.cc.jyu.fi'', voidaan korvata niillä osoitteilla, jotka halutaan tunneloitavan osoitteen ''192.168.24.1'' lisäksi. Tämän avulla voidaan yksittäiseen IP-osoitteeseen menevä liikenne tunneloida samalla, kun muu liikenne kulkee normaalisti lyhintä reittiään. Ratkaisu on tarpeen palveluissa, joiden rajoitus perustuu IP-osoitteiden tarkistamiseen.
Esimerkissä olevat kolme palvelimen nimeä, esimerkiksi svn.cc.jyu.fi, voidaan korvata niillä osoitteilla, jotka halutaan tunneloitavan osoitteen 192.168.24.1 lisäksi. Tämän avulla voidaan yksittäiseen IP-osoitteeseen menevä liikenne tunneloida samalla, kun muu liikenne kulkee normaalisti lyhintä reittiään. Ratkaisu on tarpeen palveluissa, joiden rajoitus perustuu IP-osoitteiden tarkistamiseen.


Muokkaa asetustiedostoa <tt>~root/.ssh/config</tt> ja lisää sen loppuun rivi
Muokkaa tiedostoa ~root/.ssh/config ja lisää sen loppuun rivi


  host tunnel
  host tunnel
Rivi 81: Rivi 74:
         LocalCommand /root/tunnelconnect.sh
         LocalCommand /root/tunnelconnect.sh


Muuta ''IdentityFile'' ja ''Hostname'' vastaamaan käyttämääsi ssh-avainta ja palvelimen osoitetta.
Muuta IdentityFile ja Hostname vastaamaan käyttämääsi ssh-avainta ja palvelimen osoitetta.


Näillä asetuksilla tarvitsisit rootin oikeudet joka kerta, kun haluat avata yhteyden. Tämän välttämiseksi asetetaan [[sudo]]-komento hyväksymään tunnelin avaaminen tavallisena käyttäjänä. Komenna <tt>[[visudo]]</tt> ja lisää tiedoston loppuun seuraava rivi:
Näillä asetuksilla tarvisit rootin oikeudet joka kerta, kun haluat avata yhteyden. Tämän välttämiseksi asetetaan sudo-komento hyväksymään tunnelin avaaminen tavallisena käyttäjänä. Komenna 'visudo' ja lisää tiedoston loppuun seuraava rivi:


  jaska  ALL = NOPASSWD: /usr/bin/ssh -T tunnel
  jaska  ALL = NOPASSWD: /usr/bin/ssh -T tunnel


Korvaa tässä esimerkissä ''jaska'' asiakaskoneen käyttäjänimelläsi.
Korvaa tässä esimerkissä 'jaska' asiakaskoneen käyttäjänimelläsi.


Lopuksi voit luopua pääkäyttäjän oikeuksista ja muokata tiedostoa <tt>~jaska/.bash_profile</tt>. Lisää sinne rivi
Lopuksi voit luopua pääkäyttäjän oikeuksista ja muokata tiedostoa ~jaska/.bash_profile. Lisää sinne rivi
  alias tunneli="sudo /usr/bin/ssh -T tunnel"
  alias tunneli="sudo /usr/bin/ssh -T tunnel"


==Yhdistäminen==
==Yhdistäminen==
Komenna komentorivillä <tt>tunneli</tt>. Tunneli avautuu. Tunneli voidaan lopettaa Control-C -näppäinyhdistelmällä. Mikäli tunneli on katkennut yllättäen, ensimmäinen suorituskerta katkaisee aiemman tunnelin ja toisella kertaa yhteys muodostuu.
==Katso myös==
*[[SSH]]
*[[SSH-turvatoimet]]


[[Luokka:Verkko]]
Komenna komentorivillä 'tunneli'. Tunneli avautuu. Tunneli voidaan lopettaa Control-C -näppäinyhdistelmällä.
[[Luokka:Ohjeet]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)
Noudettu kohteesta ”https://www.linux.fi/wiki/SSH-tunneli