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ä:
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.