Tutoriel Linux

SSH-sleutel op Ubuntu: genereer deze correct voordat u wachtwoorden uitschakelt.

Débutant5 min de lecture

Als je een Ubuntu-server via SSH beheert, moet de publieke sleutel gereed zijn voordat je wachtwoordverificatie uitvoert. Dit is een punt dat ik te vaak verkeerd zie: we beveiligen de beveiliging. sshdWe herstarten de service en ontdekken dan dat de sleutel nooit goed is getest.

In deze handleiding beginnen we met een sleutel. ed25519We installeren de publieke sleutel op de server, openen een tweede sessie om deze te testen en schakelen pas daarna de wachtwoorden uit. Het duurt niet langer en voorkomt dat je jezelf buitensluit.

Tux houdt een SSH-sleutel vast voor een beveiligde Ubuntu-server.
Voordat wachtwoordverificatie kan worden uitgeschakeld, moet een SSH-sleutel worden gegenereerd, gekopieerd en getest.

Maak een SSH-sleutel ed25519 aan op uw computer.

Genereer op uw lokale computer een ed25519-sleutel. Dit is het formaat dat ik tegenwoordig zou kiezen voor standaard SSH-beheer.

ssh-keygen -t ed25519 -a 100 -C "admin@post"

De opdracht vraagt ​​waar u de sleutel wilt opslaan. Als u nog geen aparte sleutel hebt, kunt u het voorgestelde pad behouden:

~/.ssh/id_ed25519

Voeg een wachtwoordzin toe. Op een laptop of computer die het kantoor verlaat, zou ik een privésleutel niet onbeveiligd laten. De wachtwoordzin beschermt de sleutel als het bestand wordt gekopieerd of als de computer wordt gehackt.

Controleer vervolgens of beide bestanden bestaan:

ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub

Het bestand zonder extensie .pub Dit is de privésleutel. Deze mag niet naar de server worden verzonden, in een ticket worden gekopieerd of worden gedeeld. Het bestand .pub Dit is de publieke sleutel, degene die je op Ubuntu installeert.

Installeer de publieke sleutel op Ubuntu

Als je nog steeds toegang hebt via een wachtwoord, is de eenvoudigste methode: ssh-kopieer-id :

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

Vervangen gebruiker via het doel-SSH-account, en server via IP-adres of naam IN. De opdracht voegt uw publieke sleutel toe. ~/.ssh/authorized_keys serverkant.

Als ssh-kopieer-id Als deze optie niet beschikbaar is, kunt u dit handmatig doen vanuit een bestaande SSH-sessie:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Plak één regel: de volledige inhoud van uw bestand id_ed25519.pubPlak de privésleutel nooit in een bestand. Als je het niet zeker weet, begint het openbare bestand meestal met… ssh-ed25519.

Test het in een tweede sessie voordat je de oude afsluit.

Sluit uw huidige SSH-sessie niet af. Open een tweede terminal en test de verbinding met de sleutel:

ssh -i ~/.ssh/id_ed25519 user@server

Als je zonder accountwachtwoord toegang krijgt tot de server, werkt de sleutel. Als er bij de verbinding nog steeds om het gebruikerswachtwoord wordt gevraagd, controleer dan eerst de machtigingen:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

Controleer op Ubuntu ook de SSH-logboeken als de sleutel wordt geweigerd:

sudo journalctl -u ssh -n 80 --no-pager

Een onjuiste mapeigenaar, een sleutel die over meerdere regels is geplakt of een ander doelaccount zijn allemaal voldoende om de authenticatie te blokkeren. Wijzig de SSH-configuratie niet voordat deze stap is voltooid.

Bereid sshd voor voordat u wachtwoorden uitschakelt.

Maak een back-up van het hoofdbestand voordat u de configuratie wijzigt:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Controleer vervolgens of er bestanden aanwezig zijn in /etc/ssh/sshd_config.d/ Authenticatie via sleutel of wachtwoord is al gedefinieerd:

sudo grep -R "^PubkeyAuthentication|^PasswordAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null

Op Ubuntu geef ik er de voorkeur aan om een ​​apart bestand aan te maken in plaats van tien regels midden in het hoofdbestand te wijzigen:

sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf

Toevoegen:

PubkeyAuthentication ja
Wachtwoord Authenticatienr

Voordat je SSH opnieuw start, controleer je de syntax. Dit is essentieel op een externe server.

sudo /usr/sbin/sshd -t

Als de opdracht geen resultaat oplevert, is de syntaxis correct. Als er een foutmelding verschijnt, corrigeer deze dan voordat u de pagina opnieuw laadt.

Herlaad SSH zonder uw toegang te verbreken

Nadat de syntaxis is gevalideerd, laadt u de service opnieuw:

sudo systemctl reload ssh
sudo systemctl status ssh --no-pager

Houd de eerste sessie open. Test de sleutelgebaseerde verbinding opnieuw in een tweede terminal:

ssh -i ~/.ssh/id_ed25519 user@server

Test ook of een sleutelloze verbinding mislukt, bijvoorbeeld met een testaccount of een machine waarop de sleutel niet is geladen. Het doel is om de werkelijkheid te verifiëren, niet alleen om een ​​configuratieregel af te lezen.

Als je SSH op Ubuntu gebruikt, houd deze handleiding dan bij de hand. SSH opnieuw opstarten op UbuntuEn als je een lokale firewall hebt, controleer dan ook je regels aan de hand van het artikel over UFW voordat je een server opent.

De controles die een lockdown voorkomen.

  • De privésleutel blijft uitsluitend op uw computer staan;
  • de publieke sleutel bevindt zich inderdaad in ~/.ssh/authorized_keys de juiste gebruiker;
  • de rechten kloppen op ~/.ssh En geautoriseerde_sleutels ;
  • Een tweede SSH-sessie per sleutel werkt voordat er een onderbreking optreedt;
  • sudo /usr/sbin/sshd -t retourneert geen fout;
  • De firewall laat de juiste SSH-poort nog steeds toe.

Als u na een wijziging de SSH-toegang verliest, moet u de herstelconsole, KVM, toegang tot de cloudprovider of de herstelmodus gebruiken. Deze methode is bedoeld om dat te voorkomen. Voor een uitgebreidere reparatie kunt u ook de handleiding raadplegen op een schone herinstallatie van SSH op Ubuntu.

Voor officiële documentatie onderhoudt Ubuntu een pagina op OpenSSHServerReferentiepagina’s ssh-keygen En ssh-kopieer-id Ze beschrijven ook de hier gebruikte opties in detail.