Nøgletyper
Nøglegenerering
Denne vejledning viser dig, hvordan du genererer og sikrer SSH-nøgler på macOS Sierra (10.12) og macOS High Sierra (10.13). SSH-nøgler giver dig mulighed for at logge ind på din server uden en adgangskode. De øger både bekvemmeligheden og sikkerheden ved at være væsentligt mere modstandsdygtige over for brute-force-angreb.
SSH (Secure Shell) er en protokol, der oftest bruges til fjernstyring og til filoverførsel, ofte betegnet som sFTP (Secure File Transfer Protocol). Når du tilgår en fjernserver såsom en Vultr VPS, anbefales det at bruge SSH med PKE (Public Key Exchange), som bruger et nøglepar, hvor den offentlige nøgle leveres til serveren og den private nøgle er gemt på din maskine.
SSH-nøgler kan automatisk tilføjes til servere under installationsprocessen ved at tilføje dine offentlige nøgler i Vultr-kontrolpanelet. Du kan administrere dine SSH-nøgler på denne side . Det er vigtigt at huske, at disse kun er dine offentlige nøgler (normalt betegnet med .pub
), du bør aldrig afsløre dine private nøgler.
Nøgletyper
Der er flere forskellige nøgletyper, der kan vælges. Brug -t
argumentet efter generation, såsom ssh-keygen -t ed25519
. ED25519-nøgletypen, som bruger en elliptisk kurvesignatur, er mere sikker og mere effektiv end DSA eller ECDSA. De fleste moderne SSH-software (såsom OpenSSH siden version 6.5) understøtter nøgletypen ED25519, men du kan stadig finde software, der er inkompatibel, og derfor er standardnøgletypen stadig RSA.
Standardnøgletypen er 2048-bit RSA, som giver god sikkerhed og kompatibilitet. For højere sikkerhed kan du vælge en større nøglestørrelse ved at bruge -b
argumentet ved generering, såsom ssh-keygen -b 4096
at oprette et 4096-bit RSA-nøglepar.
Nøglegenerering
For at generere en SSH-nøgle skal du åbne Terminal.app
i "Applikationer > Hjælpeprogrammer > Terminal".
For at oprette et 4096-bit RSA nøglepar skal du indtaste:
ssh-keygen -b 4096
Så vil du se:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa):
Et tryk på Enter/Return vil gemme dit nye nøglepar på denne standardplacering, hvilket anbefales. Du vil derefter have mulighed for at oprette en adgangssætning, som vil kryptere nøglen, så den ikke kan bruges uden autorisation. Det anbefales også at bruge en adgangssætning.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:0irBXp+xKwT5e0ZFklbEVkzxu0Bzv9PmvstFD5w6zlQ [email protected]
The key's randomart image is:
+---[RSA 4096]----+
| =o++. |
| + + .. |
| . . + o o |
| .o . .. + + |
| ooo S. . E o|
| . oo+.+ + ++|
| o..o+ + .o=|
| .o o. + ..oo|
| +. o ==|
+----[SHA256]-----+
På dette tidspunkt er dit nøglepar blevet oprettet og gemt i ~/.ssh/id_rsa
. For at gøre nøglen tilgængelig for systemet og gemme adgangssætningen i systemets nøglering, skal vi udføre flere yderligere trin. Bemærk, at dette kun er nødvendigt, hvis du helst ikke vil blive bedt om nøgleadgangssætningen, hver gang den bruges.
Tilføj nyt nøglepar til SSH-agent
Indtast ssh-add -K ~/.ssh/id_rsa
. Du vil derefter blive bedt om adgangssætningen, og du vil se følgende:
Identity added: id_rsa ([email protected])
Hvis du gerne vil bruge denne SSH-nøgle til at logge på en server, der allerede er oprettet, kan du bruge ssh-copy-id
værktøjet til at gemme den offentlige nøgle på den server, du gerne vil have adgang til.
Tilføj ny nøgle til fjernserveren
Bruger ssh-copy-id
:
# Substitute your server IP
ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Konsollen vil anmode om din login-adgangskode, da fjernserveren endnu ikke er klar over din nøgle. Du vil se følgende:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Du kan nu forsøge at logge ind på fjernserveren med, ssh [email protected]
og du bør være forbundet uden en adgangskodeprompt.