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