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"