#!/bin/sh # Stellt den geteilten Maschinen-ssh-agent sicher: Socket läuft und hält beide # Keys, die auf dieser Maschine gebraucht werden. Idempotent — mehrfach # aufrufbar, macht nur was fehlt. # # SSH isac agent SSH auf interne Systeme (User mwiegand-agent) # SSH Signing Key Git-Signing, für mich UND Agent-Sessions # # Wird von agent-env bei jedem Start gerufen; manuell nur nötig, wenn man nach # einem Reboot committen will, bevor die erste Agent-Session lief (Symptom: # "error: Couldn't find key in agent?"). # # Der kundenfähige Haupt-Key ("SSH Key mwiegand") gehört bewusst NICHT hierher: # er lebt nur hinter der 1Password-Freigabe (~/.1password/agent.sock, siehe # Host * in ~/.ssh/config), damit Agents ihn nicht unbemerkt nutzen können. # Architektur und Begründungen: agents/README.md im dotfiles-Repo. PATH="/opt/homebrew/bin:/usr/bin:/bin:$PATH" SOCK="$HOME/.ssh/isac-agent.sock" OP_ACCOUNT="WHZOJQOJPZHTFPJC6JZAOCUCBI" export SSH_AUTH_SOCK="$SOCK" # Agent tot oder nie gestartet? (ssh-add exit 2 = Socket antwortet nicht) ssh-add -l >/dev/null 2>&1 if [ $? -eq 2 ]; then rm -f "$SOCK" /usr/bin/ssh-agent -a "$SOCK" >/dev/null || exit 1 fi # $1 = Fingerprint (schon geladen?), $2 = op-Referenz, $3 = Anzeigename ensure_key() { if ssh-add -l 2>/dev/null | grep -q "$1"; then return 0 fi if op read --account "$OP_ACCOUNT" "$2" | ssh-add -q -; then echo "$3 geladen (bis zum nächsten Reboot)." >&2 else echo "$3 konnte nicht geladen werden (1Password gesperrt?)" >&2 return 1 fi } rc=0 ensure_key "SHA256:SvHSJQcHlAWUmF8EnflNsrv0mhWGARvAKLRPSBQ460I" \ "op://Employee/37z2tbpilrjrgyrhckb5cbrhsq/private key?ssh-format=openssh" \ "Signing-Key" || rc=1 ensure_key "SHA256:77FiJM6Z1eN7Ka7YpoCKIn9xVJFQUj6nBQa/g1rFya4" \ "op://Employee/ec2mtn4kkxnypyc4gxutg7lajq/private key?ssh-format=openssh" \ "Agent-Key" || rc=1 exit $rc