import_config.sh aktualisiert

This commit is contained in:
2026-05-16 13:52:23 +02:00
parent ae99f4ba46
commit 8505c4dc87
+24 -16
View File
@@ -25,18 +25,16 @@ read -p "Wähle eine Option (1-5): " OPTION < /dev/tty
# Globale Variable für den ausgewählten Key # Globale Variable für den ausgewählten Key
SELECTED_KEY="" SELECTED_KEY=""
# Neue Funktion zur interaktiven Key-Auswahl # Funktion zur interaktiven Key-Auswahl
select_ssh_key() { select_ssh_key() {
local keys=() local keys=()
# Finde alle echten Private Keys im .ssh Ordner
if [ -d "$HOME/.ssh" ]; then if [ -d "$HOME/.ssh" ]; then
while IFS= read -r line; do while IFS= read -r line; do
keys+=("$line") keys+=("$line")
done < <(grep -rl "PRIVATE KEY" "$HOME/.ssh" 2>/dev/null) done < <(grep -rl "PRIVATE KEY" "$HOME/.ssh" 2>/dev/null)
fi fi
# Fallback, falls keine Keys gefunden wurden
if [ ${#keys[@]} -eq 0 ]; then if [ ${#keys[@]} -eq 0 ]; then
echo "Keine SSH-Schlüssel automatisch gefunden." echo "Keine SSH-Schlüssel automatisch gefunden."
read -p "Pfad zum SSH-Key (manuell eingeben, leer = überspringen): " SELECTED_KEY < /dev/tty read -p "Pfad zum SSH-Key (manuell eingeben, leer = überspringen): " SELECTED_KEY < /dev/tty
@@ -71,11 +69,9 @@ replace_identity_file() {
echo "" echo ""
echo "--- Lokale Anpassung (IdentityFile) ---" echo "--- Lokale Anpassung (IdentityFile) ---"
# Aufruf der neuen Key-Auswahl-Logik
select_ssh_key select_ssh_key
if [ -n "$SELECTED_KEY" ]; then 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" 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." echo "Erfolg: Alle IdentityFile-Einträge wurden für diesen PC auf '$SELECTED_KEY' geändert."
else else
@@ -95,20 +91,28 @@ case $OPTION in
;; ;;
2) 2)
echo "--- Entschlüsselte Config ---" 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 "-----------------------------" echo "-----------------------------"
;; ;;
3) 3)
TMP_ENC=$(mktemp)
TMP_DEC=$(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..."
echo "Fehler: Entschlüsselung fehlgeschlagen (falsches Passwort/Netzwerkfehler)." curl -sL "$REMOTE_ENC_URL" -o "$TMP_ENC"
rm -f "$TMP_DEC"
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 exit 1
fi fi
rm -f "$TMP_ENC" # Aufräumen der verschlüsselten Temp-Datei
# 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"
@@ -133,16 +137,21 @@ case $OPTION in
rm -f "$TMP_DEC" rm -f "$TMP_DEC"
;; ;;
4) 4)
TMP_ENC=$(mktemp)
TMP_DEC=$(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." echo "Fehler: Entschlüsselung fehlgeschlagen."
rm -f "$TMP_DEC" rm -f "$TMP_ENC" "$TMP_DEC"
exit 1 exit 1
fi fi
rm -f "$TMP_ENC"
# Aufruf der Key-Ersetzung
replace_identity_file "$TMP_DEC" replace_identity_file "$TMP_DEC"
if [ -f "$CONFIG_FILE" ]; then 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 read -p "Port (Standard: 22 - Einfach Enter drücken): " NEW_PORT < /dev/tty
NEW_PORT=${NEW_PORT:-22} NEW_PORT=${NEW_PORT:-22}
# Integration der Key-Auswahl für neue Hosts
echo "" echo ""
echo "Wähle das IdentityFile für diesen Host:" echo "Wähle das IdentityFile für diesen Host:"
select_ssh_key select_ssh_key