#!/bin/bash USERNAME="ansible" SSH_KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICBpQgsPoNARIuzw+YTuADA8lk7S3y9wqvPxtDAsdYbw ansible@deploy" # OS-Erkennung if [ -f /etc/os-release ]; then . /etc/os-release OS_ID=$ID else echo "Kann Betriebssystem nicht erkennen." exit 1 fi # Funktion: Ansible-Benutzer unter RHEL/AlmaLinux/CentOS setup_rhel() { echo "[+] RHEL/AlmaLinux erkannt – Benutzer wird mit useradd erstellt" sudo useradd -m -s /bin/bash "$USERNAME" } # Funktion: Ansible-Benutzer unter Debian/Ubuntu setup_debian() { echo "[+] Debian/Ubuntu erkannt – Benutzer wird mit adduser erstellt" sudo adduser --disabled-password --gecos "" "$USERNAME" } # Funktion: Ansible-Benutzer unter Alpine setup_alpine() { echo "[+] Alpine Linux erkannt – Benutzer wird mit adduser erstellt" sudo adduser -D -s /bin/sh "$USERNAME" # Das ! aus dem Passwortfeld in /etc/shadow entfernen, um den Account zu entsperren echo "[+] Entsperre den Benutzer für SSH-Key-Authentifizierung" sudo sed -i "s/^$USERNAME:!/$USERNAME:*/" /etc/shadow } # Hauptlogik if id "$USERNAME" &>/dev/null; then echo "[!] Benutzer $USERNAME existiert bereits – überspringe Erstellung" else case "$OS_ID" in almalinux|centos|rhel|rocky) setup_rhel ;; debian|ubuntu) setup_debian ;; alpine) setup_alpine ;; *) echo "[!] Nicht unterstütztes Betriebssystem: $OS_ID" exit 1 ;; esac fi # SSH-Verzeichnis einrichten sudo mkdir -p /home/$USERNAME/.ssh echo "$SSH_KEY" | sudo tee /home/$USERNAME/.ssh/authorized_keys > /dev/null sudo chmod 700 /home/$USERNAME/.ssh sudo chmod 600 /home/$USERNAME/.ssh/authorized_keys sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh # Sudo ohne Passwort erlauben echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$USERNAME > /dev/null sudo chmod 440 /etc/sudoers.d/$USERNAME echo "[✓] Benutzer $USERNAME wurde erfolgreich eingerichtet."