Sådan konfigureres SSH-nøgler på CentOS 7

Indledning

SSH, eller secure shell, er en krypteret protokol, der bruges til at administrere og kommunikere med servere. Når du arbejder med en CentOS-server, er der stor sandsynlighed for, at du vil bruge det meste af din tid i en terminalsession, der er forbundet til din server via SSH.

I denne vejledning vil vi fokusere på opsætning af SSH-nøgler til en vanilla CentOS 7-installation. SSH-nøgler giver en ukompliceret og sikker måde at logge ind på din server på, og anbefales til alle brugere.

Strin 1 – Opret RSA-nøglepar

Det første trin er at oprette et nøglepar på klientmaskinen (normalt din computer):

  • ssh-keygen

Som standard vil ssh-keygen oprette et 2048-bit RSA-nøglepar, hvilket er sikkert nok til de fleste anvendelsestilfælde (du kan eventuelt indsætte -b 4096-flaget for at oprette en større 4096-bit nøgle).

Når du har indtastet kommandoen, bør du se følgende prompt:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

Tryk på ENTER for at gemme nøgleparret i undermappen .ssh/ i din hjemmemappe, eller angiv en anden sti.

Hvis du tidligere har genereret et SSH-nøglepar, kan du se følgende prompt:

Output
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Hvis du vælger at overskrive nøglen på disken, kan du ikke længere autentificere med den tidligere nøgle. Vær meget forsigtig, når du vælger ja, da dette er en destruktiv proces, som ikke kan omgøres.

Du bør derefter se følgende prompt:

Output
Enter passphrase (empty for no passphrase):

Her kan du eventuelt indtaste en sikker passphrase, hvilket stærkt anbefales. En passphrase tilføjer et ekstra sikkerhedslag for at forhindre uautoriserede brugere i at logge ind. Hvis du vil vide mere om sikkerhed, kan du læse vores vejledning om hvordan du konfigurerer SSH-nøglebaseret godkendelse på en Linux-server.

Du bør derefter se følgende output:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

Du har nu en offentlig og privat nøgle, som du kan bruge til at godkende. Det næste trin er at placere den offentlige nøgle på din server, så du kan bruge SSH-nøglebaseret autentifikation til at logge ind.

Stræk 2 – Kopier den offentlige nøgle til CentOS-serveren

Den hurtigste måde at kopiere din offentlige nøgle til CentOS-værten på er at bruge et hjælpeprogram kaldet ssh-copy-id. På grund af sin enkelhed anbefales denne metode stærkt, hvis den er tilgængelig. Hvis du ikke har ssh-copy-id til rådighed på din klientmaskine, kan du bruge en af de to alternative metoder, der er angivet i dette afsnit (kopiering via adgangskodebaseret SSH eller manuel kopiering af nøglen).

Kopiering af din offentlige nøgle ved hjælp af ssh-copy-id

Værktøjet ssh-copy-id er som standard inkluderet i mange operativsystemer, så du har det måske til rådighed på dit lokale system. For at denne metode kan fungere, skal du allerede have adgang til din server via SSH med adgangskode.

For at bruge værktøjet skal du blot angive den fjernvært, som du gerne vil oprette forbindelse til, og den brugerkonto, som du har SSH-adgang med adgangskode til. Dette er den konto, som din offentlige SSH-nøgle kopieres til.

Syntaksen er:

Du får muligvis følgende meddelelse:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Dette betyder blot, at din lokale computer ikke kan genkende fjernværten. Dette vil ske første gang, du opretter forbindelse til en ny vært. Skriv “yes”, og tryk på ENTER for at fortsætte.

Næste gang scanner hjælpeprogrammet din lokale konto for den id_rsa.pub-nøgle, som vi oprettede tidligere. Når det finder nøglen, vil det bede dig om adgangskoden til fjernbrugerens konto:

Output
/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 -- if you are prompted now it is to install the new [email protected]'s password:

Typ adgangskoden (din indtastning vises ikke af sikkerhedshensyn), og tryk på ENTER. Hjælpeprogrammet opretter forbindelse til kontoen på fjernværten ved hjælp af den adgangskode, du har angivet. Det kopierer derefter indholdet af din ~/.ssh/id_rsa.pub-nøgle til en fil i fjernkontoen ~/.sshs home ~/.ssh-mappe kaldet authorized_keys.

Du bør se følgende output:

Output
Number of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.

På dette tidspunkt er din id_rsa.pub-nøgle blevet uploadet til fjernkontoen. Du kan fortsætte til trin 3.

Kopiering af offentlig nøgle ved hjælp af SSH

Hvis du ikke har ssh-copy-id til rådighed, men du har adgang til en adgangskodebaseret SSH-adgang til en konto på din server, kan du uploade dine nøgler ved hjælp af en konventionel SSH-metode.

Vi kan gøre dette ved at bruge kommandoen cat til at læse indholdet af den offentlige SSH-nøgle på vores lokale computer og sende det via en SSH-forbindelse til fjernserveren.

På den anden side kan vi sikre os, at mappen ~/.ssh eksisterer og har de korrekte tilladelser under den konto, vi bruger.

Vi kan derefter outputte det indhold, vi har rørt over i en fil kaldet authorized_keys i denne mappe. Vi bruger >>-omdirigeringssymbolet til at tilføje indholdet i stedet for at overskrive det. På den måde kan vi tilføje nøgler uden at ødelægge tidligere tilføjede nøgler.

Den fulde kommando ser således ud:

  • cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Du får muligvis følgende meddelelse:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Det betyder, at din lokale computer ikke kan genkende fjernværten. Dette vil ske første gang, du opretter forbindelse til en ny vært. Skriv “ja”, og tryk på ENTER for at fortsætte.

Derpå skal du blive bedt om at indtaste adgangskoden til fjernbrugerkontoen:

Output
[email protected]'s password:

Når du har indtastet din adgangskode, kopieres indholdet af din id_rsa.pub-nøgle til slutningen af authorized_keys-filen for fjernbrugerens konto. Fortsæt til trin 3, hvis dette lykkedes.

Kopiering af offentlig nøgle manuelt

Hvis du ikke har adgang til din server via SSH med adgangskode til rådighed, skal du gennemføre ovenstående proces manuelt.

Vi vil manuelt føje indholdet af din id_rsa.pub-fil til ~/.ssh/authorized_keys-filen på fjernmaskinen.

For at få vist indholdet af din id_rsa.pub-nøgle skal du skrive dette på din lokale computer:

  • cat ~/.ssh/id_rsa.pub

Du vil se indholdet af nøglen, som skal se nogenlunde sådan ud:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]

Access til din fjernvært ved hjælp af den metode, du har til rådighed.

Når du har adgang til din konto på fjernserveren, skal du sørge for, at mappen ~/.ssh findes. Denne kommando opretter mappen, hvis det er nødvendigt, eller gør ingenting, hvis den allerede findes:

  • mkdir -p ~/.ssh

Nu kan du oprette eller ændre authorized_keys-filen i denne mappe. Du kan tilføje indholdet af din id_rsa.pub-fil til slutningen af authorized_keys-filen og oprette den om nødvendigt ved hjælp af denne kommando:

  • echo public_key_string >> ~/.ssh/authorized_keys

I ovenstående kommando skal du erstatte public_key_string med output fra cat ~/.ssh/id_rsa.pub-kommandoen, som du udførte på dit lokale system. Den skal starte med ssh-rsa AAAA....

Finalt skal vi sikre, at mappen ~/.ssh og filen authorized_keys har de rette tilladelser:

  • chmod -R go= ~/.ssh

Dette fjerner rekursivt alle “group”- og “other”-tilladelser for mappen ~/.ssh/.

Hvis du bruger root-kontoen til at oprette nøgler til en brugerkonto, er det også vigtigt, at ~/.ssh-mappen tilhører brugeren og ikke root:

  • chown -R sammy:sammy ~/.ssh

I denne vejledning hedder vores bruger sammy, men du bør erstatte det relevante brugernavn i ovenstående kommando.

Vi kan nu forsøge passwordløs godkendelse med vores Ubuntu-server.

Stræk 3 – Godkend dig til din CentOS-server ved hjælp af SSH-nøgler

Hvis du har gennemført en af procedurerne ovenfor med succes, bør du være i stand til at logge ind på fjernværten uden fjernkontoens adgangskode.

Den grundlæggende proces er den samme:

Hvis det er første gang, du opretter forbindelse til denne vært (hvis du har brugt den sidste metode ovenfor), kan du se noget som dette:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Dette betyder, at din lokale computer ikke genkender fjernværten. Skriv “yes”, og tryk derefter på ENTER for at fortsætte.

Hvis du ikke har angivet en passphrase til din private nøgle, vil du blive logget ind med det samme. Hvis du har angivet en passphrase for den private nøgle, da du oprettede den, bliver du bedt om at indtaste passphrasen nu. Efter godkendelsen bør der åbnes en ny shellsession for dig med den konfigurerede konto på CentOS-serveren.

Hvis nøglebaseret godkendelse var vellykket, skal du fortsætte for at lære, hvordan du kan sikre dit system yderligere ved at deaktivere adgangskodegodkendelse.

Stræk 4 – Deaktiver adgangskodegodkendelse på din server

Hvis du kunne logge ind på din konto ved hjælp af SSH uden adgangskode, har du med succes konfigureret SSH-nøglebaseret godkendelse til din konto. Din adgangskodebaserede godkendelsesmekanisme er dog stadig aktiv, hvilket betyder, at din server stadig er udsat for brute-force-angreb.

Hvor du gennemfører trinene i dette afsnit, skal du sikre dig, at du enten har SSH-nøglebaseret godkendelse konfigureret for root-kontoen på denne server, eller at du helst har SSH-nøglebaseret godkendelse konfigureret for en ikke-rod-konto på denne server med sudo-privilegier. Dette trin vil låse adgangskodebaserede logins, så det er afgørende at sikre, at du stadig vil kunne få administrativ adgang.

Når du har bekræftet, at din fjernkonto har administrative rettigheder, skal du logge ind på din fjernserver med SSH-nøgler, enten som root eller med en konto med sudo-privilegier. Åbn derefter SSH-dæmonens konfigurationsfil:

  • sudo vi /etc/ssh/sshd_config

Inden for filen skal du søge efter et direktiv, der hedder PasswordAuthentication. Dette kan være kommenteret ud. Tryk på i for at indsætte tekst, og udkommenter derefter linjen, og indstil værdien til “no”. Dette vil deaktivere din mulighed for at logge ind via SSH ved hjælp af konto-adgangskoder:

/etc/ssh/sshd_config
...PasswordAuthentication no...

Når du er færdig med at foretage ændringer, skal du trykke på ESC og derefter :wq for at skrive ændringerne til filen og afslutte. For rent faktisk at implementere disse ændringer skal vi genstarte sshd-tjenesten:

  • sudo systemctl restart sshd.service

Som en sikkerhedsforanstaltning skal du åbne et nyt terminalvindue og teste, at SSH-tjenesten fungerer korrekt, før du lukker denne session:

Når du har verificeret din SSH-tjeneste, kan du roligt lukke alle aktuelle serversessioner.

S SSH-dæmonen på din CentOS-server reagerer nu kun på SSH-nøgler. Adgangskodebaseret godkendelse er blevet deaktiveret med succes.

Slutning

Du bør nu have SSH-nøglebaseret godkendelse konfigureret på din server, så du kan logge ind uden at angive en konto-adgangskode.

Hvis du gerne vil lære mere om at arbejde med SSH, så tag et kig på vores SSH Essentials Guide.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.