Files
OZM-Keks-Handbuch-v1/crumbpage-18-ssh-agent.md

155 lines
3.9 KiB
Markdown

# 🔐 Crumbpage 18: Der Schlüsselmeister (SSH Agent)
**Subtitle:** *Nie wieder Passwörter tippen ohne Sicherheit zu verlieren*
**Pfad:** 18 von X
**Schwierigkeit:** ⭐⭐⭐ (3/5)
**Zeit:** ~1 Stunde
**Voraussetzungen:** [SSH Keys](crumbpage-08-ssh-keys.md), [Workstation](crumbpage-17-workstation.md)
> *"Ein guter Diener hält dir die Schlüssel bereit, aber gibt sie niemandem sonst."* 🗝️
---
## 📋 Was du in diesem Pfad lernst
```
✓ Was macht der ssh-agent?
✓ ssh-add (Schlüssel hinzufügen)
✓ Agent Forwarding (Der magische Sprung)
✓ Keychain Integration (Mac/Linux)
✓ Die Gefahren von Forwarding
```
---
## 🎯 Lernziele
Nach diesem Pfad kannst du:
- [ ] Den `ssh-agent` starten und nutzen
- [ ] Verstehen, warum dein Private Key dein Gerät nie verlassen sollte
- [ ] Durch einen Bastion-Host "durchspringen" (Agent Forwarding)
- [ ] Den Agent sicher beenden oder sperren
---
## 🗝️ Das Problem: Passphrases nerven
Du hast deine Keys (wie in Pfad 8 gelernt) mit einer **Passphrase** gesichert. Gut!
Aber jetzt musst du bei jedem `git push` oder `ssh server` das Passwort tippen.
Das nervt. Und was nervt, wird abgeschaltet (Passwörter entfernt). **Böse!** 🛑
**Die Lösung: Der SSH Agent.**
Er ist ein kleiner Prozess im Hintergrund, der deine *entschlüsselten* Keys im RAM hält.
Du tippst das Passwort **einmal** (beim Start oder ersten Nutzen), und der Agent erledigt den Rest für dich.
---
## 🛠️ Die Basics
### 1. Lebt der Agent?
```bash
$ env | grep SSH_AUTH_SOCK
# Wenn hier nichts kommt, läuft kein Agent.
```
### 2. Starten (Manuell)
```bash
$ eval "$(ssh-agent -s)"
Agent pid 12345
```
### 3. Schlüssel hinzufügen (`ssh-add`)
```bash
$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/bmt/.ssh/id_ed25519: *********
Identity added: /home/bmt/.ssh/id_ed25519 (bmt@workstation)
```
Ab jetzt fragt SSH nicht mehr nach dem Passwort, solange der Agent läuft!
### 4. Was ist geladen?
```bash
$ ssh-add -l
256 SHA256:abcd... bmt@workstation (ED25519)
```
### 5. Alles vergessen (Lockdown)
```bash
$ ssh-add -D
All identities removed.
```
---
## 🚀 Advanced: Agent Forwarding
Stell dir vor:
`Workstation``Gateway-Server``Git-Server (GitHub)`
Du bist auf dem `Gateway` und willst `git clone` machen.
Dein Key liegt aber auf der `Workstation`.
**NIEMALS** kopierst du deinen Private Key auf den Gateway Server!
Stattdessen erlaubst du dem Gateway, deinen Agent auf der Workstation zu "fragen".
**Config (`~/.ssh/config`):**
```ssh
Host gateway
HostName gateway.crumbforest.de
ForwardAgent yes
```
Jetzt kannst du auf dem Gateway `git clone` machen, und die Authentifizierung "tunnelt" zurück zu deinem Laptop. Magie! ✨
### ⚠️ Die Gefahr (Security Warning)
Wenn du Forwarding aktivierst (`-A` oder `ForwardAgent yes`) und der Admin des Ziel-Servers böse ist (root), kann er deinen lokalen Agenten kapern, solange du verbunden bist.
**Regel:** Nutze Forwarding NUR zu Servern, denen du vertraust!
---
## 🍏 & 🐧 Komfort-Integration
### macOS
Der Mac macht das automatisch via Keychain.
Config (`~/.ssh/config`):
```ssh
Host *
UseKeychain yes
AddKeysToAgent yes
```
### Linux (Gnome/Keyring)
Moderne Distros (Ubuntu, Debian mit Gnome/MATE) starten oft einen Keyring-Daemon, der sich wie ein SSH-Agent verhält.
Wenn du es "pur" willst (in `.bashrc`):
```bash
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add
fi
```
---
## 🦉 Crystal Owl's Weisheit
> *"Der Schlüssel gehört dem Meister, nicht dem Torwächter."*
Niemals Private Keys verteilen. Lass den Agenten die Arbeit machen. Und wenn du gehst, nimm die Schlüssel mit (`ssh-add -D` oder Logout).
---
**Version:** 1.0
**Status:** Draft
**Tags:** #SSH #Security #Agent #Workflow
---
**Navigation:**
[← Zurück: Workstation](crumbpage-17-workstation.md) | [Weiter: Zero Trust Agent →](crumbpage-19-agent-lockdown.md)