v1.0 2014-12-20 / Arto Jääskeläinen



SSH-avaimet lyhyesti

SSH-avain on pieni tiedosto jolla on matemaattisesti tarkka sisältö. Käytössä oleva avain sijaitsee aina käyttäjän oman kotihakemiston alla sekä omalla koneellasi että koneella jonne otat yhteyden. Avain on tekstitiedosto jonka sisältöä voi helposti katsella. Avaimia tehtäessä syntyy keskenään matemaattisesti yhteensopiva pari tiedostoja.


ssh-avainparin teko on hyvin yksinkertainen temppu:

ssh-keygen -t rsa -f id_rsa

Keksi jokin salasana avaimellesi suojaksi kun teet avaimia. Syntyy kaksi tiedostoa eli avainpari joista id_rsa on oma salainen avaimesi ja id_rsa.pub on julkinen avain. Kukin avain loppusijoitetaan aina käyttäjän kotihakemistoon .ssh nimisen piilokansion alle niin että oma salainen avain jää koneellesi ja se julkinen avain lähetetään koneelle jolle tarvitset pääsyä. Julkisen avain on sananmukaisesti julkinen, se antaa pelkästään pääsyn sille koneelle minne se on laitettu eikä sillä voi tehdä muuta. Sen voit lähettää sähköpostilla tai laittaa vaikka "torille esille" eli siinä ei ole mitään salaista. Yksityisen avaimen kanssa ole tarkkana ettei kukaan muu saa sitä sillä sen avulla pääsee kaikille koneille missä on vastaava julkinen avaimesi asennettuna käyttöön (jos tietää avaimesi salasanan).

Avaimen lopullinen sijainti kotihakemiston alla on sama molemmissa päissä.

Omalla koneella:

.ssh/id_rsa

Kohdekoneella johon otat yhteyden:

.ssh/authorized_keys

Yleinen tapa on asettaa oikeudet näin:

Oma kone:

sudo chmod 700 .ssh

sudo chmod 600 .ssh/id_rsa

Kohdekone:

sudo chmod 700 .ssh

sudo chmod 600 .ssh/authorized_keys

eli 700 kansiolle ja 600 tiedostolle. SSH kieltäytyy yhteydestä jos oikeudet ovat liian avoimet vaikka kaikki muu olisi oikein.

Saatat ihmetellä kun tuossa lukee authorized_keys eikä id_rsa.pub. Etäkoneella julkinen avaimesi on tuolla nimellä tai juoni on oikeastaan siinä että tuohon authorized_keys -tiedostoon voi tarvittaessa kopioida useamman julkisen avaimen sisällön peräkkäin. Uusi avain kopioidaan vain vanhan perään sinne.

Jos joudut aukomaan ja sulkemaan monesti yhteyden niin kannattaa käyttää tätä:

ssh-add -t 8h

Avaimesi salana kysytään kerran ja se on voimassa 8 tuntia tai minkä ajan sitten annoitkin tuossa komennossa. Voit aukoa yhteyksiä 8 tuntia ilman että avaimesi salasanaa kysytään.

On mahdollista mennä ensin koneelle1 ja jatkaa siitä eteenpäin koneelle2. Tuossa tilanteessa voit kohdata pienen ongelma kun yrität käyttää ”ssh-add” -ohjelmaa:

Could not open a connection to your authentication agent. ”

Tuohon on parikin ratkaisua mutta yksinkertaisinta lienee ajaa:

eval $(ssh-agent)

ja ”ssh-add -t <jokin_aika>” toimii jälleen.

Hyvä tietää:

On mahdollista myös rajoittaa avainta niin että sen avulla voi ajaa vain yhtä nimettyä ohjelmaa. Rajoitettua avainta näkee käytettävän esimerkiksi joidenkin varmistusohjelmien yhteydessä. Jos näet jonkun avaimen sisältävän ajettavan ohjelman polun/nimen heti alussa ennen avainkoodia niin olet kohdannut rajoitetun avaimen.


SSH-yhteys vain avaimella

Kun avaimet toimivat oikein kannattaa palvelin suojata niin että se ei kysy enää salasanaa lainkaan kun sinne yrittää avata ssh-yhteyden eli että yhteys hyväksytään vain avaimen avulla:

sudoedit /etc/ssh/sshd_config

etsi sieltä rivi "#PasswordAuthentication yes"

ja muuta se "PasswordAuthentication no"

Huomaa että myös risuaita poistettiin edestä ja anna komento

sudo service ssh reload

Huom. Vaikka prosessi näkyy "sshd" nimellä "ps" -listauksessa niin Ubuntussa sen hallinta tapahtuu "ssh" nimellä.

SSH on erittäin turvallinen pelkillä avaimilla käytettynä verrattuna salasanakäyttöön.