U kunt zonder wachtwoord inloggen op een Linux-server met behulp van SSH-sleutels. Deze methode is over het algemeen veiliger dan wachtwoordauthenticatie. Hier is een overzicht van het proces:
1. Genereer een SSH-sleutelpaar op uw lokale computer (client)
* Open een terminal op uw lokale computer (waar u *vanaf* verbinding mee maakt).
* Gebruik het `ssh-keygen` commando:
``` bash
ssh-keygen
```
* Prompts: De opdracht zal u vragen om:
* Voer het bestand in waarin u de sleutel wilt opslaan (/home/uwgebruikersnaam/.ssh/id_rsa): Druk op Enter om de standaardlocatie te accepteren (`~/.ssh/id_rsa` voor de privésleutel en `~/.ssh/id_rsa.pub` voor de publieke sleutel). Dit is meestal de beste optie.
* Voer de wachtwoordzin in (leeg omdat er geen wachtwoordzin is): Dit is *optioneel*. Een wachtwoordzin voegt een extra beveiligingslaag toe, waardoor u deze elke keer dat u de sleutel gebruikt, moet invoeren. Als u niet elke keer dat u verbinding maakt een wachtwoordzin wilt invoeren, laat u deze leeg en drukt u twee keer op Enter. Houd er echter rekening mee dat als uw privésleutel in gevaar komt, iedereen die er toegang toe heeft, zonder wachtwoordzin toegang heeft tot uw server. Weeg het gemak af tegen de gevolgen voor de veiligheid.
* Voer dezelfde wachtwoordzin opnieuw in: Als u ervoor kiest een wachtwoordzin in te voeren, bevestigt u deze.
* Sleutelbestanden: Nadat het proces is voltooid, heb je twee bestanden in de map `~/.ssh`:
* `id_rsa`:Dit is uw privésleutel . Houd dit bestand geheim en veilig! Deel het nooit met iemand!
* `id_rsa.pub`:Dit is uw openbare sleutel . U moet de inhoud van dit bestand naar de server kopiëren.
2. Kopieer de openbare sleutel naar de server
Er zijn verschillende manieren om de publieke sleutel naar de server te kopiëren. De eenvoudigste is vaak `ssh-copy-id`, maar hiervoor is *een laatste keer* wachtwoordverificatie vereist. Als u in eerste instantie geen wachtwoordverificatie kunt gebruiken, moet u een handmatige methode gebruiken.
* `ssh-copy-id` gebruiken (het gemakkelijkst als je toegang hebt met een wachtwoord):
``` bash
ssh-copy-id gebruiker@server_ip_adres
```
Vervang `user` door uw gebruikersnaam op de server, en `server_ip_address` door het IP-adres of de hostnaam van de server. Op de server wordt u om uw wachtwoord gevraagd. Dit commando voegt automatisch uw publieke sleutel toe aan het `~/.ssh/authorized_keys` bestand op de server.
* Handmatig kopiëren (als u geen wachtwoordtoegang heeft):
1. Bekijk de openbare sleutel op uw lokale computer:
``` bash
cat ~/.ssh/id_rsa.pub
```
Kopieer de volledige uitvoer (inclusief de `ssh-rsa` aan het begin en uw gebruikersnaam en hostnaam aan het einde). Het ziet er ongeveer zo uit:`ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF... uwgebruikersnaam@uwhostnaam`
2. Log op een andere manier in op de server (bijvoorbeeld via een webconsole of andere tijdelijke toegang).
3. Maak de map `.ssh` (als deze niet bestaat) en het bestand `authorized_keys`:
``` bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh #Belangrijk:stel machtigingen in om de toegang te beperken
raak ~/.ssh/authorized_keys aan
chmod 600 ~/.ssh/authorized_keys #Important:Stel machtigingen in om de toegang te beperken
```
4. Bewerk het bestand `authorized_keys` en plak uw openbare sleutel:
``` bash
nano ~/.ssh/authorized_keys # of gebruik vi, vim, emacs, etc.
```
Plak de publieke sleutel die u in stap 1 heeft gekopieerd in dit bestand. Zorg ervoor dat alles op één regel staat. Sla het bestand op en sluit het.
5. Belangrijk:controleer de rechten: Onjuiste machtigingen zijn een veelvoorkomende oorzaak van het mislukken van de SSH-sleutelverificatie. Zorg voor het volgende:
* `~/.ssh` map:`700` (drwx------) - Alleen de gebruiker heeft toegang.
* `~/.ssh/authorized_keys` bestand:`600` (-rw-------) - Alleen de gebruiker kan lezen en schrijven.
* Thuismap van gebruiker:leesbaar en uitvoerbaar door de gebruiker (bijvoorbeeld `755` of `700`).
3. Test de verbinding
* Probeer nu zonder wachtwoord in te loggen op de server:
``` bash
ssh gebruiker@server_ip_adres
```
* Als u een wachtwoordzin voor uw privésleutel instelt, wordt u hierom gevraagd. Als u geen wachtwoordzin heeft ingesteld, moet u direct ingelogd zijn.
4. Schakel wachtwoordverificatie uit (optioneel, maar aanbevolen vanwege beveiliging)
* Belangrijk:zorg ervoor dat u succesvol kunt inloggen met SSH-sleutels *voordat* u de wachtwoordauthenticatie uitschakelt. Als u uzelf buitensluit, moet u een andere methode gebruiken om weer toegang te krijgen (bijvoorbeeld de console van de server).
* Bewerk het SSH-serverconfiguratiebestand:
``` bash
sudo nano /etc/ssh/sshd_config # of gebruik vi, vim, emacs, etc.
```
* Zoek en wijzig deze regels (of voeg ze toe als ze niet bestaan):
```
WachtwoordAuthenticatienr
ChallengeResponseAuthentication nee #Ook aanbevolen om uit te schakelen
GebruikPAM-nr
```
* Sla het bestand op en start de SSH-service opnieuw:
``` bash
sudo systemctl restart sshd #of sudo service ssh restart afhankelijk van uw systeem
```
Problemen oplossen
* Rechten zijn onjuist: Dit is het meest voorkomende probleem. Controleer nogmaals de rechten van de map `.ssh` en het bestand `authorized_keys`.
* Onjuiste openbare sleutel: Zorg ervoor dat u de *volledige* openbare sleutel naar het bestand `authorized_keys` hebt gekopieerd en dat er geen extra spaties of regeleinden zijn.
* SSH-serverconfiguratie: Bekijk het `sshd_config`-bestand. Er kunnen andere instellingen zijn die de sleutelauthenticatie verstoren (bijvoorbeeld `PubkeyAuthentication no`).
* SELinux/AppArmor: Als je SELinux of AppArmor gebruikt, kunnen ze voorkomen dat SSH toegang krijgt tot de sleutelbestanden. Controleer hun logboeken en pas de configuratie indien nodig aan.
* Firewall: Zorg ervoor dat uw firewall SSH-verkeer toestaat (meestal poort 22, maar dit kan anders zijn).
* Clientconfiguratie: Controleer het SSH-configuratiebestand van uw klant (`~/.ssh/config`) op instellingen die mogelijk het standaardgedrag overschrijven.
Beveiligingsoverwegingen
* Bescherm uw privésleutel: Uw privésleutel is het allerbelangrijkste. Als er inbreuk op wordt gemaakt, kan iemand u op de server nabootsen. Bewaar het veilig en overweeg het gebruik van een wachtwoordzin.
* Regelmatig sleutels roteren: Het is een goede gewoonte om regelmatig nieuwe SSH-sleutels te genereren en oude uit het `authorized_keys`-bestand te verwijderen.
* Gebruik een sterke wachtwoordzin: Als u ervoor kiest een wachtwoordzin te gebruiken, zorg er dan voor dat deze sterk en gedenkwaardig is. Een wachtwoordmanager kan helpen.
* SSH-toegang beperken: Gebruik firewallregels en andere beveiligingsmaatregelen om SSH-toegang te beperken tot alleen vertrouwde netwerken en IP-adressen.
* Wachtwoordverificatie uitschakelen: Zoals eerder vermeld, verbetert het uitschakelen van wachtwoordauthenticatie de veiligheid aanzienlijk door het risico op brute-force-aanvallen te elimineren.
Door deze stappen te volgen, kunt u veilig en gemakkelijk zonder wachtwoord inloggen op uw Linux-server met behulp van SSH-sleutels. Vergeet niet om prioriteit te geven aan beveiliging en uw privésleutel te beschermen. |