Begriff
SSH (Secure Shell)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Das Schweizer Taschenmesser für Admins.
Du sitzt zu Hause am Laptop. Der Server steht in Frankfurt.
Mit SSH öffnest du ein Terminal auf dem Server.
Alles, was du tippst, wird verschlüsselt übertragen.
Es ersetzt das unsichere Telnet (wo Passwörter im Klartext flogen).
Außerdem kann es Dateien kopieren (scp) und Tunnel graben.
Merksatz: Ein kryptografisches Netzwerkprotokoll für den sicheren Betrieb von Netzwerkdiensten über ungesicherte Netzwerke, primär genutzt für die Fernwartung von Servern per Kommandozeile.
Login:
ssh [email protected]
Key-Based Auth (Der Profi-Weg):
- Lokal Schlüssel erzeugen:
ssh-keygen. - Public Key auf Server kopieren:
ssh-copy-id user@host. - Login ohne Passwort:
ssh user@host.
Config (~/.ssh/config):
Damit du dir keine IPs merken musst:
Host meinserver
HostName 1.2.3.4
User admin
IdentityFile ~/.ssh/id_ed25519
Jetzt reicht: ssh meinserver.
1. Tunneling (Port Forwarding)
- Local Forwarding (
-L): "Mach, dass Port 8080 auf meinem Laptop auf Port 80 vom Server zeigt." (Zugriff auf internes Intranet). - Remote Forwarding (
-R): "Mach, dass Port 80 auf dem Server auf meinen Laptop zeigt." (Dem Kunden lokal laufende Webseiten zeigen:ngrokPrinzip). - Dynamic Forwarding (
-D): SOCKS-Proxy. Leite allen Browser-Traffic durch den Server.
2. SSH Agent Forwarding (-A)
Du bist auf PC A. Loggst dich auf Server B ein. Willst von B auf Github zugreifen. Dein Key liegt aber auf A. Du willst ihn nicht auf B kopieren (unsicher!). Agent Forwarding leitet die Krypto-Challenge von B zurück an A. A unterschreibt, B sendet an Github. Der Private Key verlässt nie PC A. Vorsicht: Wenn Admin auf B "böse" ist, kann er den Agenten nutzen, solange du eingeloggt bist.
3. Hardening
Standard-Einstellungen sind oft okay, aber für High-Security:
PermitRootLogin no(Nur als User rein, dannsudo).PasswordAuthentication no(Nur Keys erlauben. Brute Force zwecklos).AllowUsers peter(Whitelist).
1. SSH Multiplexing (ControlMaster)
Wenn du viele Befehle hintereinander an einen Server schickst (z.B. per Skript), dauert jeder SSH-Verbindungsaufbau (Handshake) ca. 1-2 Sekunden.
Mit Multiplexing bleibt die erste Verbindung im Hintergrund offen. Weitere Befehle "rutschen" durch die bereits stehende Leitung.
In der ~/.ssh/config:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 10m
Das beschleunigt Tools wie Ansible massiv, da der klobige Krypto-Handshake nur einmal pro Session stattfinden muss.
2. Zertifikatsbasierte Authentifizierung
Key-based Auth (Public Keys in authorized_keys) ist mühsam bei 1000 Servern.
Große Firmen (Netflix, Facebook) nutzen SSH Certificates.
Dabei wird nicht jeder Key auf jeden Server kopiert. Stattdessen vertrauen alle Server einer zentralen Certificate Authority (CA). Der Entwickler fragt die CA: "Unterschreibe meinen Key für 8 Stunden."
Der Server prüft nur die Unterschrift der CA und lässt den Entwickler rein. Vorteil: Keine verwaisten Keys auf alten Servern, automatische Ablaufdaten und zentrales Logging, wer wann wo war.
3. Ed25519 vs. RSA 4096
Früher war RSA der Goldstandard. Doch RSA-Keys sind groß (4096 Bit für hohe Sicherheit) und mathematisch anfälliger für zukünftige Angriffe. Heute nutzt man fast immer Ed25519 (Elliptic Curve). Vorteile:
- Kürzer (nur 256 Bit) bei gleicher oder höherer Sicherheit wie RSA 4096.
- Viel schneller beim Signieren und Verifizieren.
- Resistenter gegen Seitenkanalangriffe (z.B. Messung der CPU-Zeit zur Key-Extraktion).
Wer heute
ssh-keygen -t ed25519nutzt, ist auf dem Stand der Technik.
Quick-Check
Fingerprint?
"The authenticity of host 'xyz' can't be established. Fingerprint is SHA256:..." Beim ersten Verbinden zeigt SSH den Hash des Server-Keys. Du solltest prüfen, ob er stimmt (TOFU - Trust On First Use). Warnt vor Man-in-the-Middle.SFTP?
SSH File Transfer Protocol. Hat nichts mit FTP zu tun! Es ist ein Datei-Übertragungs-Subsystem innerhalb von SSH. Läuft über den gleichen Port 22.Mosh?
Mobile Shell. Eine Alternative zu SSH für instabile Netze (Zug/Handy). Wenn WLAN abbricht und wiederkommt, bleibt die Mosh-Session offen. SSH würde sterben ("Broken Pipe").