Compare commits

..

35 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
alf
38c23e5193 README.md aktualisiert 2025-07-03 20:03:21 +00:00
3f0a97eb92 Vergiß ssh-cert-login.log 2025-07-03 21:05:59 +02:00
alf
626f4b6711 README.md hinzugefügt 2025-07-03 11:01:55 +00:00
Alf
0d0f62640b Nach gitignore 2025-07-03 12:16:30 +02:00
Alf
21d9665830 Mit gitignore 2025-07-03 12:14:05 +02:00
11 changed files with 280 additions and 223 deletions

25
.gitignore vendored Normal file
View File

@ -0,0 +1,25 @@
# Log-Verzeichnis und Dateien (Logdateien nie committen)
log/
*.log
# Temporäre SSH Keys
temp_keys/
# MacOS Finder Files
.DS_Store
# Vim Swap Files
*.swp
# Backup Files
*~
# Ausgewählte Editor- oder IDE-Settings (falls verwendet)
.vscode/
.idea/
# Private Schlüssel (falls aus Versehen im Projektverzeichnis)
*.pem
*.key
id_ca

153
README.md Normal file
View File

@ -0,0 +1,153 @@
# SSH-Zertifikats-Login mit zentraler CA
Dieses Projekt ermöglicht eine einfache und sichere Anmeldung per SSH auf mehreren Servern über kurzzeitige, von einer zentralen Zertifizierungsstelle (CA) signierte SSH-Zertifikate.
---
## Features
- Zentrale SSH CA zur Signierung temporärer SSH-Schlüssel
- Automatisches Erzeugen und Signieren von SSH-Keys
- Interaktive Auswahl der Ziel-VM, des Benutzers und der Zertifikatsgültigkeit über `gum`
- Logging aller wichtigen Aktionen (Konsole + Logdatei)
- Schutz der privaten CA-Schlüssel durch zentrale Signatur-VM
- Flexible Erweiterbarkeit
---
## Verzeichnisstruktur
```
.
├── log/ # Logs und Logging-Script
│ ├── logging.sh
│ └── ssh-cert-login.log
├── temp_keys/ # Temporäre SSH-Schlüssel werden hier erzeugt
├── login.sh # Hauptscript für Zertifikatserstellung und SSH-Login
├── remote_sign.sh # Remote-Skript auf der CA-VM zur Signatur
├── .gitignore # Git Ignore für Logs, temporäre Keys, etc.
└── README.md # Diese Datei
```
---
## Voraussetzungen
- Bash unter Linux/macOS
- `ssh` und `ssh-keygen`
- `scp` für Dateiübertragungen
- `gum` (https://github.com/charmbracelet/gum) für das interaktive Terminal-Menü
- Zugriff auf eine CA-VM mit privatem CA-Key und dem `remote_sign.sh` Script
- SSH-Key für Anmeldung an der CA-VM (`id_ca` o.ä.)
### Hinweis zur CA-Authentifizierung
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.
👉 **Lösung:** Stelle sicher, dass sich dein Private Key `id_ca` im richtigen Verzeichnis befindet und per `chmod 600 ~/.ssh/id_ca` korrekt geschützt ist. Optional kannst du den Pfad im Skript `login.sh` anpassen, falls du einen anderen Schlüssel verwenden möchtest.
---
## Installation
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
3. CA-VM korrekt konfigurieren (privater CA-Key, `remote_sign.sh`)
4. `login.sh` ausführbar machen:
```bash
chmod +x login.sh
```
5. Log-Verzeichnis anlegen (falls nicht vorhanden):
```bash
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
Starte das Login-Skript:
```bash
./login.sh
```
- Wähle die Ziel-VM aus der Liste
- Wähle den SSH-Benutzer (vordefiniert oder eigene Eingabe)
- Wähle die Gültigkeitsdauer des Zertifikats
- Das Skript generiert einen temporären SSH-Key, sendet den Public Key zur CA, holt das signierte Zertifikat zurück und startet die SSH-Verbindung zum Ziel
---
## Sicherheitshinweise
- Der private CA-Schlüssel sollte ausschließlich auf der CA-VM gespeichert und geschützt werden
- Temporäre SSH-Keys sind nur kurz gültig (Standard 5 Minuten)
- Logdateien enthalten keine privaten Schlüssel, aber Pfadangaben und Benutzerinformationen vor unberechtigtem Zugriff schützen
---
## Lizenz
MIT License (oder nach Wunsch anpassen)
---
## Kontakt
Bei Fragen oder Problemen gerne melden!
---
**Viel Erfolg mit deinem zentralen SSH-Zertifikats-Login!**
---
## Gum installieren (falls nicht vorhanden)
Falls `gum` noch nicht installiert ist, kannst du es direkt von GitHub beziehen:
```bash
# Neueste Version ermitteln
GUM_VERSION=$(curl -s https://api.github.com/repos/charmbracelet/gum/releases/latest | grep tag_name | cut -d '"' -f 4)
# Download für Linux x86_64
curl -L "https://github.com/charmbracelet/gum/releases/download/${GUM_VERSION}/gum_${GUM_VERSION#v}_Linux_x86_64.tar.gz" -o gum.tar.gz
# Entpacken
tar -xzf gum.tar.gz
# Nach /usr/local/bin verschieben
sudo install gum /usr/local/bin
# Testen
gum --version
```
Alternativ findest du alle Releases unter:
👉 https://github.com/charmbracelet/gum/releases

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}"
}

View File

@ -1,38 +0,0 @@
2025-07-03 11:47:05 [START] --- SSH Zertifikat Login gestartet ---
2025-07-03 11:47:08 [INFO] Prüfe auf vorhandene temporäre Schlüssel...
2025-07-03 11:47:08 [WARN] Vorherige temporäre Schlüssel werden gelöscht...
2025-07-03 11:47:08 [INFO] Generiere temporären SSH-Key...
2025-07-03 11:47:08 [INFO] Sende Public Key zur CA (100.87.87.5)...
2025-07-03 11:47:09 [INFO] Fordere Signatur von CA an...
2025-07-03 11:47:09 [INFO] Lade signiertes Zertifikat von CA...
2025-07-03 11:47:10 [INFO] Zertifikat erfolgreich erhalten
2025-07-03 11:47:10 [INFO] Starte SSH-Verbindung zum Zielsystem (OMV2000 / 100.87.87.81) über Port 2222...
2025-07-03 11:49:53 [START] --- SSH Zertifikat Login gestartet ---
2025-07-03 11:50:04 [INFO] Prüfe auf vorhandene temporäre Schlüssel...
2025-07-03 11:50:04 [WARN] Vorherige temporäre Schlüssel werden gelöscht...
2025-07-03 11:50:04 [INFO] Generiere temporären SSH-Key...
2025-07-03 11:50:04 [INFO] Sende Public Key zur CA (100.87.87.5)...
2025-07-03 11:50:05 [INFO] Fordere Signatur von CA an...
2025-07-03 11:50:05 [INFO] Lade signiertes Zertifikat von CA...
2025-07-03 11:50:06 [INFO] Zertifikat erfolgreich erhalten
2025-07-03 11:50:06 [INFO] Starte SSH-Verbindung zum Zielsystem (OMVPi / 100.87.87.80) über Port 2222...
2025-07-03 11:50:15 [END] --- SSH Zertifikat Login abgeschlossen ---
2025-07-03 11:51:58 [START] --- SSH Zertifikat Login gestartet ---
2025-07-03 11:54:27 [START] --- SSH Zertifikat Login gestartet ---
2025-07-03 11:54:32 [INFO] Ziel-VM: OMV2000 (100.87.87.81)
2025-07-03 11:54:32 [INFO] SSH-Benutzer: alf
2025-07-03 11:54:32 [INFO] Prüfe auf vorhandene temporäre Schlüssel...
2025-07-03 11:54:32 [WARN] Vorherige temporäre Schlüssel werden gelöscht...
2025-07-03 11:54:32 [INFO] Generiere temporären SSH-Key...
2025-07-03 11:54:33 [INFO] Sende Public Key zur CA (100.87.87.5)...
2025-07-03 11:54:33 [INFO] Fordere Signatur von CA an...
2025-07-03 11:54:34 [INFO] Lade signiertes Zertifikat von CA...
2025-07-03 11:54:34 [INFO] Zertifikat erfolgreich erhalten
2025-07-03 11:54:34 [INFO] Starte SSH-Verbindung zum Zielsystem (OMV2000 / 100.87.87.81) über Port 2222...
2025-07-03 11:54:37 [END] --- SSH Zertifikat Login abgeschlossen ---

158
login.sh Normal file → Executable file
View File

@ -1,5 +1,12 @@
#!/bin/bash #!/bin/bash
set -e 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 # Farben
GREEN='\033[0;32m' GREEN='\033[0;32m'
@ -7,100 +14,121 @@ YELLOW='\033[1;33m'
RED='\033[0;31m' RED='\033[0;31m'
NC='\033[0m' # No Color NC='\033[0m' # No Color
# Pfad zum Script-Verzeichnis # CA-Auth Schlüssel
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CA_KEY_PATH="$HOME/.ssh/id_ca"
# Logging-Script einbinden # Config
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)
CA_HOST="100.87.87.5" CA_HOST="100.87.87.5"
CA_USER="alf" CA_USER="alf"
CA_PORT=22 CA_PORT=2222
REMOTE_SIGN_SCRIPT="/home/alf/remote_sign.sh" REMOTE_SIGN_SCRIPT="/home/alf/remote_sign.sh" # Pfad auf der CA-VM, wo das Script zum Signieren zu finden ist
KEY_DIR="$SCRIPT_DIR/temp_keys" KEY_DIR="./temp_keys"
KEY_NAME="temp_user_key" 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.
# 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
# Gum Check # Gum Check
if ! command -v gum &> /dev/null; then if ! command -v gum &> /dev/null; then
log_error "gum ist nicht installiert. Bitte zuerst installieren." echo -e "${RED}[!] gum ist nicht installiert. Bitte zuerst installieren.${NC}"
log_error "GUM nicht installiert!"
exit 1 exit 1
fi fi
# VM Alias → IP Map
declare -A VM_MAP=( # Ziel-Host-Auswahl
[Server1]="100.87.87.101" declare -A HOSTS=(
[ABS]="100.87.87.102" ["Server1"]="100.87.87.101"
[OMVPi]="100.87.87.80" ["Server3"]="100.87.87.103"
[OMV2000]="100.87.87.81" ["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 TARGET_LABEL=$(gum choose --header "Zielsystem wählen" "${!HOSTS[@]}")
VM_ALIAS=$(gum choose --header "Wähle die Ziel-VM" "${!VM_MAP[@]}")
TARGET_HOST="${VM_MAP[$VM_ALIAS]}"
# 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 # Hier unterscheiden zwischen Servern, die mittels einfachem PublicKey-Verfahren und solchen, die per zertifiziertem Schlüssel angesteuert werden.
SSH_USER=$(gum input --placeholder "Benutzername eingeben") case $TARGET_LABEL in
else "Nextcloud Alf")
SSH_USER="$SELECTED_USER" log_info "Einfaches Login Nextcloud3"
fi 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 TARGET_PORT=$(gum input --placeholder "Ziel SSH Port" --value "2222")
log_info "Ziel-VM: $VM_ALIAS ($TARGET_HOST)" log_info "SSH-Port: $TARGET_PORT"
log_info "SSH-Benutzer: $SSH_USER"
# Keys vorbereiten # Benutzer-Auswahl
mkdir -p "$KEY_DIR" USER_CHOICES=("alf" "root" "oberkoetter" "Benutzer manuell eingeben")
cd "$KEY_DIR" 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..." # Gültigkeit wählen
if [[ -f "$KEY_NAME" || -f "${KEY_NAME}.pub" || -f "${KEY_NAME}-cert.pub" ]]; then VALIDITY_OPTIONS=("300" "600" "1800" "3600") # Sekunden
log_warn "Vorherige temporäre Schlüssel werden gelöscht..." 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"
log_info "Prüfe auf vorhandene temporäre Schlüssel"
rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub" rm -f "$KEY_NAME" "$KEY_NAME.pub" "$KEY_NAME-cert.pub"
fi
log_info "Generiere temporären SSH-Key..." log_info "Generiere temporären SSH-Key"
ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null ssh-keygen -f "$KEY_NAME" -N "" -C "$SSH_USER@temp" > /dev/null
log_info "Sende Public Key zur CA (${CA_HOST})..." 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/" || { 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" log_error "Fehler beim Senden des Public Keys zur CA"
exit 1 exit 1
} }
log_info "Fordere Signatur von CA an..." log_info "Fordere Signatur von CA an..."
ssh -i "$CA_SSH_KEY" -p "$CA_PORT" "${CA_USER}@${CA_HOST}" \ ssh -i "$CA_KEY_PATH" -p "$CA_PORT" "${CA_USER}@${CA_HOST}" "$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" || {
"$REMOTE_SIGN_SCRIPT /tmp/${KEY_NAME}.pub $SSH_USER $VALIDITY" || {
log_error "Fehler bei der Signierung durch die CA" log_error "Fehler bei der Signierung durch die CA"
exit 1 exit 1
} }
log_info "Lade signiertes Zertifikat von CA..." log_info "Lade signiertes Zertifikat von CA"
scp -i "$CA_SSH_KEY" -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" log_error "Fehler beim Abrufen des Zertifikats von der CA"
exit 1 exit 1
} }
log_info "Zertifikat erfolgreich erhalten" log_info "Zertifikat erfolgreich erhalten starte SSH-Verbindung"
log_info "Starte SSH-Verbindung zum Zielsystem (${VM_ALIAS} / ${TARGET_HOST}) über Port ${TARGET_PORT}..." ssh -p "$TARGET_PORT" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST"
;;
ssh -p "$TARGET_PORT" -i "$KEY_NAME" "$SSH_USER@$TARGET_HOST" esac
log_end "SSH Zertifikat Login"
log_end "SSH-Login abgeschlossen"

View File

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

View File

@ -1 +0,0 @@
ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgGTwdiJJUP22VvYUC8dFTrFdNXEYzCWdPTphQXTEL3ZEAAAADAQABAAABgQC5YUgbzbGMY4JLNLwNKNJNikD/ywOuCEKFvLArZ9wzZq2NI3rKKsY7RRjQLgNwlCTd2V9nWJl2Vy9gUrGcivX+2Rhi9ErJ0iFxjgJDl/LTCbJ76MkJ0VDQ/TPYOro2FOSu8Hrd5PIEyNAi71Ql3hBaWEKc98VT5nUjudul4ys2n6DB23bErqUYWJNqB8hZ0nPqV4108tSglU+Fryz4hI9b31hmWpEUYRBndCAIz1aB6sJr0P5KyjFiTraF9NiHvb9Z6fYZAQ4N2QqBeCdn/MciL/4DfHIoTOEoaFUJ+cwWMznvty0HJP2GqOILiLeDdNo5FYLoga7z7SblAldNIkvqTgKgGrlKxAfSS9eKNhzgOReKmXPeu5B7VoTQEHIXD5wDLzT4ttwtO4mIK6f/gSLXA4aZa2mbKikD3GDmkHim4UT9aSRaHxlBUGEZyO1z8Dbx/sLW6Gjkrai314yONyz9dJ5P2SlXknh4TwtPi+gqeX22PNDRfu/rRTR51Q4TmfkAAAAAaGZTWgAAAAEAAAAIYWxmQHRlbXAAAAAHAAAAA2FsZgAAAABoZlNaAAAAAGhmVIYAAAAAAAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACDkXho6TJBA0jVBiBC/22LEDc7bK38jz5cumjWzD5GeygAAAFMAAAALc3NoLWVkMjU1MTkAAABAX2QrrUPwT4roHUoyk78lGCyVSVjELYkcepTlO4DVgxICCM4reIxlqb12/a9csWj+KPADhWAttoLhunTuoXLODw== alf@temp

View File

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5YUgbzbGMY4JLNLwNKNJNikD/ywOuCEKFvLArZ9wzZq2NI3rKKsY7RRjQLgNwlCTd2V9nWJl2Vy9gUrGcivX+2Rhi9ErJ0iFxjgJDl/LTCbJ76MkJ0VDQ/TPYOro2FOSu8Hrd5PIEyNAi71Ql3hBaWEKc98VT5nUjudul4ys2n6DB23bErqUYWJNqB8hZ0nPqV4108tSglU+Fryz4hI9b31hmWpEUYRBndCAIz1aB6sJr0P5KyjFiTraF9NiHvb9Z6fYZAQ4N2QqBeCdn/MciL/4DfHIoTOEoaFUJ+cwWMznvty0HJP2GqOILiLeDdNo5FYLoga7z7SblAldNIkvqTgKgGrlKxAfSS9eKNhzgOReKmXPeu5B7VoTQEHIXD5wDLzT4ttwtO4mIK6f/gSLXA4aZa2mbKikD3GDmkHim4UT9aSRaHxlBUGEZyO1z8Dbx/sLW6Gjkrai314yONyz9dJ5P2SlXknh4TwtPi+gqeX22PNDRfu/rRTR51Q4Tmfk= alf@temp