Nämä ohjeet selittävät, kuinka SSH-avainpari luodaan ja konfiguroidaan, jotta GitHub Actions voi automaattisesti lähettää tiedostoja web-palvelimelle SCP:n avulla.
Luo uusi SSH-avainpari omalla koneellasi. Käytä erityisesti tätä tarkoitusta varten luotua avainta (älä käytä henkilökohtaista SSH-avaintasi).
ssh-keygen -t ed25519 -C "github-actions-MyWeather" -f github_deploy_key
Tämä luo kaksi tiedostoa:
github_deploy_key - yksityinen avain (private key)github_deploy_key.pub - julkinen avain (public key)Kirjaudu web-palvelimellesi SSH:lla ja lisää julkinen avain authorized_keys-tiedostoon:
# Kirjaudu web-palvelimelle
ssh -p 22 käyttäjänimi@palvelin.fi
# Luo .ssh-hakemisto jos sitä ei ole
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Lisää julkinen avain authorized_keys-tiedostoon
nano ~/.ssh/authorized_keys
Kopioi julkisen avaimen sisältö (tiedostosta github_deploy_key.pub) ja liitä se authorized_keys-tiedostoon uudelle riville. Tallenna ja sulje tiedosto (Ctrl+X, Y, Enter).
# Aseta oikeat käyttöoikeudet
chmod 600 ~/.ssh/authorized_keys
Avaa yksityinen avain (github_deploy_key) tekstieditorilla ja kopioi koko sisältö (mukaan lukien -----BEGIN OPENSSH PRIVATE KEY----- ja -----END OPENSSH PRIVATE KEY----- -rivit).
Siirry GitHubissa repositoryn asetuksiin:
WEB_SERVER_SSH_KEYLisää vastaavalla tavalla seuraavat secrets:
| Secret-nimi | Arvo | Esimerkki |
|---|---|---|
WEB_SERVER_HOST |
Web-palvelimen osoite | example.com |
WEB_SERVER_USER |
SSH-käyttäjänimi | webuser |
WEB_SERVER_PATH |
Kohdehakemisto palvelimella | /var/www/downloads |
WEB_SERVER_SSH_KEY |
Yksityinen SSH-avain | (Luotu vaiheessa 1) |
Ennen kuin luotat GitHub Actionsin toimivuuteen, testaa yhteys paikallisesti:
ssh -i github_deploy_key -p 22 käyttäjänimi@palvelin.fi
Jos yhteys toimii ilman salasanan kysymistä, konfiguraatio on oikein!
GitHub Actions -tiedostossa (.github/workflows/build-and-deploy.yml) SCP-komento käyttää näitä secrets-arvoja:
- name: Deploy to web server via SCP
env:
SSH_KEY: ${{ secrets.WEB_SERVER_SSH_KEY }}
WEB_HOST: ${{ secrets.WEB_SERVER_HOST }}
WEB_USER: ${{ secrets.WEB_SERVER_USER }}
WEB_PATH: ${{ secrets.WEB_SERVER_PATH }}
run: |
# Tallenna SSH-avain tiedostoon
printf '%s\n' "$SSH_KEY" > deploy_key
chmod 600 deploy_key
# Lähetä tiedosto
scp -i deploy_key -P 22 -o StrictHostKeyChecking=no \
output/MyWeatherSetup.exe "${WEB_USER}@${WEB_HOST}:${WEB_PATH}/"
# Siivoa avain
rm deploy_key
shell: bash
Jos deployment epäonnistuu, tarkista:
~/.ssh/authorized_keys-tiedostoon web-palvelimella?chmod 700 ~/.ssh ja chmod 600 ~/.ssh/authorized_keys)StrictHostKeyChecking=no -optio ohittaa host key -vahvistuksen, mikä on turvallista CI/CD-ympäristössä.