Introduktion

SSH nøgler eller SSH-keys som de kaldes på engelsk er ikke kun smarte og mere sikre. Men de gør det også meget nemmere at administrere én eller flere Linux servere. Nå du har lavet ét nøglesæt bestående af en privat og en offentlig nøgle, kan du give alle dine servere din offentlige nøgle, hvorefter du nu har adgang til alle dine servere med din private nøgle - nemt og meget mere sikkert end passwords.

Din private nøgle er en lang krypteret tekst-streng, og uden den, kan du IKKE komme ind på dine serveren igen. Pas derfor GODT PÅ DEN! Samtidig er det vigtigt IKKE at dele denne nøgle med andre så pas godt på det. Det er muligt at låse nøglen med en adgangskode, det kommer jeg også ind på i artiklen her.

Hvordan SSH nøgler virker

Når du laver et SSH nøglesæt, laver du i princippet en A-nøgle (vores private nøgle). Denne A-nøgle vil kunne åbne alle døre som har en matchende lås (vores public key), uanset hvilken- og hvormange servere du installere denne lås på. En server kan indeholde at ubegræsnet antal forskellige låse, så hver medarbejder kan med deres egen nøgle, oplåse en server og logge på den.

Derfor er første opgave, når vi har lavet et nøglesæt, at kopiere for lås (public key) ud på alle servere, vi skal kunne logge på.

Nedenunder har vi en billede, som visuelt repræsentere dette forhold imellem en "privat" nøgle og en "offentlig" nøgle.



Lav din nye SSH nøgle

For at lave et nyt nøglesæt, som vi kan bruge på vores servere bruger vi en meget simpel og indbygget kommando på vores Mac. Vi åbner derfor vores Terminal og skriver:

ssh-keygen

Bemærk at vi ikke bruger sudo, da vi vil lave nøglerne for vores egen bruger på systemet og ikke for vores "root" bruger.

Når du kører ovenstående kommando, køres nøgle-generator igennem.

Vi bliver først spurgt hvor vi ønsker at gemme nøglen, vi trykker blot "Enter" uden at skrive noget, medmindre du naturligvis ønsker at gemme nøglen et andet sted.

Efter det beder guiden os om at indtaste en "passphrase". Det er koden som du skal bruge, når du skal åbne din nøgle (private nøgle) før at du logger ind på en server for første gang. Din Mac bruger noget som hedder en ssh-agent. Kort fortalt, husker den din kode i et stykke tid, så du ikke skal skrive din kode hver gang at du vil logge på en server. Så hvis du f.eks. har tre forskellige servere du vil logge på, så skal du kun skrive den én gang. Den husker det simpelthen (midlertidigt) for de næste to. Jeg anbefaler at du har en rimelig kompleks adgangskode. Du kan også blot trykke "enter" uden kodeord, hvis vi ikke ønsker at beskytte din nøgle med en kode.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/db/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <KOMPLEKS KODE>
Enter same passphrase again: <KOMPLEKS KODE IGEN>
Your identification has been saved in /Users/db/.ssh/id_rsa.
Your public key has been saved in /Users/db/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wQWw0k6htxE0yT6wBqsHd4I7QMgC18XC2XG9rEjiE70 dhh@dinPC.local
The key's randomart image is:
+---[RSA 2048]----
|= .o BO oo. |
|o . *o=B .. |
|o. oo** o. . |
| *==o .o |
|.= = o S. |
| . o E . |
| o . |
| |
| |
----[SHA256]-----


Efter at det så er gjort, vil systemet lave to nye filer. Din "A-nøgle" og din offentlige nøgle som du ligger på en server. (id_rsa = privat nøgle, id_rsa.pub = offentlige nøgle.)

Næste skridt er at ligge din offentlige nøgle (låsen) ud på en Linux server et sted og at teste om din A-nøgle virker hertil.

Upload din offentlige nøgle (Public Key) til din Linux server

Der findes mange måder at uploade din offentlige nøgle på, men den mest brugte på Linux systemer er ssh-copy-id-kommandoen.

Sidder du på en nye Mac-computer kan du ganske simpelt uploade din offentlige nøgle (Public Key) til en Linux server ved at skrive:

ssh-copy-id dit-brugernavn@din-servers-addresse.cloudip.dk

Du vil blive bedt om at indtaste din kode til din bruger som normalt, siden vi ikke har vores offentlige nøgle (Public Key) på serveren endnu. Når det er gjort, vil den så tilføje din offentlige nøgle til Linux serveren og logge ud af serveren igen.

dit-brugernavn@din-servers-addresse.cloudip.dk's password: <INDTAST KODE SOM NORMALT>
Number of key(s) added: 1


På ældre versioner af macOS, har vi ikke ssh-copy-id kommandoen - så vi vil istedet benytte os af en bash kommando til at kopiere nøglen:

cat ~/.ssh/id_rsa.pub | ssh `dit-brugernavn@din-servers-addresse.cloudip.dk "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Kort fortalt vil denne noget lange kommando, gøre nøjagtig det samme som ssh-copy-id. Du vil også her blive bedt om at indtaste din kode til din bruger som normalt på serveren. Den visser dog ikke en status efterfølgende, den ligger bare din offentlige nøgle (Public Key) ind på serveren og logger ud igen.

Teste om din offentlige nøgle (Public Key) til din Linux server blev uploadet korrekt

Nu kan vi teste om den faktisk har lagt din offentlige nøgle (Public Key) korrekt ind på din Linux server. Det gør vi meget simpelt ved at logge ind som normalt:

ssh brugernavn@serveradresse

Du vil nu blive bedt om din passphrase (kode) til din A-nøgle (Private Key) i stedet for som normalt, at blive bedt om dit kodeord til din bruger på Linux serveren. Hvis du allerede har indtastet din passphrase tidligere, og din computer stadig husker det logger du automatisk på, uden at blive bedt om nogle kodeord.

Opsæt din server til kun at tage imod SSH nøgler

Nu da du har lavet og testet din SSH nøgle for at kunne komme ind på din Linux server, ville det jo være en fordel at din Linux server kun tager imod logins med SSH nøgler. Som standard tager en Linux server nemlig imod både password logins som vi kender det, men også imod SSH nøgle-logins. Men vi kan deaktivere password logins og dermed gøre det obligatorisk for folk at bruge SSH nøgler som højner vores sikkerhed.

Vi skal ændre /etc/ssh/sshd_config filen for at kun at tage imod SSH nøgle logins:

sudo sed -i -e s/"#PasswordAuthentication yes"/"PasswordAuthentication no"/ /etc/ssh/sshd_config

Overstående kommando vil ændre vores /etc/ssh/sshd_config fil. Mere specifikt, vil den finde "#PasswordAuthentication yes" i filen og erstatte den tekst med "PasswordAuthentication no".

Du kunne også manuelt gå ind med eksempelvis sudo nano /etc/ssh/sshd_config, rette filen, for derefter at gemme.

Før at vores nu rettede /etc/ssh/sshd_config vil tage effekt, bliver vi nød til at genstarte ssh servicen:

sudo service ssh restart

Og det var det, nu er log ind med passwords slået fra på vores Linux server.

Advarsel: Det betyder at hvis du mister din private SSH nøgle ("A-nøgle") - vil du også miste adgangen til din server. Så husk altid en backup af din "~/.ssh/"-mappe!

Et par sidste ord

Nu har du succesfuldt lavet SSH nøgler og succesfuldt smidt din offentlige nøgle (Public Key) op på din server og har dermed ikke kun gjort den mere sikker - men også gjort det meget nemmere for dig selv at logge ind. Hvis du har mange servere som du logger ind på, kan du snildt smide din offentlige nøgle op på flere servere - og derefter logge ind på dem alle med samme a-nøgle. (Private Key.)
Hjalp denne artikel dig?
Annuller
Tak!