SSH: din eksterne nøkkel
Nøkler i stedet for passord — og terminalen som forsvinner ut i verden.
SSH er hvordan du sitter ved serveren uten å sitte ved den: terminalen din blir til et vindu inn i en annen maskin. Nøkler erstatter passord — og de er hele grunnen til at du tør å la serveren stå åpen mot nettet.
Hvorfor nøkler, ikke passord
En SSH-nøkkel er et par: en privat nøkkel som bor på maskinen din, og en offentlig nøkkel som ligger på serveren. Serveren kan med den offentlige sjekke at du har den private — uten å motta den. Ingen passord tastes over nettet, og det finnes ingenting for en robot å gjette. Bot-angrep mot SSH prøver passord; mot en maskin som bare tar imot nøkler, lykkes de aldri.
ssh-keygen -t ed25519 -C "sofie@laptop"Kommandoen spører hvor nøkkelen skal ligge (~/.ssh/id_ed25519 er standard) og om du vil ha et passordfrase på selve filen. Gjør det: da er nøkkelfilen nytteløs for den som kommer over den, uten passordfrasen. Merk deg hva som lages: filen *uten* ending er den private, id_ed25519.pub er den offentlige.
Obs
Den private nøkkelen forlater aldri maskinen din
Kopier den offentlige nøkkelen til serveren — aldri den private. Den private filen skal ikke ligge i git, i e-post eller på en minnepinne. Lekker den likevel, regn den som tapt: lag et nytt par og fjern den gamle fra serveren.
Nøkkelen på plass
Den offentlige nøkkelen skal inn i filen ~/.ssh/authorized_keys på serveren — én linje per nøkkel som skal kunne logge inn. Enkleste vei dit er ssh-copy-id, som gjør kopieringen i én kommando. Den trenger at du fortsatt kan logge inn med passord — derfor gjøres dette *før* du lukker passorddøren.
ssh-copy-id sofie@203.0.113.10 ssh sofie@203.0.113.10# Første gang: "The authenticity of host ..." — svar yes# Etter det: du er inne, uten passordFørste gang du kobler deg, spør SSH om du stoler på maskinen: den viser et *fingeravtrykk* av serverens egen nøkkel. Svar yes — og fra da av varsler SSH hvis fingeravtrykket endrer seg, noe det aldri skal gjøre. Etter at nøkkelen er kopiert, logges du inn uten passord. ssh sofie@host er hele kommandoen; host er serverens IP-adresse eller domenenavn.
Koble passorddøren
# /etc/ssh/sshd_configPasswordAuthentication noEtter endringen starter du SSH-tjenesten på nytt med systemctl restart ssh (krever root eller sudo — på en fersk VPS er du som regel innlogget som root). Og her gjelder en regel: ha den gamle økten åpen mens du tester med et nytt terminalvindu. Feiler nøkkelen, har du fortsatt en dør inn. Først når den nye innloggingen fungerer, lukker du den gamle økten.
ssh-agent — i korte trekk
Har du passordfrase på nøkkelen, blir det mye å taste. ssh-agent holder den ulåste nøkkelen i minnet så lenge økten lever: start den med eval "$(ssh-agent)" og legg til nøkkelen med ssh-add. Da taster du passordfrasen én gang per økt, ikke ved hver innlogging. Det er hele agenten — bekvemmelighet, ikke mer sikkerhet.
Du kan nå
- lage et nøkkelpar med ssh-keygen og plassere den offentlige nøkkelen på serveren
- logge inn med ssh bruker@host — uten passord
- slå av passord-innlogging i sshd_config — med en økt åpen mens du tester