Files
ssh-cert-auth/client/get_cert_and_connect.sh
2025-06-30 22:13:50 +02:00

56 lines
2.0 KiB
Bash

#!/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"