From 932010c595b1dcf235c297d5a5bbf3695ef05f32 Mon Sep 17 00:00:00 2001 From: martin <1+martin@noreply.localhost> Date: Sat, 16 May 2026 13:49:21 +0200 Subject: [PATCH] import_config.sh aktualisiert --- import_config.sh | 73 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 12 deletions(-) diff --git a/import_config.sh b/import_config.sh index 22e0715..369cc2e 100644 --- a/import_config.sh +++ b/import_config.sh @@ -22,17 +22,64 @@ echo "=======================" read -p "Wähle eine Option (1-5): " OPTION < /dev/tty -# Hilfsfunktion, die nach dem Download und der Entschlüsselung nach dem lokalen SSH-Key fragt +# Globale Variable für den ausgewählten Key +SELECTED_KEY="" + +# Neue 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 + return + fi + + echo "Gefundene SSH-Schlüssel:" + echo " 0) Manuelle Eingabe (Pfad selbst tippen)" + for i in "${!keys[@]}"; do + printf "%2d) %s\n" "$((i+1))" "${keys[$i]}" + done + echo " x) Keine Änderung / Überspringen / Ohne Key" + + local choice + read -p "Wähle einen Schlüssel (0-${#keys[@]} oder x): " choice < /dev/tty + + if [[ "$choice" == "x" || "$choice" == "X" || -z "$choice" ]]; then + SELECTED_KEY="" + elif [[ "$choice" == "0" ]]; then + read -p "Pfad zum SSH-Key (manuell eingeben): " SELECTED_KEY < /dev/tty + elif [[ "$choice" -ge 1 && "$choice" -le ${#keys[@]} ]]; then + SELECTED_KEY="${keys[$((choice-1))]}" + else + echo "Ungültige Auswahl, keine Änderung vorgenommen." + SELECTED_KEY="" + fi +} + +# Hilfsfunktion für Option 3 und 4 replace_identity_file() { local target_file="$1" echo "" - echo "--- Lokale Anpassung ---" - read -p "Pfad zum lokalen SSH-Key (z.B. ~/.ssh/id_ed25519) [Leer lassen für keine Änderung]: " LOCAL_KEY < /dev/tty + echo "--- Lokale Anpassung (IdentityFile) ---" - if [ -n "$LOCAL_KEY" ]; then - # Ersetzt alle vorhandenen 'IdentityFile'-Einträge durch den angegebenen Pfad - sed -i "s|^[ \t]*IdentityFile.*| IdentityFile $LOCAL_KEY|" "$target_file" - echo "Erfolg: Alle IdentityFile-Einträge wurden für diesen PC auf '$LOCAL_KEY' geändert." + # 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 + echo "Info: IdentityFile-Einträge wurden nicht verändert." fi } @@ -43,7 +90,6 @@ case $OPTION in exit 1 fi echo "age wird dich nun nach einem Verschlüsselungskennwort fragen..." - # -p = Passphrase Modus, -a = ASCII Armor (Base64), -o = Output age -p -a -o config.enc "$CONFIG_FILE" < /dev/tty echo "Erfolg: Die Datei wurde als 'config.enc' (Textformat) erstellt." ;; @@ -62,7 +108,7 @@ case $OPTION in exit 1 fi - # IdentityFile automatisch für dieses System anpassen + # Aufruf der Key-Ersetzung replace_identity_file "$TMP_DEC" mkdir -p "$HOME/.ssh" && touch "$CONFIG_FILE" @@ -96,7 +142,7 @@ case $OPTION in exit 1 fi - # IdentityFile automatisch für dieses System anpassen + # Aufruf der Key-Ersetzung replace_identity_file "$TMP_DEC" if [ -f "$CONFIG_FILE" ]; then @@ -123,8 +169,11 @@ case $OPTION in read -p "Port (Standard: 22 - Einfach Enter drücken): " NEW_PORT < /dev/tty NEW_PORT=${NEW_PORT:-22} - # Hier trägst du idealerweise einen Platzhalter ein, der später überschrieben wird - read -p "IdentityFile (z.B. Platzhalter 'IDENTITY_PLACEHOLDER' oder lokaler Pfad): " NEW_KEY < /dev/tty + # Integration der Key-Auswahl für neue Hosts + echo "" + echo "Wähle das IdentityFile für diesen Host:" + select_ssh_key + NEW_KEY="$SELECTED_KEY" read -p "Soll ServerAliveInterval gesetzt werden? (j/n): " ADD_ALIVE < /dev/tty