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 , disse bør erstattes av nyere . 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
±ð»å25519-²Ôø°ì±ô±ð°ù 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:
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.
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-hjelp@uio.no.
Gå til e-postBook 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