- CS-A0100
- 4. SSH ja Aallon koneet
- 4.2 SSH
SSH¶
SSH on järjestelmä, jonka avulla voit olla yhteydessä esimerkiksi kotikoneeltasi Aallon Linux-koneisiin ja käyttää niitä etänä. SSH:n avulla pääset käyttämään etäkonetta komentoriviltä aivan kuin olisit koneen ääressä paikan päällä. SSH:n avulla voit myös siirtää tiedostoja kotikoneen ja etäkoneen välillä.
SSH-asiakasohjelma¶
Tarvitset omalle koneellesi SSH-asiakasohjelman (SSH client); mistä tahansa Linux- tai macOS-koneesta pitäisi nykyään löytyä jo valmiina komento ssh
. Varmistetaan; avaa terminaali ja aja komento ssh -V
. Tulosteen pitäisi näyttää esimerkiksi tältä:
OpenSSH_8.9p1 Ubuntu-3ubuntu0.7, OpenSSL 3.0.2 15 Mar 2022
Tai esimerkiksi tältä:
OpenSSH_8.6p1, LibreSSL 3.3.6
Näissä kaikissa esimerkeissä meillä on käytössä OpenSSH-niminen SSH-asiakasohjelma ja sen versio 8.x, jonka pitäisi olla riittävän tuore seuraamaan tätä lukua. Uudempikin toki käy, mutta jos versionumero on vanhempi, on varmasti tullut aika päivittää käyttöjärjestelmä tälle vuosikymmenelle.
Peruskäyttö¶
Malta hetki!
Kerromme tässä ensin, miten SSH yleisesti ottaen toimii. Aallon koneiden kohdalla tähän liittyy muutama ylimääräinen metku, joihin palaamme pian. Malta siis hetki ennen kuin alat kokeilla näitä…
SSH-yhteys avataan komennolla ssh tunnus@kone
. Tässä "kone" on kohdekoneen täydellinen Internet-nimi (esimerkiksi kosh.aalto.fi) ja "tunnus" on oma käyttäjätunnuksesi tällä koneella. SSH kysyy tarvittaessa salasanaa ja avaa tämän jälkeen yhteyden. Saat eteesi kohdekoneen komentotulkin, ja voit käyttää sitä kuten Linux-koneen komentotulkkia yleensäkin. Lopuksi voit sulkea yhteyden komennolla exit
.
Voit myös kopioida tiedostoja omalta koneeltasi etäkoneen kotihakemistoon esimerkiksi tähän tapaan:
scp tiedosto.txt tunnus@kone:
Ja etäkoneen kotihakemistosta omalle koneellesi nykyiseen hakemistoon tähän tapaan:
scp tunnus@kone:tiedosto.txt .
Vaihtoehtoisesti voit käyttää sftp
-komentoa; avaa ensin SFTP-istunto:
sftp tunnus@kone
Tämän jälkeen voit antaa komentoja kuten get tiedosto.txt
ja put tiedosto.txt
tiedostojen siirtämiseksi etäkoneen ja oman koneesi välillä.
Palvelimen tunnistaminen¶
Kun ensimmäisen kerran avaat SSH-yhteyden jollekin koneelle, saat tyypillisesti tällaisen ilmoituksen:
The authenticity of host 'kone' can't be established.
ED25519 key fingerprint is ...
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Jos olet ottamassa yhteyttä esimerkiksi Aallon yleiskäyttöisiin palvelimiin, tarkista Aallon IT:n sivulta, että palvelimen sormenjälki on oikea, ja vastaa "yes". Tämän jälkeen SSH-asiakasohjelmasi muistaa koneen ja luottaa siihen ilman erillisiä kyselyitä.
Avainpariautentikaato¶
Erityisesti jos käytät usein samaa Linux-palvelinta SSH:n yli, salasanan toistuva kirjoittaminen alkaa puuduttaa. SSH mahdollistaa onneksi helpon ja turvallisen vaihtoehdon salasana-autentikaatiolle: voit luoda avainparin ja kirjautua sen avulla sisään.
Avainpari nimensä mukaisesti koostuu kahdesta osasta: julkinen osa ja salainen osa. Julkista osaa voi levittää huoletta, kun taas salainen osa on tärkeää pitää turvassa (aivan yhtä huolella kuin salasanakin).
Luo ssh-avainpari, jos sinulla ei vielä sellaista ole olemassa. Löydät ssh-avainparisi omalta koneeltasi hakemistosta ~/.ssh
. Esimerkiksi nykyään tavallinen ED25519-muotoinen avainpari koostuu tiedostoista id_ed25519
(salainen) ja id_ed25519.pub
(julkinen). Jos sinulla ei vielä ole avainparia, voit luoda sellaisen komennolla
ssh-keygen -t ed25519
Varmista, että sinulla on nyt hakemistossa ~/.ssh
tiedostot id_ed25519
ja id_ed25519.pub
.
Nyt meidän pitäisi saada testipalvelimelle kerrottua, että tämän salaisen avaimen haltija saa kirjautua sinun nimissä sisään. Tämä tapahtuu lisäämällä julkinen puolisko etäkoneen päässä tiedostoon ~/.ssh/authorized_keys
. Tuo tiedosto sisältää listan julkisista avaimista, joiden salaisen puoliskon haltijan saa päästää sisään.
SSH Aallossa¶
Nyt varmaankin malttamattomana haluaisit kokeilla tätä kaikkea Aallon koneiden kanssa. Tässä valitettavasti on nykyään tietoturvasyistä lisämutka, joka tekee alkuunpääsemisestä hankalaa.
Haaste on lyhyesti tämä: jos yrität ottaa Aallon yleiskäyttöisiin Linux-palvelimiin yhteyttä Aallon verkon ulkopuolelta (esim. kotoa), Aallon palvelin vaatii sekä avainpariautentikaation että salasanan antamisen.
Tästä helposti tulee pieni muna-kana-ongelma: miten saan sen oman avainparini julkisen puoliskon laitettua Aallon kotihakemistoon, jos en pääse kirjautumaan lainkaan sisään ennen kuin avainpariautentikaatio toimii? Tähän ei valitettavasti ole kovin helppoa ratkaisua, mutta nämä vaihtoehdot toimivat:
Käytä VPN-etäyhteyttä. Tällöin saat oman koneesi osaksi Aallon verkkoa, ja Aallon yleiskäyttöiset koneet päästävät sisään pelkän salasanan avulla. Nyt voit kopioida avainparin julkisen puoliskon oikeaan paikkaan.
Siirrä avainparin julkinen puoli Aallon tietokoneluokassa jollekin Aallon Linux-koneelle.
Käytä VDI-palvelua ja siirrä avainparin julkinen puoli tätä kautta.
Onneksi tämä tarvitsee tehdä vain kerran. Kun saat avainparin julkisen puoliskon asennettua oikeaan paikkaan, yhteydenoton pitäisi jatkossa onnistua mistä tahansa.
Connection refused?
Etenkin ensi alkuun törmää aika helposti siihen, että muutaman pieleen menneen yhteydenottoyrityksen jälkeen esimerkiksi kosh.aalto.fi
alkaa sanoa "Connection refused". Näin käy, jos kirjoitat salasanasi väärin muutaman kerran. Tunnuksesi päätyy mustalle listalle muutamaksi tunniksi.
Voit yrittää kiertää ongelmaa kokeilemalla toista palvelinta, lyta.aalto.fi
. Mutta jos kaikkien palvelinten kohdalla kirjoitat salasanan väärin useampaan kertaan, ainoa ratkaisu on odotella jokunen tunti…
Tehokäyttäjän vinkkeja¶
SSH-yhteyden avaaminen Aallon koneille etenkin toistuvasti on aika hankalaa ja hidasta, jos joka kerta joutuu syöttämään salasanan. Tässä yksi helpohko vinkki, joka voi auttaa etenkin edistyneempiä käyttäjiä. (Tämän kappaleen voi turvallisesti ohittaa, jos tämä tuntuu menevän turhankin tekniseksi.)
Luo ensin omalla koneella kotihakemistoosi hakemistot .ssh
ja .ssh/masters
, jos niitä ei ennestään ole.
Luo sitten omalla koneellasi tiedosto ~/.ssh/config
, ja laita sen sisällöksi tällaista (korvaa "TUNNUS" omalla Aallon käyttäjätunnuksellasi):
Host kosh
Hostname kosh.aalto.fi
User TUNNUS
ControlMaster auto
ControlPath ~/.ssh/masters/%r@%h:%p
Nyt välitön vaikutus on se, että komennon ssh TUNNUS@kosh.aalto.fi
sijaan voit sanoa lyhyesti ssh kosh
; kokeile!
Mutta paljon isompi vaikutus on noilla ControlMaster
- ja ControlPath
-loitsuilla. Kokeile tätä:
Avaa yhdessä ikkunassa SSH-yhteys komennolla
ssh kosh
, syötä salasana ym.Nyt voit toisessa ikkunassa antaa komennon
ssh kosh
. Nyt sinun ei tarvitse enää antaa uudestaan salasanaa, vaan yhteys muodostuu samaa putkea pitkin, jonka toisessa ikkunassa oleva SSH-yhteys on jo avannut. Yhteys myös avautuu hyvin nopeasti.
Tämä on erityisen kätevää, jos haluat siirrellä tiedostoja Aallon koneen ja oman koneesi välillä. Niin kauan kuin sinulla on ssh kosh
-yhteys jossain ikkunassa taustalla roikkumassa, voit helposti ja nopeasti siirtää tiedostoja esimerkiksi tällaisilla komennoilla:
scp tiedosto.txt kosh:
scp kosh:tiedosto.txt .
Et joudu joka välissä syöttämään salasanaasi ja odottelemaan yhteyden avautumista.
Nyt kun toivottavasti saat jollain tapaa siirreltyä tiedostoja oman koneesi ja Aallon koneiden välillä, kokeillaanpa, miten tätä voi hyödyntää…