SSH-avaimista

Attention

Tämä materiaali kiinnostaa sinua, koska SSH-avaimen asetettuasi sinun ei tarvitse syöttää salasanaa jokaisen keskustietovarastoon kohdistuvan Git-toiminnon suorittamisen yhteydessä.

Toisaalta jos jatkuva salasanan syöttäminen ei haittaa sinua, voit jättää tämän osion väliin (tai palata myöhemmin asiaan).

SSH (Secure Shell) on salattu tietoliikenneprotokolla, jonka avulla voidaan esimerkiksi käyttää etänä toista tietokonetta komentorivikonsolilla tai tehdä salattua tiedonsiirtoa.

Unix-käyttöjärjestelmissä SSH:ta voi käyttää komentoriviltä komennolla ssh. Windows -käyttöjärjestelmissä suosituin ohjelma on PuTTY, jonka voi ladata ilmaiseksi osoitteesta http://www.putty.org/. Esimerkiksi yliopiston palvelimille voi ottaa SSH-yhteyden omia intratunnuksiaan käyttämällä. Myös Gitiä voi käyttää SSH-yhteyden yli, kunhan määrittelee itselleen SSH-avaimen.

SSH-avaimilla käyttäjä pystyy tunnistautumaan palvelimille ilman käyttäjätunnuksen ja salasanan syöttämistä. Tunnistautumista varten käyttäjä luo omalle koneelleen SSH-avainparin, joka koostuu julkisesta ja yksityisestä avaimesta. YKSITYISTÄ AVAINTA EI SAA KOSKAAN JAKAA! Pidä se visusti omana tietonasi. Julkinen avain asetetaan palvelimelle sallittujen avainten listaan. Tämän jälkeen palvelimelle voi tunnistautua koneella, joka kättelyn yhteydessä käyttää sallittuun julkiseen avaimeen sidottua yksityistä avainta.

Esimerkki SSH-avaimen luomisesta yliopiston Linux-ympäristössä:

  • Syötä komentorivillä komento:

    ssh-keygen -t rsa -b 4096 -C "teemu.teekkari@tuni.fi"
    
  • Ohjelma kysyy avaimen luontipolkua. Käytetään oletuspolkua (painetaan enter).

  • Ohjelma kysyy avaimelle salasanaa. Luodaan avain, joka ei vaadi salasanan käyttöä (painetaan enter).

  • Ohjelma kysyy vahvistusta salasanalle. Toistetaan sama kuin edellä.

SSH-avain on nyt luotuna. Ykistyinen avain on tallennettuna tiedostoon ~/.ssh/id_rsa ja julkinen tiedostoon ~/.ssh/id_rsa.pub.

Seuraavaksi sinun pitää tallentaa SSH-avaimesi Git-keskustietovarastoosi. Tämä tehdään web-käyttöliittymässä asetuksissasi. Huomaa, että Gitin web-käyttöliittymästä löytyy kahdesta kohdasta Settings: Oikeassa yläkulmassa olevasta valikosta saat muokattua omaa profiiliasi ja asetuksiasi yleisesti, kun taas vasemman reunan valikosta muokkaat yksittäisen projektin asetuksia. Mene nyt omiin yleisiin asetuksiisi oikean yläkulman valikon kautta.

Valitse Settings -> SSH Keys. (Nyt SSH Keys löytyy vasemman reunan valikosta.) Kopioi tekstikentässä lukevien ohjeiden mukaan tiedoston ~/.ssh/id_rsa.pub sisältö ko. tekstikenttään. Ole tarkkana, että mukaan tulee koko pitkä rivi alusta loppuun asti.

Lisäyksen jälkeen voit käyttää remote-osoitteita, jotka alkavat “git@course-gitlab.tuni.fi:”. Jos olet aiemmin kloonannut HTTPS:n yli, joudut korvaamaan originin uudella remotella. Tehdäksesi tämän, siirry ensin omaan tietovarastoosi. Kirjoita komento:

git remote set-url origin <url>

jossa korvaat merkkijonon <url> osoitteella, jonka saat tietovarastosi web-käyttöliittymästä:

../../_images/ssh_clone_fi.png

Voit vielä tarkistaa, että edellinen komento onnistui, kirjoittamalla komennon:

git remote -v

Jos et asettanut SSH-avaimelle salasanaa, voit nyt käyttää Gittiä ilman käyttäjätunnuksen tai salasanan syöttämistä jokaisessa push- ja pull-operaatiossa.

Hieman tarkempaa tietoa SSH:n toiminnasta löytyy osoitteesta https://www.cs.tut.fi/lintula/software/ssh/teoria.shtml.

Jos autentikaatiomenetelmät tai esimerkiksi RSA-avainparien toimintaperiaate kiinnostaa enemmän. Kannatta käydä Tietoturvallisuuden jatkokurssilla :)

Nice to know: Jos haluat käyttää joitain palvelimia SSH-yhteyden yli muutenkin, voit lisätä id_rsa.pub tiedoston sisällön nyt haluamallesi palvelimelle ~/.ssh/authorized_keys -tiedostoon.

Jos haluat helpottaa elämääsi jatkossa, katso myös seuraavat vinkit:

Vinkki 1: Eri avaimet jokaiselle eri palvelimelle. Hyvin suositeltavaa.

Lisää SSH config -tiedostoon (polussa /home/<username>/.ssh/config) seuraavat asetukset:

Host tiha
 Hostname linux-desktop.tuni.fi
 user <username>
 IdentityFile /home/<username>/.ssh/ed_tut.key

Host kannettava
 Hostname mavan.kannettava.security.tut.fi
 user <username>
 IdentityFile /home/<username>/.ssh/ed_lappari.key

Host github.com
 Hostname github.com
 User git
 IdentityFile /home/<username>/.ssh/github.key

Käyttö:

tunnari@pöytäkone:~$ ssh tiha

Vinkki 2: Proxyjump: Miten saada SSH-yhteys yhden koneen kautta eteenpäin, esimerkiksi kannettavalle pääsee vain linux-desktopin kautta. Lisää config-tiedostoon:

Host tiha
 Hostname linux-desktop.tuni.fi
 user <username>
 IdentityFile /home/<username>/.ssh/ed_tut.key

Host kannettava
 Hostname mavan.kannettava.security.tut.fi
 proxyjump tiha
 user <username>
 IdentityFile /home/<username>/.ssh/ed_lappari.key

Käyttö:

tunnari@pöytäkone:~$ ssh kannettava

jolloin SSH-yhteys otetaan ensin “tiha”-kohteeseen ja sen olemassa olevan tunnelin läpi “kannettava”-kohteeseen.