#!/bin/bash set -e # Farbige Ausgaben GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Konfiguration CA_HOST="100.87.87.5" # IP der CA-VM CA_USER="alf" # Nutzer auf der CA-VM CA_PORT=22 # Port für SSH-Zugriff auf die CA CA_TARGET=2222 # Port für SSH-Zugriff auf Ziel-VM REMOTE_SIGN_SCRIPT="/home/alf/remote_sign.sh" TARGET_HOST="100.87.87.80" # Zielsystem (Rechner 2) SSH_USER="alf" # Ziel-Login-Benutzer KEY_DIR="./temp_keys" KEY_NAME="temp_user_key" VALIDITY=300 # 5 Minuten mkdir -p "$KEY_DIR" cd "$KEY_DIR" echo -e "${YELLOW}[*] Prüfe auf vorhandene temporäre Schlüssel...${NC}" if [[ -f "$KEY_NAME" || -f "${KEY_NAME}.pub" || -f "${KEY_NAME}-cert.pub" ]]; then echo -e "${YELLOW}[!] Vorherige temporäre Schlüssel werden gelöscht...${NC}" rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub" fi echo -e "${YELLOW}[*] Generiere temporären SSH-Key...${NC}" ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null echo -e "${YELLOW}[*] Sende Public Key zur CA (${CA_HOST})...${NC}" scp -P "$CA_PORT" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" || { echo -e "${RED}[!] Fehler beim Senden des Public Keys zur CA${NC}" exit 1 } echo -e "${YELLOW}[*] Fordere Signatur von CA an...${NC}" ssh -p "$CA_PORT" "${CA_USER}@${CA_HOST}" \ "$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" || { echo -e "${RED}[!] Fehler bei der Signierung durch die CA${NC}" exit 1 } echo -e "${YELLOW}[*] Lade signiertes Zertifikat von CA...${NC}" scp -P "$CA_PORT" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . || { echo -e "${RED}[!] Fehler beim Abrufen des Zertifikats von der CA${NC}" exit 1 } echo -e "${GREEN}[✓] Zertifikat erfolgreich erhalten${NC}" echo -e "${YELLOW}[*] Starte SSH-Verbindung zum Zielsystem (${TARGET_HOST}) über Port ${CA_TARGET}...${NC}" ssh -p "$CA_TARGET" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST"