diff --git a/ca/remote_sign.sh b/ca/remote_sign.sh new file mode 100644 index 0000000..8cbc77d --- /dev/null +++ b/ca/remote_sign.sh @@ -0,0 +1,13 @@ +#!/bin/bash +PUBKEY="$1" +USER="$2" +VALIDITY_SECONDS="$3" + +CERTFILE="${PUBKEY/.pub/-cert.pub}" + +ssh-keygen -s /home/alf/ca_key \ + -I "$USER@temp" \ + -n "$USER" \ + -V +0s:+${VALIDITY_SECONDS}s \ + -z $(date +%s) \ + "$PUBKEY" && echo "OK: Signed $CERTFILE" diff --git a/client/get_cert_and_connect.sh b/client/get_cert_and_connect.sh new file mode 100644 index 0000000..c522eb1 --- /dev/null +++ b/client/get_cert_and_connect.sh @@ -0,0 +1,55 @@ +#!/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" diff --git a/client/get_cert_and_connect.sh.old b/client/get_cert_and_connect.sh.old new file mode 100644 index 0000000..df882fd --- /dev/null +++ b/client/get_cert_and_connect.sh.old @@ -0,0 +1,33 @@ +#!/bin/bash +set -e + +# Konfiguration +CA_HOST="100.87.87.5" # Hostname oder IP der CA-VM +CA_USER="alf" # Nutzer auf CA-VM +CA_PORT=22 # Port SSH-Zugang CA +CA_TARGET=2222 # Port SSH-Zugang 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" + +# 1. Temporären Key erzeugen +ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null + +# 2. Public Key zur CA kopieren +scp -P "$CA_PORT" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" + +# 3. Signaturprozess auf CA anstoßen +ssh -p "$CA_PORT" "${CA_USER}@${CA_HOST}" \ + "$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" + +# 4. Zertifikat zurückholen +scp -P "$CA_PORT" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . + +# 5. Verbindung aufbauen zum Zielsystem über alternativen Port +ssh -p "$CA_TARGET" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST" diff --git a/client/temp_keys/temp_user_key b/client/temp_keys/temp_user_key new file mode 100644 index 0000000..51f9a11 --- /dev/null +++ b/client/temp_keys/temp_user_key @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +5W+fi3Ir/XS+cAAAAIYWxmQHRlbXABAgM= +-----END OPENSSH PRIVATE KEY----- diff --git a/client/temp_keys/temp_user_key.pub b/client/temp_keys/temp_user_key.pub new file mode 100644 index 0000000..0021e49 --- /dev/null +++ b/client/temp_keys/temp_user_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIe+ZzHQUP2KdV0FyrM8kx0cf09Q7wpJSkRcgFfYmbRZuIN26NXXQjVc0bs+9Ma9JiILoWCR+7xI8mFyg508CnMsftkN0yc0e+fXVmQYIm+n9LYfxgA5yz/8WprYkzUWabad7560Qc4tpiVk6rRyCjkgtQWUvKxyJdBLKEPtFa7ShxZYSQ0nh8n3DJkqM97inBTN+WQezWh3cmPFQ2IOratDWPxqZ8Jstp7c5z1mCQf6obd2N7ND1shxZhjwOBIrn8MOOaH9NdetAU+yVocy4ZcarLVJmeD9eBAPIB5tt3R07aljGtLYNxpCZQsZNN/hiLuO3qIPgDD/g/3dlGUswPN015aj5knL/avtpTtu4ORX4qTFv9AZsG5914xiBd5ubGscHCxe1g9VEQAhsY1nOsPSqco2VxFIdv+PVGitCqT6LpTqbXYWNhCyr25mPlZxR1T2oAdBRP/tU0CbS1u8/PNbbYM8tOo09kJsVXPrAor4C66y3aAnJaoxacleSaeHE= alf@temp