Sådan konfigureres SSH-nøgler på Ubuntu 16.04

introduktion

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

i denne vejledning fokuserer vi på Opsætning af SSH-nøgler til en vanilla Ubuntu 16.04-installation. SSH-nøgler giver en nem, sikker måde at logge ind på din server og anbefales til alle brugere.

Trin 1 — Opret RSA-Nøgleparet

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

  • ssh-keygen

som standardssh-keygen opretter et 2048-bit RSA-nøglepar, som er sikkert nok til de fleste brugssager (du kan eventuelt passere i-b 4096 flag for at oprette en større 4096-bit nøgle).

Når du har indtastet kommandoen, skal du se følgende output:

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

tryk påENTERfor at gemme nøgleparret i.ssh/ undermappe i din hjemmemappe, eller angiv en alternativ sti.

Hvis du tidligere havde genereret et SSH-nøglepar, kan du muligvis 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 Godkende ved hjælp af den forrige nøgle. Vær meget forsigtig, når du vælger ja, da dette er en destruktiv proces, der ikke kan vendes.

Du skal derefter se følgende prompt:

Output
Enter passphrase (empty for no passphrase):

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

Du skal 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 username@remote_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 godkendelse til at logge ind.

Trin 2 — Kopier den offentlige nøgle til Ubuntu Server

den hurtigste måde at kopiere din offentlige nøgle til Ubuntu-værten er at bruge et værktøj kaldetssh-copy-id. På grund af sin enkelhed anbefales denne metode stærkt, hvis den er tilgængelig. Hvis du ikke har ssh-copy-id tilgængelig 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 offentlig nøgle ved hjælp af ssh-copy-id

ssh-copy-id værktøjet er som standard inkluderet i mange operativsystemer, så du kan have det tilgængeligt på dit lokale system. For at denne metode skal fungere, skal du allerede have adgangskodebaseret SSH-adgang til din server.

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

syntaksen er:

  • ssh-copy-id username@remote_host

Du kan se 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, at din lokale computer ikke genkender fjernværten. Dette sker første gang du opretter forbindelse til en ny vært. Skriv “ja”, og tryk på ENTER for at fortsætte.

dernæst scanner værktøjet din lokale konto for id_rsa.pub – tasten, som vi oprettede tidligere. Når den finder nøglen, vil den 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:

Indtast adgangskoden (din indtastning vises ikke af sikkerhedsmæssige årsager) og tryk påENTER. Værktøjet opretter forbindelse til kontoen på den eksterne vært 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 fjernkontoens hjem~/.ssh mappe kaldetauthorized_keys.

Du skal 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 dinid_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 harssh-copy-id tilgængelig, men du har 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 rør det gennem en SSH-forbindelse til fjernserveren.

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

Vi kan derefter udsende det indhold, vi pipede over i en fil kaldet authorized_keys i denne mappe. Vi bruger >> omdirigeringssymbolet til at tilføje indholdet i stedet for at overskrive det. Dette vil lade os tilføje nøgler uden at ødelægge tidligere tilføjede nøgler.

den fulde kommando ser sådan ud:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Du kan se 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, at din lokale computer ikke genkender fjernværten. Dette sker første gang du opretter forbindelse til en ny vært. Skriv “ja”, og tryk på ENTER for at fortsætte.

bagefter 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 dinid_rsa.pub – nøgle til slutningen afauthorized_keys fil for fjernbrugerens konto. Fortsæt til Trin 3, Hvis dette var vellykket.

kopiering af offentlig nøgle manuelt

Hvis du ikke har adgangskodebaseret SSH-adgang til din server tilgængelig, skal du gennemføre ovenstående proces manuelt.

Vi tilføjer manuelt indholdet af dinid_rsa.pub fil til~/.ssh/authorized_keys fil på din fjernmaskine.

for at vise indholdet af dinid_rsa.pub nøgle, Skriv dette i din lokale computer:

  • cat ~/.ssh/id_rsa.pub

du vil se nøglens indhold, som skal se 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== demo@test

få adgang 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 ~/.ssh – Mappen findes. Denne kommando opretter mappen om nødvendigt eller gør intet, hvis den allerede findes:

  • mkdir -p ~/.ssh

nu kan du oprette eller ændre authorized_keys fil i denne mappe. Du kan tilføje indholdet af din id_rsa.pub fil til slutningen af authorized_keys fil, 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 udgangen fra kommandoen cat ~/.ssh/id_rsa.pub, som du udførte på dit lokale system. Det skal starte med ssh-rsa AAAA....

endelig vil vi sikre, at~/.ssh directory ogauthorized_keys filen har de relevante tilladelser sæt:

  • chmod -R go= ~/.ssh

dette fjerner rekursivt alle “gruppe” og “andre” tilladelser til~/.ssh/ mappe.

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 til root:

  • chown -R sammy:sammy ~/.ssh

i denne vejledning hedder vores bruger Sammy, men du skal erstatte det relevante brugernavn i ovenstående kommando.

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

Trin 3 — Godkend til Ubuntu Server ved hjælp af SSH-nøgler

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

den grundlæggende proces er den samme:

  • ssh username@remote_host

Hvis dette er din første gang, du opretter forbindelse til denne vært (hvis du brugte 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 “ja”, og tryk derefter på ENTER for at fortsætte.

Hvis du ikke leverede en adgangskode til din private nøgle, bliver du logget ind med det samme. Hvis du leverede en adgangskode til den private nøgle, da du oprettede nøglen, bliver du bedt om at indtaste den nu (Bemærk, at dine tastetryk ikke vises i terminalsessionen for sikkerhed). Efter godkendelse skal en ny shell-session åbnes for dig med den konfigurerede konto på Ubuntu-serveren.

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

Trin 4 — Deaktiver adgangskodegodkendelse på din Server

Hvis du var i stand til at logge ind på din konto ved hjælp af SSH uden en adgangskode, har du konfigureret SSH-key-baseret godkendelse til din konto. Din adgangskodebaserede godkendelsesmekanisme er dog stadig aktiv, hvilket betyder, at din server stadig udsættes for brute-force-angreb.

før du udfører trinnene i dette afsnit, skal du sørge for, at du enten har SSH-key-baseret godkendelse konfigureret til root-kontoen på denne server, eller helst at du har SSH-key-baseret godkendelse konfigureret til en ikke-root-konto på denne server med sudo privilegier. Dette trin låser adgangskodebaserede logins, så det er afgørende at sikre, at du stadig kan 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 nano /etc/ssh/sshd_config

inde i filen skal du søge efter et direktiv kaldetPasswordAuthentication. Dette kan kommenteres. Frigør linjen og indstil værdien til “nej”. Dette deaktiverer din evne til at logge ind via SSH ved hjælp af kontoadgangskoder:

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

Gem og luk filen, når du er færdig med at trykke på CTRLX, derefter Y for at bekræfte at gemme filen, og endelig ENTER for at afslutte Nano. For faktisk at implementere disse ændringer skal vi genstarte sshd service:

  • sudo systemctl restart ssh

som en forholdsregel skal du åbne et nyt terminalvindue og teste, at SSH-tjenesten fungerer korrekt, inden du lukker denne session:

  • ssh username@remote_host

Når du har bekræftet din SSH-tjeneste, kan du sikkert lukke alle aktuelle serversessioner.

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

konklusion

Du skal nu have SSH-key-baseret godkendelse konfigureret på din server, så du kan logge ind uden at angive en kontoadgangskode.

Hvis du gerne vil vide mere om at arbejde med SSH, kan du tage et kig på vores SSH Essentials Guide.



Skriv et svar

Din e-mailadresse vil ikke blive publiceret.