Ubuntu logo

SSH-nøkler i Linux

Sikker pålogging med SSH-nøkler

Hvorfor bruke SSH-nøkler?

SSH-nøkler gir flere fordeler sammenlignet med passordautentisering:

  • Bedre sikkerhet - nøkler er vanskeligere å kompromittere enn passord
  • Enklere pålogging - ingen behov for å skrive passord
  • Automatisering - ideelt for skript og automatiserte oppgaver

Generere SSH-nøkler

Det første steget er å generere et SSH-nøkkelpar. Den private nøkkelen beholder du på din maskin, mens den offentlige nøkkelen installeres på serveren du vil koble til. Vi bruker ssh-keygen med RSA-algoritmen og 4096 bits for sterk sikkerhet.
$ ssh-keygen -t rsa -b 4096 -C "din.epost@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:LnwPOVxH0Qm3mK5mYKY9qMX8qTdyJO+G9Vq4HvbUkRI din.epost@example.com
The key's randomart image is:
+---[RSA 4096]----+
|     .o+B*.      |
|     .+=+= .     |
|    . +.=o+      |
|     + ++o..     |
|    . =.S.       |
|     = = o       |
|    . B = .      |
|     o = o       |
|      E   .      |
+----[SHA256]-----+

$ ls -l ~/.ssh
total 8
-rw------- 1 user user 3389 Feb 12 05:42 id_rsa
-rw-r--r-- 1 user user  748 Feb 12 05:42 id_rsa.pub
Den offentlige nøkkelen kan vises med cat-kommandoen. Dette er innholdet som skal installeres på serveren.
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7KHsBX3oQgNNwKGu8TC9jB5qMR8... din.epost@example.com

Installere den offentlige nøkkelen på serveren

For å installere nøkkelen på serveren, må vi først opprette .ssh-mappen og authorized_keys-filen med riktige tillatelser. Deretter kan vi legge til den offentlige nøkkelen i authorized_keys.
$ ssh brukernavn@server
brukernavn@server's password: 

$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
$ ls -la ~/.ssh
total 8
drwx------ 2 brukernavn brukernavn 4096 Feb 12 05:42 .
drwxr-xr-x 6 brukernavn brukernavn 4096 Feb 12 05:42 ..

$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7KHsBX3oQgNNwKGu8TC9jB5qMR8... din.epost@example.com' >> ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys
$ ls -l ~/.ssh/authorized_keys
-rw------- 1 brukernavn brukernavn 748 Feb 12 05:42 authorized_keys
Alternativt kan du bruke ssh-copy-id som automatiserer prosessen. Dette verktøyet vil kopiere nøkkelen og sette riktige tillatelser automatisk.
$ ssh-copy-id brukernavn@server
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
Password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'brukernavn@server'"
and check to make sure that only the key(s) you wanted were added.

Teste SSH-nøkkel tilkobling

Etter at nøkkelen er installert, kan du teste tilkoblingen. Hvis du har satt en passphrase på nøkkelen din, vil du bli bedt om å skrive denne (ikke serverpassordet).
$ ssh brukernavn@server
Enter passphrase for key '/home/user/.ssh/id_rsa': 
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)

Last login: Wed Feb 12 05:42:29 2025 from 192.168.1.100
brukernavn@server:~$ 
Hvis serveren kjører på en annen port enn standard (22), må du spesifisere porten med -p flagget.
$ ssh -p 2222 brukernavn@server
Enter passphrase for key '/home/user/.ssh/id_rsa': 
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)

Last login: Wed Feb 12 05:42:35 2025 from 192.168.1.100
brukernavn@server:~$ 

Sikre SSH-konfigurasjonen

Etter at du har bekreftet at nøkkelautentisering fungerer, er det anbefalt å deaktivere passordautentisering for å øke sikkerheten. Dette gjøres ved å endre SSH-serverens konfigurasjon.
$ sudo nano /etc/ssh/sshd_config

# Innhold av sshd_config:
# Deaktiver passordautentisering
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

# Tillat bare SSH-nøkkel autentisering
PubkeyAuthentication yes

# Begrens hvilke brukere som kan logge inn
AllowUsers brukernavn

$ sudo systemctl restart ssh
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2025-02-12 05:42:40 CET; 5s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 12345 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 12346 (sshd)
      Tasks: 1 (limit: 4915)
     Memory: 1.1M
        CPU: 35ms
     CGroup: /system.slice/ssh.service
             └─12346 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Viktige sikkerhetstips:
  • Beskytt den private nøkkelen din (~/.ssh/id_rsa) og del den aldri med andre
  • Bruk alltid en sterk passphrase på private nøkler
  • Sikre at ~/.ssh har tillatelse 700 og ~/.ssh/authorized_keys har 600
  • Vurder å bruke ssh-agent for å unngå å skrive passphrase gjentatte ganger
  • Gjør regelmessige backups av dine SSH-nøkler