Hur man konfigurerar SSH-nycklar på CentOS 7

Introduktion

SSH, eller secure shell, är ett krypterat protokoll som används för att administrera och kommunicera med servrar. När du arbetar med en CentOS-server är chansen stor att du tillbringar den mesta tiden i en terminalsession som är ansluten till servern via SSH.

I den här guiden fokuserar vi på att konfigurera SSH-nycklar för en vanilj CentOS 7-installation. SSH-nycklar ger ett enkelt och säkert sätt att logga in på din server och rekommenderas för alla användare.

Steg 1 – Skapa RSA-nyckelparet

Det första steget är att skapa ett nyckelpar på klientmaskinen (vanligtvis din dator):

  • ssh-keygen

Som standard kommer ssh-keygen att skapa ett 2048-bitars RSA-nyckelpar, vilket är tillräckligt säkert för de flesta användningsfall (du kan valfritt passera in flaggan -b 4096 för att skapa en större 4096-bitars nyckel).

När du har angett kommandot bör du se följande prompt:

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

Tryck ENTER för att spara nyckelparet i underkatalogen .ssh/ i din hemkatalog, eller ange en annan sökväg.

Om du tidigare hade genererat ett SSH-nyckelpar kan du se följande prompt:

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

Om du väljer att skriva över nyckeln på disken kommer du inte längre att kunna autentisera dig med den tidigare nyckeln. Var mycket försiktig när du väljer ja, eftersom detta är en destruktiv process som inte kan återställas.

Du bör sedan se följande uppmaning:

Output
Enter passphrase (empty for no passphrase):

Här kan du valfritt ange en säker lösenfras, vilket rekommenderas starkt. En lösenfras lägger till ytterligare ett säkerhetslager för att förhindra att obehöriga användare loggar in. Om du vill veta mer om säkerhet kan du läsa vår handledning Hur du konfigurerar SSH-nyckelbaserad autentisering på en Linux-server.

Du bör sedan se följande utdata:

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 och en privat nyckel som du kan använda för att autentisera dig. Nästa steg är att placera den offentliga nyckeln på din server så att du kan använda SSH-nyckelbaserad autentisering för att logga in.

Steg 2 – Kopiera den offentliga nyckeln till CentOS-servern

Det snabbaste sättet att kopiera den offentliga nyckeln till CentOS-värden är att använda ett verktyg som heter ssh-copy-id. På grund av sin enkelhet rekommenderas denna metod starkt om den är tillgänglig. Om du inte har ssh-copy-id tillgängligt på din klientmaskin kan du använda en av de två alternativa metoderna som tillhandahålls i det här avsnittet (kopiering via lösenordsbaserad SSH eller manuell kopiering av nyckeln).

Kopiering av din offentliga nyckel med hjälp av ssh-copy-id

Verktyget ssh-copy-id ingår som standard i många operativsystem, så du kanske har det tillgängligt på ditt lokala system. För att den här metoden ska fungera måste du redan ha lösenordsbaserad SSH-åtkomst till din server.

För att använda verktyget behöver du bara ange den fjärrvärd som du vill ansluta till och det användarkonto som du har lösenordsbaserad SSH-åtkomst till. Detta är det konto som din offentliga SSH-nyckel kopieras till.

Syntaxen är:

Du kan se följande meddelande:

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

Detta betyder bara att din lokala dator inte känner igen fjärrvärden. Detta händer första gången du ansluter till en ny värd. Skriv ”ja” och tryck på ENTER för att fortsätta.

Nästan kommer verktyget att söka igenom ditt lokala konto efter id_rsa.pub-nyckeln som vi skapade tidigare. När det hittar nyckeln kommer det att uppmana dig att ange lösenordet för fjärranvändarkontot:

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:

Ta in lösenordet (ditt skrivande visas inte av säkerhetsskäl) och tryck på ENTER. Verktyget kommer att ansluta till kontot på fjärrvärden med hjälp av det lösenord du angett. Det kommer sedan att kopiera innehållet i din ~/.ssh/id_rsa.pub-nyckel till en fil i fjärrkontots hemkatalog ~/.ssh som heter authorized_keys.

Du bör se följande utdata:

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.

I det här läget har din id_rsa.pub-nyckel laddats upp till fjärrkontot. Du kan fortsätta till steg 3.

Kopiering av offentlig nyckel med hjälp av SSH

Om du inte har ssh-copy-id tillgängligt, men har lösenordsbaserad SSH-åtkomst till ett konto på servern, kan du ladda upp dina nycklar med hjälp av en konventionell SSH-metod.

Vi kan göra det här genom att använda kommandot cat för att läsa innehållet i den offentliga SSH-nyckeln på vår lokala dator och pipa det via en SSH-anslutning till fjärrservern.

På andra sidan kan vi se till att katalogen ~/.ssh finns och har rätt behörigheter under det konto vi använder.

Vi kan sedan mata ut innehållet som vi rört över till en fil som heter authorized_keys i denna katalog. Vi använder omdirigeringssymbolen >> för att lägga till innehållet i stället för att skriva över det. På så sätt kan vi lägga till nycklar utan att förstöra tidigare tillagda nycklar.

Det fullständiga kommandot ser ut så här:

  • 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 kan se följande meddelande:

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

Detta innebär att din lokala dator inte känner igen fjärrvärden. Detta händer första gången du ansluter till en ny värd. Skriv ”ja” och tryck på ENTER för att fortsätta.

Därefter bör du uppmanas att ange lösenordet för fjärranvändarkontot:

Output
[email protected]'s password:

När du har angett ditt lösenord kopieras innehållet i din id_rsa.pub-nyckel till slutet av authorized_keys-filen för fjärranvändarkontot. Fortsätt till steg 3 om detta lyckades.

Kopiering av offentlig nyckel manuellt

Om du inte har tillgång till lösenordsbaserad SSH-åtkomst till din server måste du slutföra ovanstående process manuellt.

Vi kommer manuellt att lägga till innehållet i din id_rsa.pub-fil till ~/.ssh/authorized_keys-filen på din fjärrmaskin.

För att visa innehållet i din id_rsa.pub-nyckel skriver du detta på din lokala dator:

  • cat ~/.ssh/id_rsa.pub

Du kommer att se nyckelns innehåll, som bör se ut ungefär så här:

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 till din fjärrvärddator med den metod du har tillgänglig.

När du har tillgång till ditt konto på fjärrservern bör du se till att katalogen ~/.ssh finns. Det här kommandot skapar katalogen om det behövs, eller gör ingenting om den redan finns:

  • mkdir -p ~/.ssh

Nu kan du skapa eller ändra filen authorized_keys i den här katalogen. Du kan lägga till innehållet i din id_rsa.pub-fil i slutet av authorized_keys-filen och skapa den vid behov med det här kommandot:

  • echo public_key_string >> ~/.ssh/authorized_keys

I ovanstående kommando ersätter du public_key_string med resultatet från cat ~/.ssh/id_rsa.pub-kommandot som du utförde på ditt lokala system. Det ska börja med ssh-rsa AAAA....

Slutligt ser vi till att katalogen ~/.ssh och filen authorized_keys har rätt behörigheter:

  • chmod -R go= ~/.ssh

Detta tar rekursivt bort alla ”group”- och ”other”-behörigheter för katalogen ~/.ssh/.

Om du använder root-kontot för att ställa in nycklar för ett användarkonto är det också viktigt att ~/.ssh-katalogen tillhör användaren och inte root:

  • chown -R sammy:sammy ~/.ssh

I den här handledningen heter vår användare sammy, men du bör ersätta lämpligt användarnamn i kommandot ovan.

Vi kan nu försöka autentisera oss utan lösenord med vår Ubuntu-server.

Steg 3 – Autentisera dig på din CentOS-server med hjälp av SSH-nycklar

Om du har genomfört ett av förfarandena ovan bör du kunna logga in på fjärrvärddatorn utan fjärrkontots lösenord.

Den grundläggande processen är densamma:

Om det här är första gången du ansluter till den här värddatorn (om du använde den sista metoden ovan) kan du få se något som liknar det här:

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

Detta innebär att din lokala dator inte känner igen fjärrdatorn. Skriv ”yes” och tryck sedan på ENTER för att fortsätta.

Om du inte har angett en lösenfras för din privata nyckel kommer du att loggas in omedelbart. Om du tillhandahöll en lösenfras för den privata nyckeln när du skapade den kommer du att uppmanas att ange lösenfrasen nu. Efter autentiseringen bör en ny shellsession öppnas för dig med det konfigurerade kontot på CentOS-servern.

Om nyckelbaserad autentisering lyckades fortsätter du för att lära dig hur du kan säkra ditt system ytterligare genom att inaktivera lösenordsautentisering.

Steg 4 – Inaktivera lösenordsautentisering på din server

Om du kunde logga in på ditt konto med SSH utan lösenord, har du framgångsrikt konfigurerat SSH-nyckelbaserad autentisering till ditt konto. Din mekanism för lösenordsbaserad autentisering är dock fortfarande aktiv, vilket innebär att din server fortfarande är utsatt för brute-force-attacker.

För att slutföra stegen i det här avsnittet ska du se till att du antingen har SSH-nyckelbaserad autentisering konfigurerad för root-kontot på den här servern, eller helst att du har SSH-nyckelbaserad autentisering konfigurerad för ett konto utan root-kontot på den här servern med sudo-privilegier. Det här steget kommer att låsa lösenordsbaserade inloggningar, så det är viktigt att se till att du fortfarande kan få administrativ åtkomst.

När du har bekräftat att ditt fjärrkonto har administrativa privilegier loggar du in på din fjärrserver med SSH-nycklar, antingen som root eller med ett konto med sudo-privilegier. Öppna sedan SSH-demonens konfigurationsfil:

  • sudo vi /etc/ssh/sshd_config

I filen letar du efter ett direktiv som heter PasswordAuthentication. Detta kan vara utkommenterat. Tryck i för att infoga text, och ta sedan bort kommentaren från raden och sätt värdet till ”no”. Detta kommer att inaktivera din möjlighet att logga in via SSH med kontolösenord:

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

När du är klar med ändringarna trycker du på ESC och sedan :wq för att skriva ändringarna till filen och avsluta. För att faktiskt genomföra dessa ändringar måste vi starta om sshd-tjänsten:

  • sudo systemctl restart sshd.service

Som en försiktighetsåtgärd öppnar du ett nytt terminalfönster och testar att SSH-tjänsten fungerar korrekt innan du stänger den här sessionen:

När du har verifierat din SSH-tjänst kan du tryggt stänga alla aktuella serversessioner.

SSSH-daemon på din CentOS-server svarar nu endast på SSH-nycklar. Lösenordsbaserad autentisering har inaktiverats.

Slutsats

Du bör nu ha SSH-nyckelbaserad autentisering konfigurerad på din server, vilket gör att du kan logga in utan att ange ett kontolösenord.

Om du vill lära dig mer om hur du arbetar med SSH, kan du ta en titt på vår SSH Essentials Guide.

Lämna ett svar

Din e-postadress kommer inte publiceras.