import_config.sh aktualisiert
This commit is contained in:
+24
-16
@@ -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
|
||||
|
||||
# Aufruf der Key-Ersetzung
|
||||
rm -f "$TMP_ENC" # Aufräumen der verschlüsselten Temp-Datei
|
||||
|
||||
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
|
||||
|
||||
# Aufruf der Key-Ersetzung
|
||||
rm -f "$TMP_ENC"
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user