SSH-avaimien määrittely GitHub-repon asetuksiin

Jotta GitHub-palvelin pääsee ottamaan SSH-yhteyden tuotantopalvelimen virkaa toimittavalle neutroni-palvelimelle, on sitä varten luotava ja määriteltävä SSH-avaimet. Nämä avaimet eivät ole samat, kuin aikaisemmin luodut SSH-avaimet, koska seuraavaksi toteutettavassa toimintopolussa SSH-yhteyden suunta on eri. Toisin sanoen syötämme GitHub-palveluun yksityisen avaimen, jolla se pystyy ottamaan turvallisen yhteyden neutroni-palvelimelle.

  1. Luodaan ensiksi tarvittavat SSH-avaimet. Suorita seuraava komento neutronin komentorivillä.

    ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-actions
    

    Älä määrittele salasanaa, vaan jätä kumpikin kohta tyhjäksi painamalla Enter-näppäintä. Tämä siksi, että GitHub Actions -työkulussa tuota salasanaa ei pääse syöttämään manuaalisesti. Komennon suorituksen jälkeen sinulta löytyy nyt julkinen avain (~/.ssh/github-actions.pub) ja yksityinen avain (~/.ssh/github-actions).

  2. Lisätään julkinen avain niiden avaimien joukkoon, jotka on hyväksytty käytettäväksi kirjautumisessa.

    cat ~/.ssh/github-actions.pub >> ~/.ssh/authorized_keys
    

    Tämä komento lisää julkisen avaimen authorized_keys-tiedoston loppuun. Huomaa, että komennossa kuuluu olla kaksi >-merkkiä. Jos suoritat komennon yhdellä merkillä, niin authorized_keys-tiedoston sisältö tyhjenee ja tilalle tulee github-actions.pub-tiedoston sisältö.

  3. Lisätään yksityinen avain GitHub-repon asetuksissa salattuihin tietoihin. Kopioidaan ensin yksityinen avain leikepöydälle. Suorita seuraava komento ja kopioi komennon tulos leikepöydälle. Kopioitava alue alkaa rivillä -----BEGIN OPENSSH PRIVATE KEY----- ja päättyy riviin -----END OPENSSH PRIVATE KEY-----.

    cat ~/.ssh/github-actions
    

    Avaa seuraavaksi GitHubissa repon asetukset, klikkaamalla Settings-linkkiä, joka on linkkirivin oikeassa reunassa.

    Repon asetuslinkki

    Valitse oikean reunan valikosta Secrets and variables -otsikon alta Actions-kohta.

    Settings-valikon Actions-kohta

    Klikkaa sivun yläreunassa olevaa New repository secret-nappia.

    Secrets-sivu

    Kirjoita Name-kentän arvoksi PRIVATE_KEY, liitä Value-kenttään tämän vaiheen alussa leikepöydälle kopioimasi yksityinen avain ja paina lopuksi Add Secret -nappia.

    New secret -ikkuna

  4. Jotta SSH-yhteys ei jämähdä siihen, että avattava yhteys ei ole luotettu, on myös known_host-tiedoston sisältö selvitettävä. Suorita seuraava komento ja kopioi komennon tulos leikepöydälle.

    ssh-keyscan neutroni.hayo.fi
    

    Lisää uusi salattu tieto painamalla Actions secrets-sivulla New repository secret -nappia. Kirjoita Name-kentän arvoksi KNOWN_HOSTS ja liitä Value-kentään arvoksi edellä leikepöydälle kopiomasi ssh-keyscan -komennon tulos. Paina lopuksi Add secret -nappia.

    New secret -ikkuna

    Tämän jälkeen sinulla näkyy Repository secrets -listalla kaksi salattua tietoa. Pääset Kynä-ikonia painamalla päivittämään salatun tiedon uuteen. Huomaa kuitenkin, että GitHub ei näytä salattuna tallennettujen tietojen sisältöjä.

    Repository secrets -lista

  5. Viimeisenä vaiheena on vielä pieni muutos Deployer-asetuksiin. GitHub-palvelussa julkaisuskripti suoritetaan eri käyttäjän alaisuudessa, mille se tullaan lopulta kopioimaan neutroni-palvelimella. Jotta Deployer osaa luoda SSH-yhteyden oikealla käyttäjällä, lisätään se tieto vielä määrityksiin. Muokkaa projektin juuressa (~/public_html/perhekalenteri-dev) olevaa deploy.php-tiedostoa. Päivitä tiedostossa Host-määrite seuraavanlaiseksi. Vaihda neutroni-tunnus-tekstin paikalle oma neutroni-tunnukseksi. Jos tunnuksesi olisi koodaaja niin laita se neutroni-tunnus-tekstin paikalle.

    // Hosts
    host('neutroni.hayo.fi')
        ->user('neutroni-tunnus')
        ->set('deploy_path', '~/public_html/{{application}}');
    

    Vie lisäksi tämä muutos GitHub-repoon komennoilla:

    cd ~/public_html/perhekalenteri-dev
    git add .
    git commit -m "deploy.php-tiedoston host päivitetty"
    git push