ssh-keygen: SSH-sleutels maken, de publieke sleutel registreren en ssh-copy-id gebruiken
ssh-keygen is de OpenSSH-opdracht die het paar van privésleutel en publieke sleutel voor SSH-verbindingen maakt, en die ook vingerafdrukken controleert, wachtwoordzinnen wijzigt en known_hosts opschoont. Ik maakte op een AlmaLinux 9-server een ed25519- en een rsa-sleutel, controleerde de vingerafdrukken, wijzigde wachtwoordzin en commentaar en testte daarna ssh-copy-id als dry-run: het enige dat naar de server gaat, is de ene regel met de publieke sleutel uit het .pub-bestand.
De accountnamen en paden van de sleutelbestanden in de uitvoer hieronder zijn voorbeeldwaarden, en de vingerafdrukken, publieke sleutels en randomart komen van sleutels die voor dit artikel zijn gemaakt en daarna verwijderd. De opdracht die een publieke sleutel echt op een server registreert, staat er wel, maar is niet uitgevoerd.
1️⃣ Sleutel maken met ssh-keygen: -t ed25519 en commentaar met -C
Een sleutel maak je in de vorm ssh-keygen -t type -C commentaar. -t is het sleuteltype en -C een commentaar aan het eind van de publieke sleutel, waarin je een e-mailadres of het doel zet. Hieronder staat de volledige uitvoer met het bestand vastgelegd via -f en twee keer Enter bij de vragen naar de wachtwoordzin.
ssh-keygen -t ed25519 -C "user@example.com" -f ~/.ssh/id_ed25519Generating public/private ed25519 key pair.
Enter passphrase for "/home/user/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com
The key's randomart image is:
+--[ED25519 256]--+
| |
| . |
| o o |
| = o . |
| = Soo . |
| = *+*.. . |
| o.B.o++ . |
| .=o*Eo.+ |
| o+=@OO= |
+----[SHA256]-----+Druk je bij de vraag naar de wachtwoordzin alleen op Enter, dan krijg je een sleutel zonder wachtwoordzin. Laat je -f weg, dan vraagt eerst een regel waar het bestand moet worden opgeslagen. Tussen haakjes staat het standaardpad .ssh/id_ed25519 in je thuismap, en ook hier slaat alleen Enter de sleutel daar op.
De randomart aan het eind van de uitvoer is de vingerafdruk als plaatje. Bij het maken van de sleutel en bij de nieuwe controle met -lv verscheen hetzelfde plaatje.
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub-rw------- 1 user user 411 Oct 29 08:22 /home/user/.ssh/id_ed25519
-rw-r--r-- 1 user user 98 Oct 29 08:22 /home/user/.ssh/id_ed25519.pubDe privésleutel kreeg rechten 600 en de publieke sleutel 644. De privésleutel houd je alleen op je eigen computer en stuur je nergens heen.
cat ~/.ssh/id_ed25519.pubssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.comDe publieke sleutel is één regel met het sleuteltype, de sleutelwaarde en het commentaar, gescheiden door spaties. Precies die regel komt in authorized_keys op de server waarmee je verbinding maakt. De rol van elk bestand in de map staat samengevat in een boom.
2️⃣ Opties van ssh-keygen: -f, -N, -b, -q
Vragen beantwoorden is handig als je met de hand typt, maar in een script moeten de vragen helemaal weg. Leg je het bestand vast met -f en de wachtwoordzin met -N, dan wordt de sleutel meteen gemaakt zonder vragen.
ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N "" -C "deploy@example.com"Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/deploy_key
Your public key has been saved in /home/user/.ssh/deploy_key.pub
The key fingerprint is:
SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com
The key's randomart image is:
+--[ED25519 256]--+
| + |
| o + |
| + . |
| . + o |
| . o S ++o |
| . + + B+ |
| .oo * + .=+ |
| E+o* Boo=++. |
| .=.=oo=o++. |
+----[SHA256]-----+Met lege aanhalingstekens achter -N krijg je een sleutel zonder wachtwoordzin, en opslaglocatie en vingerafdruk verschenen in één keer, zonder enige vraag.
ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N ""Generating public/private ed25519 key pair.
/home/user/.ssh/deploy_key already exists.
Overwrite (y/n)?Voer je de opdracht opnieuw uit met dezelfde naam, dan vraagt hij na already exists of hij moet overschrijven. Met n bleef alles ongewijzigd en eindigde de opdracht met exitcode 1. Om een sleutel die in gebruik is niet per ongeluk te overschrijven, maak je nieuwe sleutels onder een andere naam.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "user@example.com"Generating public/private rsa key pair.
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:f+uwCSQjMka1BEHzXADwIWbrlbVRiP6Z4tjnwNwPVAA user@example.com
The key's randomart image is:
+---[RSA 4096]----+
|o=BE*=+. |
|oo.Oo++ |
| .+o+. . |
|.... . |
| .+ o.= S |
| .o+o= + . |
| ++.o . o . |
| . o..o . = . |
| o. . o.o |
+----[SHA256]-----+Bij rsa bepaalt -b de lengte. Volgens de handleiding is de standaard 3072 bits; hierboven werd de sleutel met 4096 bits gemaakt en stond RSA 4096 in de kop van de randomart. Volgens de handleiding heeft ed25519 een vaste lengte en wordt -b daar genegeerd.
ssh-keygen -f ~/.ssh/default_key -N "" -C "user@example.com"Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/default_key
Your public key has been saved in /home/user/.ssh/default_key.pub
The key fingerprint is:
SHA256:mwy02fpKxjxEVvLC2EUJeaMIiNFOVS0GwWVjN9v0j4c user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|o+ o+=O=*.. |
|o + .*+B== . |
| o ..oB+o.. . |
| . .+.= + |
| = S E o |
| + + o . |
| B + |
| o o |
| ... |
+----[SHA256]-----+Zonder -t werd een ed25519-sleutel gemaakt.
ssh-keygen -q -t ed25519 -f ~/.ssh/backup_key -N "" -C "backup@example.com"; echo rc=$?rc=0Met -q wordt alles verborgen, ook de vingerafdruk en de randomart, en blijft alleen de exitcode over. Handig als een script sleutels voor meerdere servers maakt.
📌 Belangrijkste opties: resultaten uit dit artikel
| Optie | Taak | Resultaat in dit artikel | |
|---|---|---|---|
| -t type | Type sleutel dat wordt gemaakt | De eerste regel van de uitvoer toont het type, zoals ed25519 of rsa; zonder opgave ed25519 | |
| -C commentaar | Commentaar aan het eind van de publieke sleutel | user@example.com aan het eind van de publieke sleutel, bekeken met cat | |
| -f bestand | Pad van het sleutelbestand | Een regel dat er is opgeslagen in /home/user/.ssh/deploy_key; opnieuw met dezelfde naam already exists en Overwrite (y/n)? | |
| -N wachtwoordzin | Nieuwe wachtwoordzin (passphrase); lege aanhalingstekens betekenen geen wachtwoordzin | Opslaglocatie en vingerafdruk in één keer, zonder vraag naar de wachtwoordzin | |
| -b bits | Sleutellengte | Met 4096 bij rsa staat RSA 4096 in de kop van de randomart | |
| -q | Verbergt alle uitvoer | Alleen de regel rc=0 van echo blijft over | |
| -l | Toont de vingerafdruk van een sleutelbestand | Dezelfde SHA256-vingerafdruk uit publieke en privésleutel; bij authorized_keys één regel per sleutel | |
| -E hash | Bepaalt het hashtype van de vingerafdruk | Met -E md5 een vingerafdruk die begint met MD5:00:7b:02:5e | |
| -v | Samen met -l ook de randomart | Dezelfde randomart als bij het maken van de sleutel | |
| -y | Haalt de publieke sleutel uit de privésleutel en toont die | Eén regel publieke sleutel, teken voor teken gelijk aan het .pub-bestand | |
| -p | Wijzigt de wachtwoordzin van een privésleutel | Een regel dat er met de nieuwe wachtwoordzin is opgeslagen; de privésleutel groeit van 411 naar 464 bytes | |
| -P wachtwoordzin | Oude wachtwoordzin (de huidige) | Met de juiste wachtwoordzin de publieke sleutel, met een verkeerde incorrect passphrase supplied to decrypt private key | |
| -c | Wijzigt het commentaar; het nieuwe geef je met -C | Old comment: user@example.com en Comment 'user@laptop' applied | |
| -F host | Zoekt de regel van die host in known_hosts | # Host 192.0.2.10 found: line 1 en die regel | |
| -R host | Verwijdert de regel van die host uit known_hosts | known_hosts updated en het oorspronkelijke bestand known_hosts.old; een onbekende host geeft not found | |
| -H | Hasht hostnamen en adressen in known_hosts | Regels die met |1| beginnen, plus een WARNING dat het .old-bestand de ongehashte regels bevat |
📎 Andere opties: volgens de officiële handleiding
| Optie | Taak | |
|---|---|---|
| -a rondes | Aantal KDF-rondes (bcrypt_pbkdf) bij het opslaan van de privésleutel; meer rondes maken de controle van de wachtwoordzin trager en brute force lastiger; standaard 16 | |
| -A | Maakt ontbrekende hostsleutels voor elk standaardtype (rsa, ecdsa, ed25519) op de standaardpaden | |
| -B | Toont de bubblebabble-digest van een sleutelbestand | |
| -e | Zet een OpenSSH-sleutel om naar de -m-indeling (standaard RFC4716) en toont die, voor andere SSH-programma's | |
| -i | Zet een sleutel zonder wachtwoordzin in de -m-indeling (standaard RFC4716) om naar de OpenSSH-indeling en toont die | |
| -m indeling | Bepaalt de sleutelindeling (RFC4716, PKCS8, PEM); met -p worden privésleutels tussen de OpenSSH- en PEM-indeling omgezet | |
| -r host | Toont uit de publieke sleutel het SSHFP-DNS-record voor die hostnaam | |
| -s CA-sleutel | Ondertekent een publieke sleutel met een CA-sleutel en maakt een certificaat | |
| -L | Toont de inhoud van een certificaat | |
| -K | Downloadt de resident-sleutels op een FIDO-authenticator naar de huidige map | |
| -Y sign | Ondertekent een bestand met een SSH-sleutel; de handtekening wordt opgeslagen met .sig achter de bestandsnaam, en de naamruimte geef je met -n |
3️⃣ ssh-keygen -l voor de vingerafdruk en -y om de publieke sleutel op te halen
Met meerdere sleutelbestanden is aan de bestandsnaam alleen moeilijk te zien welke publieke sleutel bij welke privésleutel hoort. Omdat de vingerafdruk voor privé- en publieke sleutel gelijk is, bevestig je het paar door met -l de vingerafdrukken van beide bestanden te vergelijken.
ssh-keygen -l -f ~/.ssh/id_ed25519.pub256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)ssh-keygen -l -f ~/.ssh/id_ed25519256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)Het publieke en het privésleutelbestand gaven dezelfde SHA256-vingerafdruk. De 256 vooraan is de sleutellengte en de haakjes aan het eind geven het sleuteltype.
ssh-keygen -l -E md5 -f ~/.ssh/id_ed25519.pub256 MD5:00:7b:02:5e:b8:ba:85:0c:32:d7:15:7e:72:45:f7:bc user@example.com (ED25519)Met -E md5 schakel je over op de oudere MD5-vingerafdruk. Dat gebruik je om te vergelijken als een oude server of een beheerpaneel MD5-vingerafdrukken toont.
ssh-keygen -lv -f ~/.ssh/id_ed25519.pub256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)
+--[ED25519 256]--+
| |
| . |
| o o |
| = o . |
| = Soo . |
| = *+*.. . |
| o.B.o++ . |
| .=o*Eo.+ |
| o+=@OO= |
+----[SHA256]-----+Met -v erbij verschijnt de randomart opnieuw. Het was hetzelfde plaatje als bij het maken van de sleutel.
ssh-keygen -l -f ~/.ssh/authorized_keys256 SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com (ED25519)Geef je een bestand met meerdere regels publieke sleutels, zoals authorized_keys, dan krijg je per sleutel één regel vingerafdruk. Zo controleer je welke sleutels op een server geregistreerd staan.
ssh-keygen -y -f ~/.ssh/id_ed25519ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com-y haalt de publieke sleutel opnieuw uit de privésleutel. Heb je het .pub-bestand verwijderd of alleen de privésleutel naar een andere computer gezet, dan sla je deze uitvoer gewoon op in een bestand. De uitvoer was teken voor teken gelijk aan het oorspronkelijke .pub-bestand.
4️⃣ ssh-keygen -p om de wachtwoordzin te wijzigen en -c om het commentaar te wijzigen
Met een wachtwoordzin op de privésleutel is het bestand zonder die wachtwoordzin onbruikbaar, ook als het uitlekt. Daar staat tegenover dat je de wachtwoordzin bij elke verbinding moet typen; hij past dus bij sleutels die mensen met de hand gebruiken, niet bij sleutels voor scripts die vanzelf draaien, zoals cronjobs.
ssh-keygen -p -f ~/.ssh/id_ed25519 -P "" -N "example-pass"Key has comment 'user@example.com'
Your identification has been saved with the new passphrase.-P is de oude wachtwoordzin en -N de nieuwe. De sleutel had geen wachtwoordzin, dus kreeg -P lege aanhalingstekens, en twee regels meldden dat er opnieuw met de nieuwe wachtwoordzin is opgeslagen. Volgens de handleiding vraagt -p zonder opties om de beurt naar de oude en de nieuwe wachtwoordzin.
ls -l ~/.ssh/id_ed25519-rw------- 1 user user 464 Oct 29 08:22 /home/user/.ssh/id_ed25519Na het instellen van de wachtwoordzin groeide het privésleutelbestand van 411 naar 464 bytes.
ssh-keygen -y -f ~/.ssh/id_ed25519 -P "example-pass"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.comssh-keygen -y -f ~/.ssh/id_ed25519 -P "wrongpass"Load key "/home/user/.ssh/id_ed25519": incorrect passphrase supplied to decrypt private keyBij een sleutel met wachtwoordzin heeft ook -y de wachtwoordzin nodig via -P. Met de juiste wachtwoordzin kwam dezelfde publieke sleutel als eerder, met een verkeerde eindigde het met de fout incorrect passphrase. Volgens de handleiding is een verloren wachtwoordzin niet te herstellen; vergeet je hem, maak dan een nieuwe sleutel en registreer de publieke sleutel opnieuw.
ssh-keygen -c -C "user@laptop" -f ~/.ssh/id_ed25519 -P "example-pass"Old comment: user@example.com
Comment 'user@laptop' appliedcat ~/.ssh/id_ed25519.pubssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@laptop-c wijzigt het commentaar. Oud en nieuw commentaar verschijnen elk op een regel, en ook het commentaar aan het eind van het publieke sleutelbestand werd user@laptop. Het commentaar is alleen een label om sleutels uit elkaar te houden; de sleutelwaarde zelf bleef gelijk.
ssh-keygen -p -f ~/.ssh/id_ed25519 -P "example-pass" -N ""Key has comment 'user@laptop'
Your identification has been saved with the new passphrase.Om de wachtwoordzin te verwijderen, geef je -N lege aanhalingstekens. Dezelfde twee regels verschijnen, en daarna werkte -y weer zonder -P.
5️⃣ ssh-keygen -R: hostsleutels uit known_hosts verwijderen
In known_hosts verzamelen zich de hostsleutels van servers waarmee je verbonden was, één per regel. Wordt een server opnieuw geïnstalleerd en verandert de hostsleutel, dan weigert ssh de verbinding omdat de sleutel afwijkt van de opgeslagen sleutel, en de optie die de oude regel verwijdert, is -R. De known_hosts hieronder is een bestand van drie regels met voorbeeldadressen, opgegeven met -f.
cat ~/.ssh/known_hosts192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk
server2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRWElke regel bevat hostnaam of adres, sleuteltype en sleutelwaarde, in die volgorde. De tweede regel met een komma bevat naam en adres van dezelfde server, en de vierkante haken met dubbele punt in de derde regel staan voor een andere poort dan 22.
ssh-keygen -F 192.0.2.10 -f ~/.ssh/known_hosts# Host 192.0.2.10 found: line 1
192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk-F toont de regel van die host samen met het regelnummer. Bij een onbekende host verscheen niets en eindigde de opdracht met exitcode 1.
ssh-keygen -R 192.0.2.10 -f ~/.ssh/known_hosts# Host 192.0.2.10 found: line 1
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.oldcat ~/.ssh/known_hostsserver2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRW-R verwijdert de regel van die host en bewaart het oorspronkelijke bestand als known_hosts.old. Na het verwijderen bleven er nog twee regels over.
ssh-keygen -R 192.0.2.99 -f ~/.ssh/known_hostsHost 192.0.2.99 not found in /home/user/.ssh/known_hostsssh-keygen -R "[192.0.2.30]:2222" -f ~/.ssh/known_hosts# Host [192.0.2.30]:2222 found: line 2
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.oldBij een onbekende host verscheen alleen één regel not found. Voor een server op een andere poort moet je de vierkante haken en de poort precies zo opgeven als in known_hosts.
ssh-keygen -H -f ~/.ssh/known_hostsWARNING: /home/user/.ssh/known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.oldcat ~/.ssh/known_hosts|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
|1|AG9QJQvGaQmVsEusSdND1lM9cKI=|Ue0a9suJIzN0yxoJgV7ClLBgSYw= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR-H hasht hostnamen en adressen. Deze optie voorkomt dat een uitgelekt bestand verraadt met welke servers je verbonden was; naam en adres die met een komma verbonden waren, werden in twee gehashte regels gesplitst. Er verscheen ook een waarschuwing dat het .old-bestand nog de ongehashte inhoud bevat.
ssh-keygen -F server2.example.com -f ~/.ssh/known_hosts# Host server2.example.com found: line 1
|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyROok in het gehashte bestand vond -F de regel via de naam.
6️⃣ ssh-copy-id: publieke sleutel registreren en authorized_keys
Een sleutel maken is niet genoeg: zolang de server de publieke sleutel niet kent, log je nog steeds met een wachtwoord in. De plek waar de server de publieke sleutel leert kennen, is ~/.ssh/authorized_keys van het account waarop je inlogt, en ssh-copy-id is de opdracht die de .pub-regel in dat bestand zet. De privésleutel blijft op je computer en alleen de regel met de publieke sleutel gaat over. Klik in het diagram hieronder op de stapknoppen om te zien waar de twee bestanden terechtkomen.
ssh-copy-id -n -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.pub"
/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: ERROR: ssh: connect to host 192.0.2.10 port 22: Connection timed out-n is een dry-run, dus er wordt niets naar de server geschreven. Toch probeert ssh-copy-id eerst met die sleutel in te loggen om al geregistreerde sleutels eruit te filteren, en omdat 192.0.2.10 een documentatieadres is, kwam er geen verbinding tot stand en eindigde het met timed out. Opties achter -o gaan ongewijzigd naar ssh.
ssh-copy-id -n -f -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.pub"
=-=-=-=-=-=-=-=
Would have added the following key(s):
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.com
=-=-=-=-=-=-=-=-f is de forceermodus die deze controle overslaat. Samen met -n verscheen onder Would have added de regel met de publieke sleutel die op de server zou komen. Het is dezelfde regel als de inhoud van het .pub-bestand.
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.0.2.10De echte registratie doe je met deze opdracht zonder -n. Volgens het ssh-copy-id-script en de handleiding vraagt hij één keer om het wachtwoord van het account, voegt de publieke sleutel toe aan het eind van ~/.ssh/authorized_keys op de server en toont daarna Number of key(s) added: 1. Ontbreken bestand en map, dan maakt hij ze aan, en staat dezelfde sleutel er al, dan slaat hij die over.
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@192.0.2.10Is de poort niet 22, geef die dan mee met -p.
Waar ssh-copy-id ontbreekt, voeg je de regel met de publieke sleutel zelf toe aan authorized_keys op de server. Log met je wachtwoord in op de server en volg de stappen hieronder. De uitvoer is gecontroleerd door het .pub-bestand op dezelfde server toe te voegen; bij een andere server kopieer je de regel uit het .pub-bestand en voeg je die toe met echo.
mkdir -p ~/.sshchmod 700 ~/.sshBestaat de map .ssh niet, maak die dan aan en zet de rechten op 700.
cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keyscat ~/.ssh/authorized_keysssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.comls -l ~/.ssh/authorized_keys-rw------- 1 user user 100 Oct 29 08:22 /home/user/.ssh/authorized_keysDe regel met de publieke sleutel staat nu in authorized_keys, met rechten 600. Volgens het onderdeel StrictModes in de handleiding van sshd_config controleert sshd met de standaardinstellingen eerst de rechten van de gebruikersbestanden en weigert het de login als iedereen erin kan schrijven.
ssh -i ~/.ssh/id_ed25519 user@192.0.2.10Na de registratie verbind je met de privésleutel. Heeft de sleutel een standaardnaam zoals id_ed25519, dan vindt ssh hem zelf; heeft hij een andere naam zoals deploy_key, geef het bestand dan op met de ssh-optie -i.
🔲 Simulator voor de opdracht ssh-keygen
In de simulator hieronder typ je zelf ssh-keygen om sleutels te maken, vingerafdrukken te controleren, de wachtwoordzin te wijzigen, known_hosts op te schonen en ssh-copy-id te proberen. Vingerafdrukken en publieke sleutels zijn dezelfde voorbeeldwaarden als in het artikel, en ssh-copy-id doet alleen alsof het op een virtuele server registreert.
🔢 FAQ & aanbevolen content
Windows · Publieke sleutel
Een publieke sleutel maken in Xshell
Stappen om met de sleutelwizard van de Windows-SSH-client Xshell een publieke sleutel te maken en die op een server te registreren.
SSH · Serverinstellingen
SSH-configuratie: functies en instellingen van het bestand sshd_config
Artikel over het instellen van onderdelen zoals de poort, root-login en authenticatie met publieke sleutels in sshd_config op de ontvangende server.
Linux · Begrippen
SSH in Linux: definitie en basisinstellingen
Wat SSH is en hoe het verschilt van Telnet, en hoe je sshd op een server start en de basisinstellingen controleert.
ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.