diff --git a/import_config.sh b/import_config.sh index 369cc2e..7acc48e 100644 --- a/import_config.sh +++ b/import_config.sh @@ -25,18 +25,16 @@ read -p "Wähle eine Option (1-5): " OPTION < /dev/tty # Globale Variable für den ausgewählten Key SELECTED_KEY="" -# Neue Funktion zur interaktiven Key-Auswahl +# Funktion zur interaktiven Key-Auswahl select_ssh_key() { local keys=() - # Finde alle echten Private Keys im .ssh Ordner if [ -d "$HOME/.ssh" ]; then while IFS= read -r line; do keys+=("$line") done < <(grep -rl "PRIVATE KEY" "$HOME/.ssh" 2>/dev/null) fi - # Fallback, falls keine Keys gefunden wurden if [ ${#keys[@]} -eq 0 ]; then echo "Keine SSH-Schlüssel automatisch gefunden." read -p "Pfad zum SSH-Key (manuell eingeben, leer = überspringen): " SELECTED_KEY < /dev/tty @@ -71,11 +69,9 @@ replace_identity_file() { echo "" echo "--- Lokale Anpassung (IdentityFile) ---" - # Aufruf der neuen Key-Auswahl-Logik select_ssh_key if [ -n "$SELECTED_KEY" ]; then - # Ersetzt alle vorhandenen 'IdentityFile'-Einträge durch den gewählten Pfad sed -i "s|^[ \t]*IdentityFile.*| IdentityFile $SELECTED_KEY|" "$target_file" echo "Erfolg: Alle IdentityFile-Einträge wurden für diesen PC auf '$SELECTED_KEY' geändert." else @@ -95,20 +91,28 @@ case $OPTION in ;; 2) echo "--- Entschlüsselte Config ---" - curl -sL "$REMOTE_ENC_URL" | age -d < /dev/tty + TMP_ENC=$(mktemp) + curl -sL "$REMOTE_ENC_URL" -o "$TMP_ENC" + age -d "$TMP_ENC" < /dev/tty + rm -f "$TMP_ENC" echo "-----------------------------" ;; 3) + TMP_ENC=$(mktemp) TMP_DEC=$(mktemp) - echo "Lade Git-Config herunter. age benötigt nun das Kennwort..." - if ! curl -sL "$REMOTE_ENC_URL" | age -d > "$TMP_DEC" 2>/dev/null < /dev/tty; then - echo "Fehler: Entschlüsselung fehlgeschlagen (falsches Passwort/Netzwerkfehler)." - rm -f "$TMP_DEC" + echo "Lade Git-Config herunter..." + curl -sL "$REMOTE_ENC_URL" -o "$TMP_ENC" + + echo "age benötigt nun das Kennwort..." + if ! age -d "$TMP_ENC" > "$TMP_DEC" < /dev/tty; then + echo "Fehler: Entschlüsselung fehlgeschlagen (falsches Passwort oder Download fehlerhaft)." + rm -f "$TMP_ENC" "$TMP_DEC" exit 1 fi + + rm -f "$TMP_ENC" # Aufräumen der verschlüsselten Temp-Datei - # Aufruf der Key-Ersetzung replace_identity_file "$TMP_DEC" mkdir -p "$HOME/.ssh" && touch "$CONFIG_FILE" @@ -133,16 +137,21 @@ case $OPTION in rm -f "$TMP_DEC" ;; 4) + TMP_ENC=$(mktemp) TMP_DEC=$(mktemp) - echo "Lade Git-Config herunter. age benötigt nun das Kennwort..." - if ! curl -sL "$REMOTE_ENC_URL" | age -d > "$TMP_DEC" 2>/dev/null < /dev/tty; then + echo "Lade Git-Config herunter..." + curl -sL "$REMOTE_ENC_URL" -o "$TMP_ENC" + + echo "age benötigt nun das Kennwort..." + if ! age -d "$TMP_ENC" > "$TMP_DEC" < /dev/tty; then echo "Fehler: Entschlüsselung fehlgeschlagen." - rm -f "$TMP_DEC" + rm -f "$TMP_ENC" "$TMP_DEC" exit 1 fi + + rm -f "$TMP_ENC" - # Aufruf der Key-Ersetzung replace_identity_file "$TMP_DEC" if [ -f "$CONFIG_FILE" ]; then @@ -169,7 +178,6 @@ case $OPTION in read -p "Port (Standard: 22 - Einfach Enter drücken): " NEW_PORT < /dev/tty NEW_PORT=${NEW_PORT:-22} - # Integration der Key-Auswahl für neue Hosts echo "" echo "Wähle das IdentityFile für diesen Host:" select_ssh_key