Mikä on SSH-avain?
SSH-avain viittaa ns. "avainpariin", jota voidaan käyttää turvallisempaa ja helpompaa palvelimeen kirjautumista varten salasanojen sijaan.
Avainpareja käyttäessä hyökkääjä ei pysty arvaamaan salasanaasi, vaan tarvitsee avaimen joka löytyy vain sinulta.
SSH-avaimen luonti
Jos SSH-avainta ei löydy, se täytyy luoda käyttämällä komentoa "ssh-keygen" (Windows-ympäristöissä "ssh-keygen.exe")
- Avaa terminaali tai cmd
- Aja "ssh-keygen"
- Seuraa ruudulla näkyviä ohjeita
Tarkista että avaimet on luotu:
Oman koneesi kotikansiosta:
ls -l ~/.ssh/
dir $env:USERPROFILE\.ssh -Force
Pitäisi näkyä esim:
id_ed25519 (yksityinen, älä kopioi minnekään)
id_ed25519.pub (julkinen, tämän sisältö viedään palvelimelle)
Kopioi julkinen avain palvelimelle.
Helpoin tapa:
Linux: Avaa terminal ja syötä komento:
ssh-copy-id -i ~/.ssh/id_ed25519.pub käyttäjä@palvelin
Windows: Avaa powershell ja syötä komento:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh käyttäjä@palvelin "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Tämä kysyy salasanan kerran ja hoitaa kaiken automaattisesti.
Jos ssh-copy-ip ei ole käytössä tai ei onnistu.
Tee manuaalisesti
Linux:
Näytä julkisen avaimen sisältö ja Kopioi koko rivi (alkaa ssh-ed25519
ja loppuu käyttäjänimeen).
cat ~/.ssh/id_ed25519.pub
Kirjaudu palvelimelle salasanalla:
ssh käyttäjä@palvelin
Palvelimella:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Liitä avain tiedoston loppuun yhdelle riville.
Tallenna (Ctrl+O
, Enter) ja sulje (Ctrl+X
).
Aseta oikeudet:
chmod 600 ~/.ssh/authorized_keys
Testaa kirjautuminen
Poistu palvelimelta ja yritä uudelleen:
ssh käyttäjä@palvelin
Jos kaikki onnistui, et enää joudu syöttämään palvelimen salasanaa.
Windows:
Avaa powershell ja syötä komento:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Kopioi koko avainrivi (alkaa ssh-ed25519
ja loppuu käyttäjänimeen).
Yhdistä palvelimelle salasanalla:
ssh käyttäjä@palvelin
Palvelimen päässä:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Liitä avain tiedoston loppuun yhdelle riville.
Tallenna (Ctrl+O
, Enter) ja sulje (Ctrl+X
).
Aseta oikeudet:
chmod 600 ~/.ssh/authorized_keys
Testaa kirjautuminen
Poistu palvelimelta ja yritä uudelleen:
ssh käyttäjä@palvelin
Jos kaikki onnistui, et enää joudu syöttämään palvelimen salasanaa.
Kuinka käynnistän ssh-servicen uudelleen
useimmat RedHat- ja Debian-pohjaiset, esim. RHEL 7+, CentOS 7+, Fedora, Ubuntu 16.04+, Debian 8+
sudo systemctl restart sshd
Debian-/Ubuntu-puolella palvelun nimi voi myös olla ssh
sudo systemctl restart ssh
Vanhat SysVinit (esim. RHEL 6, Debian 7, Ubuntu 14.04 tai vanhemmat)
sudo service ssh restart # Debian/Ubuntu
sudo service sshd restart # RedHat
Salasanan käytöstä poistaminen palvelimen kirjautumisesta
Etäpalvelimen päästä voidaan poistaa kokonaan käytöstä salasana-autentikaatio muokkaamalla SSH-palvelimen asetuksia.
Kun SSH-avaimella kirjautuminen on testattu toimivaksi:
Avaa SSH-palvelimen asetustiedosto
sudo nano /etc/ssh/sshd_config
Varmista, että julkisella avaimella kirjautuminen on päällä
Etsi rivi "#PubkeyAuthentication yes", ja ota sen edestä #-kirjain pois.
Poista salasanakirjautuminen pois käytöstä
Etsi rivi "#PasswordAuthentication yes", ja muuta se muotoon "PasswordAuthentication no" (ilman #-kirjainta!").
Tallenna tiedosto
Paina CTRL + X, jolloin editori saattaa pyytää varmistusta, johon painetaan Y-kirjainta vahvistaakseen tallennus.
Käynnistä SSH-palvelin uudelleen
sudo systemctl reload ssh
Varmista, että avaimella kirjautuminen toimii ja salasanaa ei enään hyväksytä
Nyt palvelimesi:
-
Hyväksyy vain SSH-avaimella kirjautumisen
-
Estää root-käyttäjän kirjautumisen SSH:n kautta