import_config.sh aktualisiert
This commit is contained in:
+61
-12
@@ -22,17 +22,64 @@ echo "======================="
|
|||||||
|
|
||||||
read -p "Wähle eine Option (1-5): " OPTION < /dev/tty
|
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() {
|
replace_identity_file() {
|
||||||
local target_file="$1"
|
local target_file="$1"
|
||||||
echo ""
|
echo ""
|
||||||
echo "--- Lokale Anpassung ---"
|
echo "--- Lokale Anpassung (IdentityFile) ---"
|
||||||
read -p "Pfad zum lokalen SSH-Key (z.B. ~/.ssh/id_ed25519) [Leer lassen für keine Änderung]: " LOCAL_KEY < /dev/tty
|
|
||||||
|
|
||||||
if [ -n "$LOCAL_KEY" ]; then
|
# Aufruf der neuen Key-Auswahl-Logik
|
||||||
# Ersetzt alle vorhandenen 'IdentityFile'-Einträge durch den angegebenen Pfad
|
select_ssh_key
|
||||||
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."
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +90,6 @@ case $OPTION in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "age wird dich nun nach einem Verschlüsselungskennwort fragen..."
|
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
|
age -p -a -o config.enc "$CONFIG_FILE" < /dev/tty
|
||||||
echo "Erfolg: Die Datei wurde als 'config.enc' (Textformat) erstellt."
|
echo "Erfolg: Die Datei wurde als 'config.enc' (Textformat) erstellt."
|
||||||
;;
|
;;
|
||||||
@@ -62,7 +108,7 @@ case $OPTION in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# IdentityFile automatisch für dieses System anpassen
|
# Aufruf der Key-Ersetzung
|
||||||
replace_identity_file "$TMP_DEC"
|
replace_identity_file "$TMP_DEC"
|
||||||
|
|
||||||
mkdir -p "$HOME/.ssh" && touch "$CONFIG_FILE"
|
mkdir -p "$HOME/.ssh" && touch "$CONFIG_FILE"
|
||||||
@@ -96,7 +142,7 @@ case $OPTION in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# IdentityFile automatisch für dieses System anpassen
|
# Aufruf der Key-Ersetzung
|
||||||
replace_identity_file "$TMP_DEC"
|
replace_identity_file "$TMP_DEC"
|
||||||
|
|
||||||
if [ -f "$CONFIG_FILE" ]; then
|
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
|
read -p "Port (Standard: 22 - Einfach Enter drücken): " NEW_PORT < /dev/tty
|
||||||
NEW_PORT=${NEW_PORT:-22}
|
NEW_PORT=${NEW_PORT:-22}
|
||||||
|
|
||||||
# Hier trägst du idealerweise einen Platzhalter ein, der später überschrieben wird
|
# Integration der Key-Auswahl für neue Hosts
|
||||||
read -p "IdentityFile (z.B. Platzhalter 'IDENTITY_PLACEHOLDER' oder lokaler Pfad): " NEW_KEY < /dev/tty
|
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
|
read -p "Soll ServerAliveInterval gesetzt werden? (j/n): " ADD_ALIVE < /dev/tty
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user