#!/bin/bash # ========== Globale Defaults ========== DEFAULT_SSH_USER="root" DEFAULT_SSH_PORT=22 DEFAULT_SSH_KEY="/home/stefan/Nextcloud/SSH/SSH-Key/Lieblingsnetz/lieblingsnetz_key_rsa" # ========== Zieldefinitionen ========== # Format: Name|Host|[User]|[Port]|[Key] TARGET_LIST=( "100-Gogs-Git|192.168.1.100|stefan" "101-Immich|192.168.1.101" "103-LS25-Server|192.168.1.103|stefan" "104-Game-Server|192.168.1.104|stefan" "105-Sterling-PDF|192.168.1.105" "106-DynDNS Update|192.168.1.106|stefan" "107-Frigate-NVR|192.168.1.107" "108-Paperless-NGX-VM|192.168.1.108|stefan" "110-Homeassistant|192.168.1.110" "112-n8n|192.168.1.112|stefan" "113-Nginx-Proxy-Manager|192.168.1.113|stefan" "CX12-Nextcloud-Backup|188.245.170.72||2223" "Fungamer-Website|85.10.204.14|fungamer" ) # ========== Zielauswahl mit Nummern ========== echo "Verfügbare SSH-Ziele:" i=1 for entry in "${TARGET_LIST[@]}"; do IFS='|' read -r NAME HOST USER PORT KEY <<< "$entry" echo "$i) $NAME" ((i++)) done read -p "Nummer eingeben: " CHOICE # ========== Auswahl prüfen ========== if ! [[ "$CHOICE" =~ ^[0-9]+$ ]] || ((CHOICE < 1 || CHOICE > ${#TARGET_LIST[@]})); then echo "Ungültige Auswahl!" exit 1 fi TARGET="${TARGET_LIST[CHOICE-1]}" # ========== Konfiguration auflösen ========== IFS='|' read -r NAME HOST USER PORT KEY <<< "$TARGET" SSH_USER="${USER:-$DEFAULT_SSH_USER}" SSH_PORT="${PORT:-$DEFAULT_SSH_PORT}" SSH_KEY="${KEY:-$DEFAULT_SSH_KEY}" # ========== Berechtigungen prüfen ========== if [[ ! -f "$SSH_KEY" ]]; then echo "Fehler: SSH-Key '$SSH_KEY' existiert nicht." exit 1 fi if [[ $(stat -c "%a" "$SSH_KEY") != "600" ]]; then echo "Achtung: Berechtigungen für $SSH_KEY werden auf 600 gesetzt..." chmod 600 "$SSH_KEY" || { echo "Fehler beim Setzen der Berechtigungen."; exit 1; } fi # ========== Verbindung aufbauen ========== echo "Verbinde mit $NAME ($SSH_USER@$HOST:$SSH_PORT)..." ssh -i "$SSH_KEY" -p "$SSH_PORT" "$SSH_USER@$HOST"