Normaal gesproken, wanneer u inlogt op een externe server met SSH, doet u dit met een combinatie van gebruikersnaam en wachtwoord. Het gebruik van een wachtwoord is echter beperkt tot de lengte van het wachtwoord dat u kunt onthouden of wilt typen. Met SSH-sleutelauthenticatie biedt een versleutelde wachtwoordzin veiligere referenties dan praktisch is met een standaardwachtwoord. De cryptografische kracht van SSH-sleutelauthenticatie gaat verder dan wat een standaardwachtwoord kan evenaren.
Genereer uw SSH-sleutel
Open een terminalvenster op de clientcomputer die u wilt gebruiken om in te loggen op uw server en geef vervolgens de opdracht: ssh-keygen
type=”code”> Vervolgens wordt u gevraagd een bestandsnaam in te voeren voor uw nieuwe sleutel. Het wordt aanbevolen dat u de standaardinstelling (~/.ssh/id_rsa) accepteert. Selecteer en verifieer vervolgens een wachtwoordzin. Maak van deze wachtwoordzin een sterke. Wanneer de opdracht is voltooid, is uw sleutel klaar voor gebruik.
Kopieer uw sleutel naar de server
Gebruik SSH om uw sleutel naar de externe server te kopiëren. Geef het commando: ssh-copy-id USER@SERVER_IP
type=”code”> Waarbij USER de gebruikersnaam is en SERVER_IP het IP-adres van de server waarop u wilt inloggen. U wordt gevraagd om het USER-wachtwoord. Nadat u succesvol bent geverifieerd, wordt de SSH-sleutel gekopieerd en kunt u op de normale manier inloggen op de server. Omdat de client waarmee u inlogt de overeenkomende sleutel heeft die nu op de server staat, bent u ingelogd. Herhaal dit proces op elke clientcomputer die SSH naar de server moet sturen.
Sluit het af
Het wordt als een beste beveiligingspraktijk beschouwd om wachtwoordverificatie op servers uit te schakelen, waarbij uitsluitend wordt vertrouwd op SSH-sleutelverificatie. Pas de configuratie van de SSH-daemon dienovereenkomstig aan. Open het configuratiebestand door het volgende uit te voeren: sudo nano /etc/ssh/sshd_config
type=”code”> Zoek in dat bestand naar de regel: #PasswordAuthentication yes
type = “code”> Commentaar op de regel verwijderen door de hashtag te verwijderen en vervolgens te wijzigen Ja tot Nee. Zoek vervolgens naar de regel: #PubkeyAuthentication yes
type=”code”> Maak ook de commentaar op die regel ongedaan.
Sla het bestand op en sluit het. Start de SSH-daemon opnieuw met het commando: sudo systemctl restart sshd
type=”code”> Als u nu probeert om SSH naar die server te sturen vanaf een client die geen overeenkomende SSH-sleutel bevat, wordt u de toegang geweigerd.
Waar wordt de SSH-sleutel opgeslagen?
Log in op de server waarnaar u uw sleutels hebt gekopieerd. Geef het commando: less ~/.ssh/authorized_keys
type=”code”> U ziet alle sleutels die u van clients hebt verzonden (met behulp van de ssh-kopie-id opdracht). Om SSH-sleutelauthenticatie van een bepaalde client in te trekken, verwijdert u de regels die overeenkomen met de hostnaam van de client (de hostnaam is het laatste stukje informatie in de sleutel).