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:

  1. 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.

  2. Siirrä avainparin julkinen puoli Aallon tietokoneluokassa jollekin Aallon Linux-koneelle.

  3. 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ää…

Palautusta lähetetään...