English version of this page

Generering av SSH-nøkler

Slik lager du et nytt SSH-nøkkelpar. Metoden fungerer på Linux, macOS og Windows 10 eller nyere med OpenSSH-klient.

1. Sjekk eksisterende nøkler

Før du lager nytt ssh-nøkkelpar bør du sjekke om du har noen fra før slik at du ikke skriver over disse.

[user@host ~]$ cd ~/.ssh

[user@host .ssh]$ ls -al id_*
-rw------- 1  user  user  1679 jul   3  2007 id_rsa
-rw-r--r-- 1  user  user   389 jul   3  2007 id_rsa.pub
[user@host .ssh]$ 

Her finnes det gamle rsa-nøkler, disse bør erstattes av nyere ed25519-nøkler. De gamle nøklene kan godt ligge der til du er sikker på at alt virker med nye, evt. så kan de tas kopi av eller flyttes til en undermappe så de kan hentes frem om det er behov for de senere.

2. Generere moderne ed25519-nøkkel

ed25519-nøkler har flere fordeler fremfor de gamle rsa-nøklene.

  • De er sikrere
  • De er mindre
  • De er raskere å generere og å verifisere

Nøkler genereres enklest på kommandolinja på en macOS- eller Linux-maskin.

I denne prosessen er det verdt å merke seg at «passphrase» bør settes til en passordfrase som minst like sikker som ditt passord. "-a 100" er antall runder nøkkelen krypteres, default er 16 runder. 100 runder gjør det vanskeligere å knekke en privat nøkkel som kommer på avveie.

En kan også velge ett annet filnavn om en f. eks. ønsker å ha et separat nøkkel for enkelt-maskiner eller tjenester. Om en ønsker en nøkkel til test kan en navngi denne /home/user/.ssh/id_ed25519_test osv.

[user@host ~]$ ssh-keygen -C "Min nøkkel 2021-07-03" -a 100 -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_ed25519.
Your public key has been saved in /home/user/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:VaN5d/O1LgJYXRozuMWVNmf7GR0rNw0wHj6iqN2Snq8 Min nøkkel user 2021-07-03
The key's randomart image is:
+--[ED25519 256]--+
|          o+B+.  |
|         ..O*B.+ |
|         .Bo* =oO|
|       .o+ o + BB|
|      ..S.    o.*|
|     o o  .   ...|
|    . + .  . . . |
|     . o    . .  |
|      Eo.        |
+----[SHA256]-----+
[user@host ~]$ cd ~/.ssh 
[user@host .ssh]$ ls -al id_*
-rw-------  1  user  user  1679 jul   3  2007 id_rsa
-rw-r--r--  1  user  user   389 jul   3  2007 id_rsa.pub
-rw-------  1  user  user   444 Aug  10 13:20 id_ed25519
-rw-r--r--  1  user  user    86 Aug  10 13:20 id_ed25519.pub
[user@host .ssh]$ cat id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH9kFmr...... Min nøkkel user 2021-08-10
[user@host .ssh]$

Det er hele linjen "ssh-ed25519 AA.... 2021-08-10" som så skal kopieres inn inn authorized_keys og andre steder der ssh public key skal inn.

Merk: ssh-nøkler som benyttes skal alltid beskyttes med passordfrase. Unntak skal være risikovurdert og godkjent av IT-sikkerhet.

3. Legge begrensinger på bruk av nøkkel

3.1 Begrense bruk til fra kun en maskin eller en ip-range

Om nøkkel fast brukes bare fra en maskin eller fra noen maskiner, kan det legges inn begrensinger i authorized_keys på maskinen en logger inn på. Dette reduserer risiko for misbruk om den private nøkkelen kommer på avveie.

For eksempel – om en ønsker at den genererte nøkkelen kun skal kunne brukes fra en host med navn arbeidsstasjon123.uio.no eller kun fra en bestemt ip-range, kan det gjøres slik i en .ssh/authorized_keys fil:

from="arbeidsstasjon123.uio.no" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

For å begrense bruken kun fra en gitt ip-range kan gjøres slik:

from="192.168.0.0/24" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

Merk: dersom det er gitt tillatelse til at nøkkelen kan brukes uten passordfrase, for eksemlel i skript eller annen automasjon, er det et krav med slik begrensning.

3.2 Begrense bruk til å kun kjøre én bestemt kommando

Om en ønsker at nøkkelen kun skal kunne brukes til å kjøre én gitt kommando kan dette begrenses slik:

command="/usr/bin/test" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

3.3 Flere begrensninger på nøkkelen

En kan legge på flere begrensninger om en ønsker:

no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc

Dette er ikke alltid nødvendig, men kan benyttes som ekstra sikkerhetsmekanisme om du har en nøkkel som kun skal brukes til ett bestemt formål.

4. Kopiere nøkkel til ny maskin

Om du ønsker å benytte nøkkelen for å logge inn på en maskin så kan du enten kopiere inn linjen med "ssh-ed25519 AA.... 2021-08-10" manuelt inn i .ssh/authorized_keys hos den brukeren og maskinen du skal logge inn på – eller du kan benytte ssh-copy-id

[user@host ~]$ ssh-copy-id user@server

Merk: ved UiO så skal du som hovedregel ikke bruke ssh-nøkler for å gå fra en bruker til en annen. Dvs. du skal ikke bruke din ssh-nøkkel for å logge rett inn som root fra din vanlige bruker. 

5. Logge på maskin med en bestemt nøkkel

I tilfelle du har flere ssh-nøkler kan det være ønskelig å logge på med en bestemt av dem. Hvis du f. eks. har en nøkkel som heter id_ed225519_privat og ønsker at den skal brukes kan det gjøres slik:

[user@host ~]$ ssh -i .ssh/id_ed25519_privat user@server

Merk: Om ting ikke virker, eller oppfører seg annerledes enn forventet – prøv å legge på en -v eller en -vv så vil du få debug-informasjon om hva som skjer.

Dette kan også konfigureres i .ssh/config å benytte en spesifikk nøkkel mot en eller en gruppe maskiner.

Host eksempelhost
    User dinBruker
    IdentityFile ~/.ssh/dinNokkelfil
    IdentitiesOnly yes

6. Skifte passordfrase på nøkkel

Om du ønsker å skifte passordfrase på en nøkkel så kan det kjøres med ssh-keygen slik:

[user@host ~]$ ssh-keygen -p -f .ssh/id_ed25519

7. Opprydding av nøkler

Det kan være lurt å merke seg hvilke maskiner og systemer en legger igjen public-delen av nøkkelen. Om en skulle miste privat-delen av nøkkelen, eller skifter jobb eller stilling – må nøkler ryddes vekk.

Nøkler ryddes ved å slette linjen fra .ssh/authorized_keys

8. Tips og triks

En veldig vanlig feil ved oppsett av SSH-nøkler er at det settes feil rettigheter på filene. 

Det finnes en del andre opsjoner en kan legge inn i authorized_keys også, se bla her:

authorized_keys File Format

Det er verdt å merke seg at normalt sett så vil bruker ha tilgang til å endre på authorized_keys, så en kan ikke bruke disse som sikkerhetsmekanisme uten videre.

Søk i veiledningene
Kontakt brukerstøtte:

Ring oss

Vi har åpent mellom 08:30 og 17:00 på hverdager,
og mellom 10:00 og 15:00 på lørdager.

Telefonnummer: 22 84 00 04

Send inn sak til oss

Du kan sende inn din forespørsel via e-post til: it-support@uio.no.

Gå til e-post

Book et videomøte over Zoom

Er du student eller ansatt kan du avtale veiledningstime hos UiO Helpdesk over Zoom. Tilgjengelige tider er tirsdag til torsdag mellom 11:00 og 13:00.

Book et videomøte

Chat med oss

Vår chat er bemannet mellom 09:00 og 16:00 på hverdager.

Åpne chat
Publisert 27. aug. 2021 09:13 - Sist endret 4. apr. 2024 20:06