Passwort-Manager — Mac + Windows einheitliche Einrichtung mit CLI-Automatisierung
1Password / Bitwarden auf beiden Rechnern einrichten, mit SSH · Git · Dotfiles Auto-Fetch-Integration.
Ein Passwort-Manager rechnet sich an zwei Stellen — (1) Browser-Autofill, (2) automatisches Abrufen von Geheimnissen aus Terminal / Dotfiles / CI. Wer nur (1) nutzt, verschenkt die halbe Leistung. (2) einrichten: keine Klartext-Geheimnisse mehr in .env, und ein neuer Rechner bootet mit einem einzigen Befehl.
Ich denke, was einen Passwort-Manager für Entwickler besonders wertvoll macht, ist nicht die Passwortverwaltung selbst, sondern die CLI-Integration — weil op run bedeutet, dass Secrets automatisch aus dem Tresor injiziert werden, statt in .env-Dateien zu liegen, die irgendwann versehentlich committet werden. Anfangs habe ich 1Password nur im Browser genutzt; heute ist die op-CLI der Kernbestandteil, da SSH-Schlüssel, API-Keys und .env-Werte alle an einem einzigen, biometrisch geschützten Ort liegen.
Diese Anleitung vergleicht 1Password (empfohlen) · Bitwarden und zeigt die einheitliche Mac + Windows-Einrichtung.
TL;DR
| Punkt | 1Password | Bitwarden |
|---|---|---|
| Preis | Kostenpflichtig ($/Monat) | Kostenlos + kostenpflichtige Stufen |
| Sicherheitsmodell | E2E + Secret Key (geräteauthentifiziert) | E2E + Master-Passwort |
| CLI-Qualität | ✅ Ausgezeichnet (op CLI + Biometrie) | Gut (bw CLI) |
| SSH-Integration | ✅ Nativer SSH-Agent | Manuell |
| Git-Signierung | ✅ Commit-Signierung via ssh key | Manuell |
| Mobil / Familienfreigabe | ✅ | ✅ |
| Selbst-Hosting | ❌ | ✅ (Vaultwarden) |
Empfehlung: 1Password (bessere Entwickler-Workflow-Integration). Bitwarden bei Kostensensitivität oder Selbst-Hosting-Bedarf.
1. 1Password-Einrichtung
1.1 Installieren (Mac)
brew install --cask 1password 1password-cli1.2 Installieren (Windows)
winget install --id AgileBits.1Password -e
winget install --id AgileBits.1Password.CLI -e1.3 Erste Anmeldung
Desktop-App → anmelden (E-Mail + Secret Key + Master-Passwort). Der Secret Key stammt aus dem Anmelde-PDF oder einem anderen Gerät.
1.4 CLI ↔ Desktop-Integration
Desktop → Einstellungen → Entwickler → „Mit 1Password CLI integrieren" ✅. Dies ist der entscheidende Schritt — op-Befehle authentifizieren sich dann per GUI-Biometrie (Touch ID / Windows Hello).
Bestätigen:
op vault list
# Entsperrt via Touch ID/Windows Hello, keine Passwort-Eingabe2. SSH-Schlüssel-Integration (1Password)
Traditionell liegen SSH-Schlüssel als Klartext-Dateien unter ~/.ssh/id_ed25519. 1Password enthält einen integrierten SSH-Agenten — Schlüssel liegen im Tresor, und jede Verwendung wird per Biometrie autorisiert.
2.1 Schlüssel generieren
1Password Desktop → „+" → SSH-Schlüssel:
- Name:
personal-ed25519 - Algorithmus: Ed25519
- Schlüsselpaar wird automatisch generiert
2.2 SSH-Agenten aktivieren
Desktop → Einstellungen → Entwickler → „SSH-Agenten verwenden" ✅
- macOS: wird automatisch zu
~/.ssh/confighinzugefügt - Windows: Umgebungsvariable wird automatisch gesetzt
2.3 Öffentlichen Schlüssel bei GitHub registrieren
1Password-Tresor → dieses Schlüssel-Element → „Public key" kopieren → GitHub → Settings → SSH and GPG keys → New SSH key.
2.4 Testen
ssh -T git@github.com
# Hi yourname! You've successfully authenticated...
# (ein Touch ID / Windows Hello-Tipp)Keine Klartext-Schlüsseldateien mehr in
~/.ssh/. Auf einem neuen Rechner reicht die Anmeldung bei 1Password — SSH funktioniert sofort.
3. Git-Commit-Signierung (mit SSH-Schlüssel)
Einfacher als GPG und wiederverwendet denselben Schlüssel:
git config --global gpg.format ssh
git config --global user.signingkey "ssh-ed25519 AAAA... your-comment"
# Öffentlichen Schlüssel aus dem 1Password-Element kopieren
git config --global commit.gpgsign trueJetzt git commit → 1Password-Biometrie → automatisch signiert. Denselben öffentlichen Schlüssel bei GitHub Settings → SSH and GPG keys → „Add new signing key" registrieren.
4. .env / API-Schlüssel-Integration
Statt Klartext-.env, aus 1Password abrufen:
4.1 Geheimnis hinzufügen
1Password → „+" → API-Anmeldedaten:
- Titel:
Anthropic API Key - Anmeldedaten:
sk-ant-... - Tags:
dev,api
4.2 CLI-Abruf
op item get "Anthropic API Key" --fields credential
# sk-ant-...4.3 op run — Auto-Injektion
.env.tmpl nur mit Platzhaltern:
ANTHROPIC_API_KEY=op://Private/Anthropic API Key/credential
GITHUB_TOKEN=op://Private/GitHub/token
Ausführen:
op run --env-file=.env.tmpl -- npm run dev
# Der Befehl läuft mit echten Werten als Umgebungsvariablen injiziert.env.tmpl ist sicher zum Committen (enthält nur Referenzen). Echte Geheimnisse verbleiben im Tresor.
4.4 chezmoi-Integration
Aus mac/dotfiles, ein chezmoi-Template:
# dot_env.tmpl
export ANTHROPIC_API_KEY={{ onepasswordRead "op://Private/Anthropic/credential" }}
chezmoi apply injiziert automatisch → erstellt eine Klartext-.env auf dem neuen Rechner.
5. Bitwarden — Die kostenlose Alternative
5.1 Installieren
# Mac
brew install --cask bitwarden bitwarden-cli
# Windows
winget install Bitwarden.Bitwarden
winget install Bitwarden.CLI5.2 Anmeldung + Sitzung
bw login email@example.com
# Master-Passwort → gibt einen API-Schlüssel zurück
# Sitzung exportieren
export BW_SESSION="$(bw unlock --raw)"
# Oder Funktion in .zshrc definieren:
function bwl { export BW_SESSION="$(bw unlock --raw)"; }5.3 Geheimnisse lesen
bw get item "Anthropic API"
bw get password "Anthropic API"
bw get notes "Some Long Note"JSON-Ausgabe, passt gut zu jq:
bw get item "GitHub" | jq -r '.login.password'5.4 Schwächen
- Keine SSH-Agenten-Integration (Schlüssel können manuell gespeichert werden, werden aber nicht automatisch genutzt)
- Keine automatisierte Git-Commit-Signierung
- Biometrie-Integration hängt von OS/App ab (weniger nahtlos als bei 1Password)
5.5 Selbst-Hosting (Vaultwarden)
# Mac/Linux docker
docker run -d \
--name vaultwarden \
-v ./vw-data:/data \
-p 8000:80 \
vaultwarden/server:latestAuf einem Heimserver betreiben und mit bw config server http://your-server:8000 umschalten. Bitwarden-Clients funktionieren dann wie gewohnt.
6. Zwei-Rechner-Workflow
Auf Mac hinzugefügte Geheimnisse sind sofort auf Windows verwendbar (Tresor-Sync ist automatisch):
# Neuen Schlüssel auf Mac hinzufügen
op item create --category="API Credential" \
--title="New Service" \
--vault="Private" \
credential="sk-..."
# Sofort in Windows pwsh verwenden
op item get "New Service" --fields credential.env.tmpl selbst über Git/Syncthing zwischen beiden Rechnern teilen (Werte nur im Tresor — Templates sind sicher).
Überprüfung
op vault listoderbw list folders— Authentifizierung funktioniertssh -T git@github.com— 1Password SSH-Agent authentifiziert mit einem Touch ID-Tippgit commit -S -m "test"→git log --show-signature→ „Good signature"op run --env-file=.env.tmpl -- env | grep MY_KEY→ echter Wert injiziert- In 1Password CLI auf Windows anmelden → gleicher Tresor zugänglich
Fehlerbehebung
op CLI koppelt sich nicht mit der GUI
- Desktop → Einstellungen → Entwickler → „Mit 1Password CLI integrieren" nicht aktiviert
- Desktop muss laufen (angemeldet)
- macOS: Systemeinstellungen → Sicherheit → Biometrie-Berechtigung erteilen
Bitwarden-Sitzung läuft ab
Standard-Inaktivitätssperre: 30 min. Erneut bw unlock --raw ausführen. Auto-Entsperren nicht in .zshrc einfügen — das Master-Passwort landet sonst in der Umgebung.
Zwei SSH-Agenten (1Password vs ssh-agent)
Pin in ~/.ssh/config:
Host github.com
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
Auf Windows SSH_AUTH_SOCK setzen.
op run zerstört Anführungszeichen
op inject bevorzugen (klarer): op inject -i .env.tmpl -o .env.runtime && source .env.runtime. Eine Klartext-Datei wird temporär erstellt — danach löschen.
Familien-/Team-Tresor-Berechtigungsprobleme
1Password Business → tresorspezifische Berechtigungen. Welche Tresore die CLI erreichen kann mit op vault list prüfen. Befehle schlagen fehl, wenn die Berechtigung fehlt.
Referenzen
- mac/dotfiles — chezmoi + 1Password-Integration
- multi-os/file-sync — nicht-geheime Dateien wie
.env.tmplüber Syncthing synchronisieren - 1Password CLI (offiziell)
- Bitwarden CLI
- Vaultwarden (Selbst-Hosting)
Changelog
- 2026-05-12: Erster Entwurf. 1Password vs. Bitwarden-Vergleich + SSH-Integration · Git-Signierung · Env-Auto-Injektion · Zwei-Rechner-Workflow + fünf Fehlerbehebungsfälle.