Initial commit
This commit is contained in:
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# connect-test — prüft, ob claude mit der aktuellen Env authentifizieren und antworten kann.
|
||||
# Exit 0 = Verbindung ok. Für Negativtest mit ungültigem Key:
|
||||
# ANTHROPIC_API_KEY=sk-ant-ungueltig connect-test
|
||||
set -euo pipefail
|
||||
|
||||
"${CLAUDE_BIN:-$HOME/.local/bin/claude}" -p 'Antworte nur mit: OK' --model claude-sonnet-5
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# kc-backup — sichert das Secret des Claude-Code-Keychain-Eintrags in eine Datei.
|
||||
# Ablage außerhalb des Git-Repos (Default: ~/.ssh), damit das Secret nie committet wird.
|
||||
# Usage: kc-backup [zieldatei]
|
||||
set -euo pipefail
|
||||
|
||||
dest=${1:-$HOME/.ssh/claude-keychain-backup.json}
|
||||
security find-generic-password -s "Claude Code-credentials" -a "$USER" -w > "$dest"
|
||||
chmod 600 "$dest"
|
||||
echo "Keychain-Secret gesichert nach: $dest ($(wc -c < "$dest" | tr -d ' ') Bytes)"
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# kc-delete — löscht den Claude-Code-Keychain-Eintrag.
|
||||
# Vorher kc-backup ausführen; zurückspielen mit kc-restore.
|
||||
set -euo pipefail
|
||||
|
||||
security delete-generic-password -s "Claude Code-credentials" -a "$USER"
|
||||
echo "Keychain-Eintrag 'Claude Code-credentials' gelöscht."
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# kc-restore — spielt das mit kc-backup gesicherte Secret in den Keychain zurück.
|
||||
# -U aktualisiert einen ggf. vorhandenen Eintrag statt zu scheitern.
|
||||
# Usage: kc-restore [backupdatei]
|
||||
set -euo pipefail
|
||||
|
||||
src=${1:-$HOME/.ssh/claude-keychain-backup.json}
|
||||
security add-generic-password -U -s "Claude Code-credentials" -a "$USER" -w "$(cat "$src")"
|
||||
echo "Keychain-Eintrag aus $src wiederhergestellt."
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# kc-status — zeigt Zustand des Claude-Code-Keychain-Eintrags und der Auth-Env.
|
||||
# mdat = letzte Änderung des Eintrags; ändert sich, wenn eine Session den Keychain beschreibt.
|
||||
set -euo pipefail
|
||||
|
||||
echo "== Keychain-Eintrag 'Claude Code-credentials' =="
|
||||
security find-generic-password -s "Claude Code-credentials" -a "$USER" 2>&1 | grep -E '"(mdat|cdat)"' || echo "kein Eintrag vorhanden"
|
||||
|
||||
echo "== Auth-Env dieser Shell =="
|
||||
env | grep -E '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN|CLAUDE_CONFIG_DIR)=' | sed -E 's/=(.).*/=\1…/' || echo "keine Auth-Env gesetzt"
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# oauth-configdir-test — prüft, ob claude auf macOS die .credentials.json aus
|
||||
# CLAUDE_CONFIG_DIR liest, wenn kein Keychain-Eintrag existiert.
|
||||
# Ablauf: Backup → Keychain löschen → claude mit bereinigter Auth-Env →
|
||||
# Nachkontrollen → Restore. Restore läuft auch bei fehlgeschlagenem Testlauf.
|
||||
# Usage: oauth-configdir-test [pool] (Default: Mx9Privat)
|
||||
set -u
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
pool=${1:-Mx9Privat}
|
||||
pooldir="$HOME/claude-pools/$pool"
|
||||
|
||||
bin/kc-backup || exit 1
|
||||
bin/kc-delete || exit 1
|
||||
|
||||
echo "== Testlauf: Env ohne ANTHROPIC_API_KEY/CLAUDE_CODE_OAUTH_TOKEN, CLAUDE_CONFIG_DIR=$pooldir =="
|
||||
env -u ANTHROPIC_API_KEY -u CLAUDE_CODE_OAUTH_TOKEN \
|
||||
CLAUDE_CONFIG_DIR="$pooldir" \
|
||||
"${CLAUDE_BIN:-$HOME/.local/bin/claude}" -p 'Antworte nur mit: OK' --model claude-sonnet-5
|
||||
echo "EXIT: $?"
|
||||
|
||||
echo "== credentials-Datei nach Lauf (#10039: darf nicht gelöscht sein) =="
|
||||
ls -la "$pooldir/.credentials.json"
|
||||
|
||||
echo "== Keychain nach Lauf (es darf KEIN Eintrag entstanden sein) =="
|
||||
bin/kc-status
|
||||
|
||||
echo "== Restore =="
|
||||
bin/kc-restore
|
||||
rm "$HOME/.ssh/claude-keychain-backup.json"
|
||||
bin/kc-status
|
||||
Reference in New Issue
Block a user