From f5bc23801b21b98a57a85cb4115a7a1c37c4d73b Mon Sep 17 00:00:00 2001 From: alf Date: Mon, 17 Nov 2025 15:15:32 +0000 Subject: [PATCH] login.sh aktualisiert Unterscheidung zwischen Servern, die nur mittel PublicKey und solchen, die mit zertifizierten PublicKeys verbunden werden. Die Unterscheidung findet in Zeile 83 statt. Server, die hier eingetragen sind, werden nur mit dem PublicKey, dessen Pfad in Zeile 27 ("SIMPLE_KEY") angegeben ist, verbunden. --- login.sh | 67 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/login.sh b/login.sh index 80e4e4f..e4ac4a5 100755 --- a/login.sh +++ b/login.sh @@ -1,9 +1,9 @@ #!/bin/bash set -e -GIT_PFAD="$HOME/Gitea" +GIT_PFAD="$HOME/Dokumente/Gitea" source $GIT_PFAD/logger/logger.sh -LOGBUCH="$GIT_PFAD/logger/Logs/sshlogin.log" +LOGBUCH="$GIT_PFAD/logger/Logs/ssh-login.log" log_init "$LOGBUCH" log_start log_info "Starte sshlogin…" @@ -24,7 +24,7 @@ CA_PORT=2222 REMOTE_SIGN_SCRIPT="/home/alf/remote_sign.sh" # Pfad auf der CA-VM, wo das Script zum Signieren zu finden ist KEY_DIR="./temp_keys" KEY_NAME="temp_user_key" - +SIMPLE_KEY="/media/oberkoetter/schluessel1/id_oberkoetter" # Für das einfache Login ohne Zertifikat, aber mit PublicKey. Die Variable gibt die Lage des PubKeys an. # Prüfen, ob der CA-Schlüssel vorhanden ist if [[ ! -f "$CA_KEY_PATH" ]]; then @@ -54,6 +54,8 @@ declare -A HOSTS=( ["PROXI"]="100.87.87.100" ["MATE3"]="100.87.87.108" ["PC77"]="100.87.87.77" + ["Nextcloud PTV"]="cloud.ptv-euregio.de" + ["SPZSSH"]="alsdorf.spznord.de" ) TARGET_LABEL=$(gum choose --header "Zielsystem wählen" "${!HOSTS[@]}") @@ -76,35 +78,46 @@ VALIDITY_OPTIONS=("300" "600" "1800" "3600") # Sekunden VALIDITY=$(gum choose --header "Gültigkeitsdauer des Zertifikats wählen (Sekunden)" "${VALIDITY_OPTIONS[@]}") log_info "Zertifikatsgültigkeit: $VALIDITY Sekunden" -# Schlüssel vorbereiten -mkdir -p "$KEY_DIR" -cd "$KEY_DIR" +# Hier unterscheiden zwischen Servern, die mittels einfachem PublicKey-Verfahren und solchen, die per zertifiziertem Schlüssel angesteuert werden. +case $TARGET_LABEL in + "Nextcloud PTV" | "SPZSSH") + log_info "Einfaches Login mit statischen PublicKey..." + ssh -p "$TARGET_PORT" -i "$SIMPLE_KEY" "$SSH_USER@$TARGET_HOST" + log_info " ERR: $?" + ;; + + *) + # Schlüssel vorbereiten + mkdir -p "$KEY_DIR" + cd "$KEY_DIR" -log_info "Prüfe auf vorhandene temporäre Schlüssel" -rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub" + log_info "Prüfe auf vorhandene temporäre Schlüssel" + rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub" -log_info "Generiere temporären SSH-Key" -ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null + log_info "Generiere temporären SSH-Key" + ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null -log_info "Sende Public Key zur CA (${CA_HOST})" -scp -P "$CA_PORT" -i "$CA_KEY_PATH" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" || { - log_error "Fehler beim Senden des Public Keys zur CA" - exit 1 -} + log_info "Sende Public Key zur CA (${CA_HOST})" + scp -P "$CA_PORT" -i "$CA_KEY_PATH" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" || { + log_error "Fehler beim Senden des Public Keys zur CA" + exit 1 + } -log_info "Fordere Signatur von CA an..." -ssh -i "$CA_KEY_PATH" -p "$CA_PORT" "${CA_USER}@${CA_HOST}" "$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" || { - log_error "Fehler bei der Signierung durch die CA" - exit 1 -} + log_info "Fordere Signatur von CA an..." + ssh -i "$CA_KEY_PATH" -p "$CA_PORT" "${CA_USER}@${CA_HOST}" "$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" || { + log_error "Fehler bei der Signierung durch die CA" + exit 1 + } -log_info "Lade signiertes Zertifikat von CA" -scp -P "$CA_PORT" -i "$CA_KEY_PATH" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . || { - log_error "Fehler beim Abrufen des Zertifikats von der CA" - exit 1 -} + log_info "Lade signiertes Zertifikat von CA" + scp -P "$CA_PORT" -i "$CA_KEY_PATH" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . || { + log_error "Fehler beim Abrufen des Zertifikats von der CA" + exit 1 + } -log_info "Zertifikat erfolgreich erhalten – starte SSH-Verbindung" -ssh -p "$TARGET_PORT" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST" + log_info "Zertifikat erfolgreich erhalten – starte SSH-Verbindung" + ssh -p "$TARGET_PORT" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST" + ;; +esac log_end "SSH-Login abgeschlossen"