Compare commits

...

28 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
5 changed files with 102 additions and 86 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
# Log-Verzeichnis und Dateien (Logdateien nie committen)
log/ssh-cert-login.log
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

View File

View File

@ -1,32 +0,0 @@
#!/bin/bash
DEFAULT_LOG_FILE="./log-default.txt"
ACTIVE_LOG_FILE="./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}"
}

54
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'
@ -13,19 +20,11 @@ CA_KEY_PATH="$HOME/.ssh/id_ca"
# Config
CA_HOST="100.87.87.5"
CA_USER="alf"
CA_PORT=22
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"
LOG_DIR="$HOME/Gitea/ssh-cert-login/log"
LOG_SCRIPT="${LOG_DIR}/logging.sh"
LOG_FILE="${LOG_DIR}/ssh-cert-login.log"
# Logging initialisieren
source "$LOG_SCRIPT"
log_init "$LOG_FILE"
log_start "SSH-Login über CA-Zertifikat"
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
@ -42,15 +41,44 @@ if ! command -v gum &> /dev/null; then
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"
)
TARGET_LABEL=$(gum choose --header "Zielsystem wählen" "${!HOSTS[@]}")
# 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: $?"
;;
"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: $?"
;;
*)
TARGET_HOST="${HOSTS[$TARGET_LABEL]}"
log_info "Zielsystem gewählt: $TARGET_LABEL ($TARGET_HOST)"
@ -81,7 +109,7 @@ 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" "${KEY_NAME}.pub" "${CA_USER}@${CA_HOST}:/tmp/" || {
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
}
@ -93,12 +121,14 @@ ssh -i "$CA_KEY_PATH" -p "$CA_PORT" "${CA_USER}@${CA_HOST}" "$REMOTE_SIGN_SC
}
log_info "Lade signiertes Zertifikat von CA"
scp -P "$CA_PORT" "${CA_USER}@${CA_HOST}:/tmp/${KEY_NAME}-cert.pub" . || {
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"
;;
esac
log_end "SSH-Login abgeschlossen"