Mikä on SSH-avain?

SSH-avain viittaa ns. "avainpariin", jota voidaan käyttää turvallisempaan ja helpompaan palvelimelle kirjautumiseen salasanojen sijaan.

Avainpareja käyttäessä hyökkääjä ei pysty arvaamaan salasanaasi, vaan tarvitsee avaimen, joka löytyy vain sinulta.

 

Miksi SSH-avaimet ovat hyödyllisiä?

SSH-avaimet liittyvät tietoturvaan ja etäyhteyksiin. SSH (Secure Shell) on protokolla, jonka avulla voit yhdistää turvallisesti tietokoneeseen, palvelimelle tai vaikka pilvipalveluun.

Tyypillisesti ihmiset yhdistävät SSH:lla palvelimille käyttämällä salasanoja, mutta tässä on pari ongelmaa:

  1. Salasanat voivat olla heikkoja tai varastettavia.

  2. Salasanoja joutuu kirjoittamaan usein, mikä on hankalaa, jos yhdistät monta kertaa päivässä.

SSH-avaimet tekevät tästä helpompaa ja turvallisempaa.

SSH-avain tulee aina olemaan vahvempi kuin salasanasi koska ne ovat monia tuhansia merkkejä pitkiä joten hyökkääjät eivät pysty tekemään niin sanottua brute force hyökkäystä saadakseen salasanasi.

 

SSH-avaimet koostuvat kahdesta salaisesta avaimesta:

  1. Yksityinen avain (private key) – pysyy sinun koneellasi ja sitä EI koskaan lähetetä muualle.

  2. Julkinen avain (public key) – asetetaan palvelimelle, johon haluat yhdistää.

Kun yrität yhdistää palvelimelle:

  • Palvelin tarkistaa, että sinulla on vastaava yksityinen avain.

  • Jos avaimet täsmäävät, pääset sisään ilman salasanaa.

 

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")

  1. Avaa terminaali tai cmd
  2. Aja "ssh-keygen"
  3. Seuraa ruudulla näkyviä ohjeita

 

Tarkista, että avaimet on luotu:

Oman koneesi kotikansiosta:

Linux terminal:
ls -l ~/.ssh/
 
Windows cmd:
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-id ei ole käytössä tai komento 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.

  1.  

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

 

Kuinka luot uuden käyttäjän

1.  Avaa komentokehote ja syötä seuraavat tiedot erikseen

adduser kayttaja(korvaa haluamalla käyttäjä nimellä)
passwd kayttaja(korvaa omalla käyttäjä salasanalla)

2.  Sen jälkeen annetaan käyttäjille sudo-oikeudet

usermod -aG wheel kayttaja

3.  Sitten varmistetaan onko wheel-ryhmällä sudo oikeudet 

visudo

etsi seuraava koodi ja tarkista ettei sen edessä ole # merkkiä

%wheel ALL=(ALL) ALL

4. Sen jälkeen testaa pääsetkö käyttäjällä palvelimelle

ssh kayttaja@palvelin

5. Testaa sen jälkeen käyttäjän rooli

sudo whoami

Jos saat vastaukseksi root on silloin kaikki kunnossa

 

Root kirjautumisen estäminen ssh:ssa

Muista tehdä uusi käyttäjä ennen kun poistat rooin kirjautumisen

1. Avaa nano tekstieditori

sudo nano /etc/ssh/sshd_config

etsi tai lisää sieltä kohta nimellä:

PermitRootLogin no

2. Käynnistä SSH uudelleen

systemctl restart sshd

3. Testaa vielä sen jälkeen pääseekö root kirjautumaan

ssh root@palvelin

Terminaali kysyy ensin rootin salasanaa, joka on normaalia ja sen jälkeen tule permission denied, joka kertoo sen että onnistuit

 

 

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 sshd

Varmista, että avaimella kirjautuminen toimii ja salasanaa ei enää hyväksytä.

 

Nyt palvelimesi:

  • Hyväksyy vain SSH-avaimella kirjautumisen

  • Estää root-käyttäjän kirjautumisen SSH:n kautta

 

Auttoiko artikkeli teitä? 0 käyttäjistä hyötyivät artikkelista (0 Äänet)