SSH Overzicht
SSH werkt volgens een client-servermodel en maakt verbinding met een SSH-server via een SSH-client. Het gebruikt standaard poort 22 en beschermt de communicatie tegen bedreigingen zoals man-in-the-middle aanvallen of gegevensafluisteren via krachtige encryptietechnologie.
Belangrijkste functies van SSH
SSH biedt de volgende belangrijke functies:
Belangrijkste functies van SSH
- Op afstand opdrachten uitvoeren: Voer opdrachten rechtstreeks uit op een externe server.
- Veilige bestandsoverdracht: `scp` (Secure Copy) of `sftp` (SSH File Transfer Protocol) wordt gebruikt om bestanden veilig uit te wisselen.
- Poort forwarding (tunneling): Creëert een versleutelde tunnel tussen lokale en externe poorten om specifieke diensten veilig te gebruiken.
- X11 forwarding: Maakt het mogelijk om GUI-toepassingen van de externe server op de lokale pc uit te voeren.
- SSH sleutelgebaseerde authenticatie: Biedt een krachtigere en handigere methode voor authenticatie door gebruik te maken van een paar publieke en private sleutels in plaats van een wachtwoord.
Belangrijkste SSH-commando's
Leer hoe u verbinding kunt maken met een externe server en verschillende taken kunt uitvoeren met behulp van SSH-commando's. Combineer de opties om de benodigde functionaliteit te benutten.
1. Basisverbinding en authenticatie
2. Geavanceerde functies en forwarding
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`ssh` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
SSH Sleutelgebaseerde Authenticatie
SSH sleutelgebaseerde authenticatie is een veel veiligere en handigere methode dan wachtwoordauthenticatie. Het gebruikt een paar publieke en private sleutels voor authenticatie, waardoor het risico op blootstelling van wachtwoorden vermindert.
SSH Sleutel Genereren
Gebruik het `ssh-keygen`-commando om een paar publieke en private sleutels te genereren. Standaard worden de bestanden `~/.ssh/id_rsa` (privésleutel) en `~/.ssh/id_rsa.pub` (publieke sleutel) aangemaakt.
SSH Sleutel Generatie Commando
ssh-keygen -t rsa -b 4096
Genereert een nieuwe SSH sleutelpair op de schijf. Locatie en wachtwoord voor sleutelopslag kunnen worden ingesteld.
Publieke Sleutel Distributie
Voeg de gegenereerde publieke sleutel (`id_rsa.pub`) toe aan het bestand `~/.ssh/authorized_keys` in de gebruikershome-directory op de externe server. Gebruikers die deze publieke sleutel hebben geregistreerd, kunnen met de bijbehorende privésleutel zonder wachtwoord toegang krijgen tot de server.
Kopieer de Publieke Sleutel naar de Server (gebruik ssh-copy-id)
ssh-copy-id user@hostname
Met het `ssh-copy-id`-commando kunt u de publieke sleutel eenvoudig naar de externe server kopiëren. Dit is de meest aanbevolen methode.
Handmatige Kopie van de Publieke Sleutel (gebruik scp)
scp ~/.ssh/id_rsa.pub user@hostname:~/
ssh user@hostname "mkdir -p ~/.ssh && cat ~/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && rm ~/id_rsa.pub"
Als `ssh-copy-id` niet kan worden gebruikt, kunt u de publieke sleutel met `scp` naar de server kopiëren en deze vervolgens handmatig aan `authorized_keys` toevoegen.
SSH Configuratiebestand (~/.ssh/config)
Met het SSH-configuratiebestand (`~/.ssh/config`) kunt u verbindingsinformatie voor vaak gebruikte servers opslaan voor gemakkelijk gebruik. U hoeft niet elke keer complexe opties in te voeren, maar kunt eenvoudig verbinding maken met een alias.
Voorbeeld van een Configuratiebestand
Hier is een voorbeeld van het `~/.ssh/config`-bestand. U kunt verbindingsinstellingen voor meerdere hosts definiëren.
Inhoud van het config-bestand
Host myserver
HostName 192.168.1.100
User myuser
Port 2222
IdentityFile ~/.ssh/my_server_key.pem
Host dev-web
HostName dev.example.com
User webadmin
ForwardAgent yes
LocalForward 8080 localhost:80
Belangrijkste Configuratie-opties
Belangrijkste opties die kunnen worden gebruikt in het `config`-bestand.
- Host: Dit is de alias van deze instellingen. Het wordt gebruikt als `ssh myserver`.
- HostName: Het IP-adres of de domeinnaam van de externe host waarmee verbinding moet worden gemaakt.
- User: De gebruikersnaam waarmee verbinding moet worden gemaakt met de externe server.
- Port: Het poortnummer waarmee verbinding moet worden gemaakt.
- IdentityFile: Het pad naar het privésleutelfile dat voor authenticatie wordt gebruikt.
- LocalForward: Stelt lokale poortforwarding in. `LocalForward [local_port] [remote_host]:[remote_port]`
- RemoteForward: Stelt externe poortforwarding in. `RemoteForward [remote_port] [local_host]:[local_port]`
- ForwardAgent: Activeert SSH-agent forwarding. Handig bij het verbinden via meerdere servers.
- ServerAliveInterval: Stuurt periodiek een signaal naar de server om te voorkomen dat de SSH-verbinding wordt verbroken. (in seconden)
- StrictHostKeyChecking: Stelt in of de hostkey moet worden gecontroleerd. `yes` of `no`.
Verbinden met behulp van het Configuratiebestand
ssh myserver
Als u in het `~/.ssh/config`-bestand een Host-alias `myserver` heeft gedefinieerd, kunt u eenvoudig verbinding maken zoals hieronder.
Gebruik Voorbeelden
Leer praktische scenario's zoals het beheren van externe servers en het overdragen van bestanden aan de hand van verschillende gebruiksvoorbeelden van SSH-commando's.
Basis SSH Verbinding
ssh testuser@192.168.1.100
Verbindt met de server 192.168.1.100 als testuser. Er verschijnt een prompt om een wachtwoord in te voeren.
Verbinding maken met een SSH Sleutelfile
ssh -i ~/.ssh/my_key.pem ubuntu@ec2-1-2-3-4.compute-1.amazonaws.com
Maakt verbinding met de server met behulp van het privésleutelfile `~/.ssh/my_key.pem` in plaats van een wachtwoord. (Vaak gebruikt in cloudomgevingen)
Een Enkel Commando Op Afstand Uitvoeren
ssh user@hostname "ls -l /var/log"
Voert het commando `ls -l /var/log` uit op de externe server zonder verbinding te maken.
Lokale Poort Forwarding (Toegang tot Webservice)
ssh -L 8888:localhost:80 user@hostname
Maakt verbinding met poort 80 (webserver) van de externe server via poort 8888 van de lokale pc. Dit geeft de indruk dat de webserver lokaal is.
Bestand Kopiëren met SCP (Lokaal -> Extern)
scp mylocalfile.txt user@hostname:/tmp/
Kopieert het bestand `mylocalfile.txt` van de lokale machine naar de map `/tmp/` op de externe server.
Bestand Kopiëren met SCP (Extern -> Lokaal)
scp user@hostname:/var/log/syslog .
Kopieert het bestand `/var/log/syslog` van de externe server naar de huidige map op de lokale pc.