Compare commits

..

31 Commits

Author SHA1 Message Date
alf
a6920c5a27 README.md aktualisiert 2026-03-03 19:48:07 +00:00
alf
252da4cc76 login.sh aktualisiert 2025-11-23 12:47:49 +00:00
alf
9c3fb71f98 login.sh aktualisiert 2025-11-23 12:43:37 +00:00
alf
15cf1dd22b login.sh aktualisiert 2025-11-23 12:42:09 +00:00
alf
fd2989d438 login.sh aktualisiert 2025-11-23 12:12:29 +00:00
alf
f5bc23801b 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.
2025-11-17 15:15:32 +00:00
alf
ad8862a479 README.md aktualisiert 2025-10-16 20:20:07 +00:00
alf
805902ca3d login.sh aktualisiert 2025-09-12 06:21:47 +00:00
alf
2006178a48 log/logging.sh gelöscht 2025-09-04 11:48:08 +00:00
alf
64b809c7e5 .gitignore aktualisiert 2025-09-04 11:47:25 +00:00
alf
bd60a23f92 rclonecloner.sh gelöscht 2025-09-04 11:47:02 +00:00
alf
0da8269097 login.sh aktualisiert 2025-09-04 11:38:21 +00:00
alf
a09e7bc912 Merge pull request 'login.sh aktualisiert' (#1) from port222aufca into main
Reviewed-on: #1
2025-09-04 11:37:35 +00:00
alf
783f26102d login.sh aktualisiert 2025-09-04 10:56:28 +00:00
alf
5efa222aec login.sh aktualisiert
Logging korritigiert
2025-09-04 10:38:12 +00:00
alf
209648e346 login.sh aktualisiert 2025-09-04 09:55:50 +00:00
alf
2f9b5d43a2 login.sh aktualisiert
Server3 hinzugefügt.
2025-09-04 09:52:38 +00:00
alf
9365f7622a README.md aktualisiert 2025-08-29 07:39:00 +00:00
alf
b4eb2a54d2 login.sh aktualisiert
Logger berichtigt
2025-08-15 16:38:51 +00:00
Alf
3102a9fc76 2025-07-30-2 2025-07-30 11:03:05 +02:00
Alf
2b2a0434ab 2025-07-30 2025-07-30 11:00:23 +02:00
Alf
18c207b771 Nach Konflikt 2025-07-29 16:00:24 +02:00
Alf
63ac5b74d1 Abgleich 2025-07-29 2025-07-29 15:53:11 +02:00
alf
0b05112d36 login.sh aktualisiert
* Pfad zum id_ca-Schlüssel bei scp eingeführt
* PC 77 und MATE3 hinzugefügt
2025-07-14 14:44:40 +00:00
alf
de52b1181a login.sh aktualisiert 2025-07-14 14:33:39 +00:00
alf
f12d06dcbd README.md aktualisiert 2025-07-11 19:15:58 +00:00
alf
f03d2b33b2 README.md aktualisiert 2025-07-11 19:14:56 +00:00
alf
7899c24242 log/rotate.sh hinzugefügt 2025-07-11 19:10:26 +00:00
6c2ae7637b Merge branch 'main' of http://100.87.87.6:3000/alf/ssh-cert-login
Nach Änderungen lokal und im Repo
2025-07-03 22:44:11 +02:00
d2d50149ba Anpassungen im Log und testen, ob PublicKey zur CA vorhanden ist. 2025-07-03 22:42:27 +02:00
3f0a97eb92 Vergiß ssh-cert-login.log 2025-07-03 21:05:59 +02:00
7 changed files with 124 additions and 149 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
# Log-Verzeichnis und Dateien (Logdateien nie committen)
log/
*.log
# Temporäre SSH Keys
temp_keys/

View File

@ -42,8 +42,8 @@ Dieses Projekt ermöglicht eine einfache und sichere Anmeldung per SSH auf mehre
### Hinweis zur CA-Authentifizierung
Das Skript prüft automatisch, ob der SSH-Private-Key `id_ca` (Standardpfad: `~/.ssh/id_ca`) vorhanden ist.
Dieser Schlüssel wird zur Authentifizierung auf der CA-VM benötigt, um die Signaturanfrage abzusenden.
Das Skript prüft automatisch, ob der SSH-Private-Key `ca_key.pub` (Standardpfad: `~/.ssh/ca_key.pub`) vorhanden ist.
Dieser Schlüssel wird zur Authentifizierung auf der CA-VM benötigt, um die Signaturanfrage abzusenden. Muss lokal per ssh-keygen erstellt und mit ssh-copy-id auf die CA übertragen werden.
Falls die Datei nicht vorhanden ist, bricht das Skript mit einer Fehlermeldung ab.
@ -53,7 +53,13 @@ Falls die Datei nicht vorhanden ist, bricht das Skript mit einer Fehlermeldung a
## Installation
1. `gum` installieren (z.B. via `brew install gum` oder Snap/Paketmanager)
1. `gum` installieren:
```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install gum
```
2. Alle Skripte und Verzeichnisse in ein Git-Repository klonen oder kopieren
@ -69,6 +75,17 @@ Falls die Datei nicht vorhanden ist, bricht das Skript mit einer Fehlermeldung a
mkdir -p log
```
6. Im Log-Verzeichnis die Datei rotate.cfg anlegen, meist mit diesen Parametern:
```bash
/var/log/my_app/*.log {
daily
rotate 7
compress
missingok
notifempty
dateext
}
```
---
## Nutzung

38
id_ca
View File

@ -1,38 +0,0 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

View File

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2VrWLyOnW5eHKAASFtxvHEnvL1unTHHsvb4ndNAxmhU+4gOMddRvghFymcQS4VmqIErCOKHg36AjzPp3oBw9AL1HPw7nf+SUbZQi9iKhbs1+lC0fNqRQm9CY4t+tjAC8AwxN4os1yvVwmyXqaFTaArRAk1BCOP2gQBr7OmO0ECVTtXXKjyAxnvp/4GouU9KTjs+tDAYbcQz5H6yXlwhDjqO65X1HBC61wDo8FTqeIWI215j0pfgE5YNURJgOkmjcs34IxrgyRt32fKaXZNXRbDOc1OAwAm3Sk7yGiuwTohp5HsnYp8yQjTz50OlyZuyT1g3y5Dkz5ISKsZeQ2Uag9DLjhXxAUF8G2oFOs0z9IU9LKrv89A9xDUFsoMtI6dnUAOHWBhyUDxSgYWT87bmsUoHZ17zyp2I6QzG6olGH5bUoq/ApuxfnTvIie/ZeVoC0jPvys4MOPMANNJNNrSkO++2vy6eOhcEvSWaFkg8oHabOr4cCblueIFhV+sp6ObDM= oberkoetter@PC7-77

View File

View File

@ -1,32 +0,0 @@
#!/bin/bash
DEFAULT_LOG_FILE="./log/log.txt"
ACTIVE_LOG_FILE="/home/oberkoetter/Dokumente/Git/log.txt"
log_init() {
ACTIVE_LOG_FILE="${1:-$DEFAULT_LOG_FILE}"
mkdir -p "$(dirname "${ACTIVE_LOG_FILE}")"
}
_log_dual() {
local level="$1"
local message="$2"
local timestamp
timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
local line="${timestamp} [${level}] ${message}"
echo "$line" # Konsole
echo "$line" >> "${ACTIVE_LOG_FILE}" # Logdatei
}
log_info() { _log_dual "INFO" "$1"; }
log_warn() { _log_dual "WARN" "$1"; }
log_error() { _log_dual "ERROR" "$1"; }
log_start() {
echo "" | tee -a "${ACTIVE_LOG_FILE}"
_log_dual "START" "--- $1 gestartet ---"
}
log_end() {
_log_dual "END" "--- $1 abgeschlossen ---"
echo "" | tee -a "${ACTIVE_LOG_FILE}"
}

172
login.sh Normal file → Executable file
View File

@ -1,5 +1,12 @@
#!/bin/bash
set -e
GIT_PFAD="$HOME/Gitea"
source $GIT_PFAD/logger/logger.sh
LOGBUCH="$GIT_PFAD/logger/Logs/ssh-login.log"
log_init "$LOGBUCH"
log_start
log_info "Starte sshlogin…"
# Farben
GREEN='\033[0;32m'
@ -7,100 +14,121 @@ YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Pfad zum Script-Verzeichnis
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# CA-Auth Schlüssel
CA_KEY_PATH="$HOME/.ssh/id_ca"
# Logging-Script einbinden
source "$SCRIPT_DIR/log/logging.sh"
# Logdatei im log/-Verzeichnis
LOG_FILE="$SCRIPT_DIR/log/ssh-cert-login.log"
log_init "$LOG_FILE"
log_start "SSH Zertifikat Login"
# Config CA und Ziel (Standardwerte)
# Config
CA_HOST="100.87.87.5"
CA_USER="alf"
CA_PORT=22
REMOTE_SIGN_SCRIPT="/home/alf/remote_sign.sh"
KEY_DIR="$SCRIPT_DIR/temp_keys"
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"
CA_SSH_KEY="$HOME/.ssh/id_ca"
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.
# Gum Check
if ! command -v gum &> /dev/null; then
log_error "gum ist nicht installiert. Bitte zuerst installieren."
# Prüfen, ob der CA-Schlüssel vorhanden ist
if [[ ! -f "$CA_KEY_PATH" ]]; then
echo -e "${RED}[!] CA-SSH-Schlüssel ($CA_KEY_PATH) nicht gefunden. Vorgang wird abgebrochen.${NC}"
echo "Bitte stelle sicher, dass ~/.ssh/id_ca vorhanden und korrekt gesetzt ist."
log_error "Kein Publickey zur CA-VM!"
exit 1
fi
# VM Alias → IP Map
declare -A VM_MAP=(
[Server1]="100.87.87.101"
[ABS]="100.87.87.102"
[OMVPi]="100.87.87.80"
[OMV2000]="100.87.87.81"
# Gum Check
if ! command -v gum &> /dev/null; then
echo -e "${RED}[!] gum ist nicht installiert. Bitte zuerst installieren.${NC}"
log_error "GUM nicht installiert!"
exit 1
fi
# Ziel-Host-Auswahl
declare -A HOSTS=(
["Server1"]="100.87.87.101"
["Server3"]="100.87.87.103"
["ABS"]="100.87.87.102"
["OMVPi"]="100.87.87.80"
["OMV2000"]="100.87.87.81"
["CA"]="100.87.87.5"
["PHOSCON"]="100.87.87.90"
["DIETPI"]="100.87.87.4"
["PROXI"]="100.87.87.100"
["MATE3"]="100.87.87.108"
["PC77"]="100.87.87.77"
["Nextcloud PTV"]="cloud.ptv-euregio.de"
["Nextcloud Alf"]="wralto.org"
["SPZSSH"]="alsdorf.spznord.de"
)
# Auswahl der VM per Alias mit gum choose
VM_ALIAS=$(gum choose --header "Wähle die Ziel-VM" "${!VM_MAP[@]}")
TARGET_HOST="${VM_MAP[$VM_ALIAS]}"
TARGET_LABEL=$(gum choose --header "Zielsystem wählen" "${!HOSTS[@]}")
# Benutzer-Auswahl mit festen Optionen + freie Eingabe
USER_OPTIONS=("alf" "root" "oberkoetter" "Anderer Benutzer")
SELECTED_USER=$(gum choose --header "Wähle den SSH-Benutzer" "${USER_OPTIONS[@]}")
if [ "$SELECTED_USER" == "Anderer Benutzer" ]; then
SSH_USER=$(gum input --placeholder "Benutzername eingeben")
else
SSH_USER="$SELECTED_USER"
fi
# Hier unterscheiden zwischen Servern, die mittels einfachem PublicKey-Verfahren und solchen, die per zertifiziertem Schlüssel angesteuert werden.
case $TARGET_LABEL in
"Nextcloud Alf")
log_info "Einfaches Login Nextcloud3"
ssh ssh-test90969@wralto.org
log_info "Nextcloud3 fertig. ERR: $?"
;;
TARGET_PORT=$(gum input --placeholder "Ziel SSH Port" --value "2222")
"Nextcloud PTV" | "SPZSSH")
log_info "Einfaches Login mit statischen PublicKey..."
TARGET_PORT="22"
ssh -p "$TARGET_PORT" -i "$SIMPLE_KEY" "$SSH_USER@$TARGET_HOST"
log_info " ERR: $?"
;;
VALIDITY_OPTIONS=("300" "600" "1800" "3600") # Sek. 5min, 10min, 30min, 1h
VALIDITY=$(gum choose --header "Gültigkeitsdauer des Zertifikats wählen" "${VALIDITY_OPTIONS[@]}")
*)
TARGET_HOST="${HOSTS[$TARGET_LABEL]}"
log_info "Zielsystem gewählt: $TARGET_LABEL ($TARGET_HOST)"
# Logge die Ziel-VM und den SSH-Benutzer
log_info "Ziel-VM: $VM_ALIAS ($TARGET_HOST)"
log_info "SSH-Benutzer: $SSH_USER"
TARGET_PORT=$(gum input --placeholder "Ziel SSH Port" --value "2222")
log_info "SSH-Port: $TARGET_PORT"
# Keys vorbereiten
mkdir -p "$KEY_DIR"
cd "$KEY_DIR"
# Benutzer-Auswahl
USER_CHOICES=("alf" "root" "oberkoetter" "Benutzer manuell eingeben")
SSH_USER=$(gum choose --header "SSH-Benutzer wählen" "${USER_CHOICES[@]}")
if [[ "$SSH_USER" == "Benutzer manuell eingeben" ]]; then
SSH_USER=$(gum input --placeholder "SSH Benutzername")
fi
log_info "Verwendeter Benutzer: $SSH_USER"
log_info "Prüfe auf vorhandene temporäre Schlüssel..."
if [[ -f "$KEY_NAME" || -f "${KEY_NAME}.pub" || -f "${KEY_NAME}-cert.pub" ]]; then
log_warn "Vorherige temporäre Schlüssel werden gelöscht..."
rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub"
fi
# Gültigkeit wählen
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"
log_info "Generiere temporären SSH-Key..."
ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null
# Schlüssel vorbereiten
mkdir -p "$KEY_DIR"
cd "$KEY_DIR"
log_info "Sende Public Key zur CA (${CA_HOST})..."
scp -i "$CA_SSH_KEY" -P "$CA_PORT" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" || {
log_error "Fehler beim Senden des Public Keys zur CA"
exit 1
}
log_info "Prüfe auf vorhandene temporäre Schlüssel"
rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub"
log_info "Fordere Signatur von CA an..."
ssh -i "$CA_SSH_KEY" -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 "Generiere temporären SSH-Key"
ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null
log_info "Lade signiertes Zertifikat von CA..."
scp -i "$CA_SSH_KEY" -P "$CA_PORT" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . || {
log_error "Fehler beim Abrufen des Zertifikats von der 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 "Zertifikat erfolgreich erhalten"
log_info "Starte SSH-Verbindung zum Zielsystem (${VM_ALIAS} / ${TARGET_HOST}) über Port ${TARGET_PORT}..."
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
}
ssh -p "$TARGET_PORT" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST"
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_end "SSH Zertifikat Login"
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"