Public key authenticatie --- ## 🧩 **Doel van deze opdracht** * Inloggen via SSH zonder wachtwoord (met **public/private key**). * Veiliger maken door wachtwoordlogin uit te schakelen. * Rechten controleren op SSH-bestanden. --- ## ✅ **Stap 1: Log in als gewone gebruiker (niet root)** Gebruik een normale gebruiker, bijvoorbeeld `marcel`. Root mag immers niet meer via SSH inloggen. bash ssh marcel@localhost Als je nog geen andere gebruiker hebt: bash sudo adduser marcel sudo passwd marcel --- ## ✅ **Stap 2: Genereer SSH-sleutelpaar met ECDSA** Als gebruiker `marcel`: bash ssh-keygen -t ecdsa **Uitleg:** * `-t ecdsa`: gebruikt het **ECDSA-algoritme** (sneller dan RSA bij gelijke veiligheid). * Laat alle vragen leeg (druk gewoon op Enter bij alle prompts): * Bestandslocatie: standaard is `~/.ssh/id_ecdsa` * Passphrase: leeg laten (gewoon Enter) Je ziet dan zoiets als: Generating public/private ecdsa key pair. Enter file in which to save the key (/home/marcel/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Your identification has been saved in /home/marcel/.ssh/id_ecdsa Your public key has been saved in /home/marcel/.ssh/id_ecdsa.pub --- ## ✅ **Stap 3: Kopieer de publieke sleutel naar SSH-server (localhost)** Gebruik het volgende commando: bash ssh-copy-id marcel@localhost **Uitleg:** * Kopieert de inhoud van `~/.ssh/id_ecdsa.pub` naar de server (in `~/.ssh/authorized_keys`). * Je wordt nog één keer om je wachtwoord gevraagd. * Als het lukt, zie je iets als: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'marcel@localhost'" --- ## ✅ **Stap 4: Test key-based login** Log opnieuw in met SSH: bash ssh marcel@localhost **Resultaat:** * Je zou **zonder wachtwoord** ingelogd moeten worden. * Let op: als je nog steeds een wachtwoord moet geven, is er iets mis met de permissies of configuratie. --- ## ✅ **Stap 5: Zet wachtwoordlogin uit in SSH-configuratie** Open het SSH-configuratiebestand als root: bash sudo nano /etc/ssh/sshd_config Zoek de volgende regel: #PasswordAuthentication yes Verander dit in: PasswordAuthentication no > Verwijder ook eventueel het `#` ervoor. Dit activeert de regel. Sla het bestand op en sluit af: * In Nano: `Ctrl+O`, Enter, `Ctrl+X` --- ## ✅ **Stap 6: Herstart de SSH-dienst** Voer uit: bash sudo systemctl restart sshd --- ## ✅ **Stap 7: Test opnieuw je SSH-login** Probeer opnieuw: bash ssh marcel@localhost ✅ Als alles goed is, word je **zonder wachtwoord** ingelogd. ⛔ Als het mislukt met een fout als `Permission denied`, moet je eerst weer **PasswordAuthentication** op `yes` zetten zodat je je sleutelinstallatie kunt herstellen. --- ## ✅ **Stap 8: Controleer de rechten van SSH-bestanden** Ga naar je `.ssh`-map: bash cd ~/.ssh ls -al Je ziet iets als: -rw-------. 1 marcel marcel 411 Jun 20 12:00 authorized_keys -rw-------. 1 marcel marcel 668 Jun 20 11:58 id_ecdsa -rw-r--r--. 1 marcel marcel 176 Jun 20 11:58 id_ecdsa.pub -rw-r--r--. 1 marcel marcel 1234 Jun 20 12:01 known_hosts **Belangrijke rechten:** * `authorized_keys`: alleen leesbaar/schrijfbaar voor de gebruiker (`600`) * `id_ecdsa`: private key → **zeer gevoelig**, dus `600` * `id_ecdsa.pub`: mag gelezen worden (`644`) * `known_hosts`: lijst met bekende hosts waar je ooit mee verbonden hebt --- ## ✅ **Extra uitleg over bestanden in `~/.ssh/`:** | Bestand | Functie | | ----------------- | --------------------------------------------------------------- | | `id_ecdsa` | Jouw **private key** (NOOIT delen!) | | `id_ecdsa.pub` | Jouw **public key** (wordt gekopieerd naar andere hosts) | | `authorized_keys` | Op de server: bevat toegestane **public keys** voor toegang | | `known_hosts` | Bevat fingerprints van eerder verbonden hosts (voor veiligheid) | --- ## 🧪 **Samenvattende commando’s** bash # Als gewone gebruiker ssh-keygen -t ecdsa ssh-copy-id marcel@localhost ssh marcel@localhost # Als root sudo nano /etc/ssh/sshd_config # zet PasswordAuthentication op no sudo systemctl restart sshd # Controleer bestandstoegang cd ~/.ssh ls -al