Implementeer SSH-sleutelgebaseerde authenticatie op Linux
SSH (Secured Shell) is een protocol dat een cryptografisch beveiligde verbinding tot stand brengt tussen de SSH-client en externe servers.
Met SSH kunt u externe servers veilig beheren en beheren. Dit kan op veel manieren nuttig zijn.
- Implementatie op meerdere servers
- Services op afstand stoppen / starten
- Automatisering
en al je creativiteit (hopelijk) …
Als sysadmin is dit een soort basisdingen om te weten.
Laten we leren hoe …
Ik zal een privésleutel en een openbare sleutel genereren. De privésleutel moet op uw ssh-clientcomputer worden opgeslagen en moet beveiligd blijven. De openbare sleutel moet naar de externe server worden gekopieerd om vanaf de SSH-clientcomputer zonder wachtwoord op die server in te loggen.
Je leert het volgende.
- Installeer SSH (niet vereist indien al geïnstalleerd)
- Genereer SSH-sleutels
- Kopieer SSH-sleutel naar een externe server
- Log in op de externe server met SSH
Voor demonstratiedoeleinden heb ik 2 servers met onderstaande IP-adressen, één systeem is een client en het andere is een server waarop ik me via SSH zal aanmelden vanaf een clientcomputer.
- Client (gebruiker -> geekflare): 192.168.56.102
- Remote (gebruiker -> Ubuntu): 192.168.56.101
Contents
SSH installeren
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat openssh-server op de servers is geïnstalleerd. Als het niet is geïnstalleerd, voert u de onderstaande opdrachten uit om te installeren.
sudo apt-get installeer openssh-server
sudo systemctl schakelt ssh in
sudo systemctl start ssh
U kunt de ssh-opdracht uitvoeren om te controleren of deze op het systeem is geïnstalleerd of niet.
[email beveiligd]: ~ $ ssh
gebruik: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:] poort]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identiteit_bestand] [-J [[email beveiligd]] host [: poort]] [-L adres]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o optie] [-p poort]
[-Q query_option] [-R adres] [-S ctl_path] [-W host: poort]
[-w local_tun [: remote_tun]] bestemming [commando]
Genereer SSH-sleutels
Dit moet worden gedaan op een clientserver.
Voer de opdracht ssh-keygen uit om een SSH-sleutel te genereren. Druk gewoon op enter wanneer het om het bestand, de wachtwoordzin en dezelfde wachtwoordzin vraagt. Het genereert standaard een paar sleutels in de directory ~ / .ssh. Id_rsa is de privésleutel en id_rsa.pub is de bijbehorende openbare sleutel.
[email beveiligd]: ~ $ ssh-keygen
Het genereren van een publiek / privaat RSA-sleutelpaar.
Voer het bestand in waarin u de sleutel wilt opslaan (/home/geekflare/.ssh/id_rsa):
Voer wachtwoordzin in (leeg voor geen wachtwoordzin):
Voer dezelfde wachtwoordzin nogmaals in:
Uw identificatie is opgeslagen in /home/geekflare/.ssh/id_rsa.
Je openbare sleutel is opgeslagen in /home/geekflare/.ssh/id_rsa.pub.
De belangrijkste vingerafdruk is:
SHA256: 3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 [email beveiligd]
Het randomart-beeld van de sleutel is:
+—[RSA 2048]—-+
| o + .. |
| + o + |
| oo. . . o |
| .. *. * |
| B. S. O. |
| O o. . . …. |
| + @ o o. E =. o |
| B + o + .o. =. |
| + … o. oo + |
+—-[SHA256]—–+
Het genereert twee nieuwe bestanden in de map ~ / .ssh.
Kopieer SSH-sleutel naar externe server
De persoonlijke sleutel moet worden gekopieerd ~ / .ssh map op een externe server. De meeste servers zouden deze map al moeten hebben, anders moet u een map maken.
En om dit te doen:
- Meld u aan bij de externe server met de gebruiker waarmee u verbinding wilt maken. In mijn geval is het ubuntu
- Zorg ervoor dat de huidige werkdirectory de homedirectory van de gebruiker is en maak vervolgens een .ssh-map. U kunt ook de volgende enkele opdracht gebruiken om er een te maken
mkdir -p ~ / .ssh
Als je al een .ssh-map hebt, maak er dan een back-up van.
Laten we vervolgens de openbare sleutel van een clientserver pushen.
Voer op de clientcomputer (192.168.56.102) de onderstaande opdracht uit om de openbare sleutel op de externe server te kopiëren naar een authorised_keys-bestand in de .ssh-directory.
[email beveiligd]: ~ $ cat .ssh / id_rsa.pub | ssh [email beveiligd] ‘kat >> .ssh / geautoriseerde_sleutels ‘
[email beveiligd]‘s wachtwoord:
Voer de onderstaande opdracht uit om machtigingen in te stellen voor het bestand geautoriseerde sleutels op de externe server.
[email beveiligd]: ~ $ ssh [email beveiligd] "chmod 700 .ssh; chmod 640 .ssh / authorised_keys"
Geweldig, dit concludeert dat de sleutel wordt uitgewisseld en dat de toestemming helemaal is ingesteld.
Log in op Remote Server met SSH
Laten we testen of het werkt!
Laten we inloggen op de externe server (192.168.56.101) vanaf een clientcomputer (192.168.56.102) als geekflare-gebruiker.
Voer de onderstaande opdracht uit om te testen, deze keer vraagt het geen wachtwoord.
[email beveiligd]: ~ $ ssh [email beveiligd]
Welkom bij Ubuntu 16.04.6 LTS (GNU / Linux 4.4.0-151-generieke i686)
* Documentatie: https://help.ubuntu.com
* Beheer: https://landscape.canonical.com
* Ondersteuning: https://ubuntu.com/advantage
346 pakketten kunnen worden bijgewerkt.
11 updates zijn beveiligingsupdates.
Laatste aanmelding: ma jun 17 00:10:32 2019 vanaf 192.168.56.101
Alsjeblieft…
Ik ben met succes ingelogd op de externe server. Het uitvoeren van onderstaande opdracht geeft de IP-details van de externe machine.
[email beveiligd]: ~ $ ifconfig
enp0s3 Link encap: Ethernet HWaddr 08: 00: 27: 9b: 47: 86
inet addr: 10.0.2.15 Bcast: 10.0.2.255 Mask: 255.255.255.0
inet6 addr: fe80 :: 5c62: 3267: b752: fe5d / 64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 metrisch: 1
RX pakketten: 20239 fouten: 0 gedaald: 0 overschrijdingen: 0 frame: 0
TX-pakketten: 5406-fouten: 0 gedaald: 0 overschrijdingen: 0 drager: 0
botsingen: 0 txqueuelen: 1000
RX bytes: 22678039 (22,6 MB) TX bytes: 701710 (701,7 KB)
enp0s8 Link encap: Ethernet HWaddr 08: 00: 27: a9: 4a: 6b
inet addr: 192.168.56.101 Bcast: 192.168.56.255 Mask: 255.255.255.0
inet6 addr: fe80 :: 54a9: 761c: 9034: 21a2 / 64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 metrisch: 1
RX pakketten: 330 fouten: 0 verbroken: 0 overschrijdingen: 0 frame: 0
TX-pakketten: 197 fouten: 0 verbroken: 0 overschrijdingen: 0 vervoerder: 0
botsingen: 0 txqueuelen: 1000
RX bytes: 42847 (42,8 KB) TX bytes: 32774 (32,7 KB)
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Masker: 255.0.0.0
inet6 addr: :: 1/128 Scope: Host
UP LOOPBACK RUNNING MTU: 65536 Metrisch: 1
RX pakketten: 997 fouten: 0 gedaald: 0 overschrijdingen: 0 frame: 0
TX-pakketten: 997 fouten: 0 gedaald: 0 overschrijdingen: 0 drager: 0
botsingen: 0 txqueuelen: 1
RX bytes: 79654 (79,6 KB) TX bytes: 79654 (79,6 KB)
Conclusie
Het opzetten van SSH-sleuteluitwisseling is heel eenvoudig, zoals u kunt zien. Ik hoop dat dit je helpt en geïnteresseerd bent in het leren van Linux-beheer en probleemoplossing, bekijk dit dan Udemy natuurlijk.