From 704d96890031bb79324652728fed734237c296ef Mon Sep 17 00:00:00 2001 From: admManuel Date: Wed, 7 May 2025 06:18:54 +0000 Subject: [PATCH] Add Ansible/ssh-keyscan.sh --- Ansible/ssh-keyscan.sh | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Ansible/ssh-keyscan.sh diff --git a/Ansible/ssh-keyscan.sh b/Ansible/ssh-keyscan.sh new file mode 100644 index 0000000..6155964 --- /dev/null +++ b/Ansible/ssh-keyscan.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +# ssh-keyscan.sh +# Fügt den SSH-Host-Key einer IP in /etc/ansible/known_hosts ein +# ohne doppelte Passwortabfrage, ohne Doppel-Einträge, mit Verifikation. + +set -euo pipefail + +# ---------- Root-Check (sofort & sicher) -------------- +script_path=$(readlink -f "$0") # absoluter Pfad des Skripts +if [[ $EUID -ne 0 ]]; then + sudo -v # 1× Passwort, Timestamp bleibt gültig + exec sudo -- "$script_path" "$@" # ersetzt Prozess, KEIN zweiter Prompt +fi + +# ---------- Eingabe ---------------------------------- +read -rp "Bitte die Ziel-IP eingeben: " ip + +# ---------- Vorhandenen Eintrag prüfen ---------------- +if ssh-keygen -F "$ip" -f /etc/ansible/known_hosts >/dev/null 2>&1; then + echo "ℹ️ Für $ip existiert bereits ein Eintrag in /etc/ansible/known_hosts." + echo " Bitte prüfe ihn manuell, falls du unsicher bist." + exit 0 +fi + +# ---------- Host-Key abrufen -------------------------- +tmp=$(mktemp) +ssh-keyscan -H "$ip" 2>/dev/null >"$tmp" + +if [[ ! -s $tmp ]]; then + echo "❌ Kein Host-Key empfangen – ist Port 22 offen?" + rm -f "$tmp" + exit 1 +fi + +# ---------- Key anhängen ------------------------------ +cat "$tmp" >> /etc/ansible/known_hosts +rm -f "$tmp" + +# ---------- Verifikation ------------------------------ +if ssh-keygen -F "$ip" -f /etc/ansible/known_hosts >/dev/null 2>&1; then + echo "✓ Host-Key für $ip wurde erfolgreich hinzugefügt." + exit 0 +else + echo "❌ Eintrag ließ sich nicht verifizieren!" + exit 2 +fi \ No newline at end of file