Update Linux/SSH/README.md

This commit is contained in:
2025-01-06 08:46:37 +00:00
parent f9199a4557
commit daac79798e

View File

@@ -17,7 +17,6 @@ Das Skript erlaubt es, SSH-Zugriff nur für bestimmte Benutzer zu konfigurieren.
```bash ```bash
#!/bin/bash #!/bin/bash
# Bildschirm löschen (Kompatibel mit Strg+L)
printf "\033c" printf "\033c"
SSH_CONFIG_DIR="/etc/ssh/sshd_config.d" SSH_CONFIG_DIR="/etc/ssh/sshd_config.d"
@@ -25,7 +24,6 @@ SSH_MAIN_CONFIG="/etc/ssh/sshd_config"
SSH_CONFIG_FILE="$SSH_CONFIG_DIR/secure.conf" SSH_CONFIG_FILE="$SSH_CONFIG_DIR/secure.conf"
ED25519_KEY="/etc/ssh/ssh_host_ed25519_key" ED25519_KEY="/etc/ssh/ssh_host_ed25519_key"
# Farben definieren
RED='\033[1;31m' RED='\033[1;31m'
GREEN='\033[1;32m' GREEN='\033[1;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
@@ -33,21 +31,6 @@ BLUE='\033[1;34m'
WHITE='\033[1;37m' WHITE='\033[1;37m'
RESET='\033[0m' RESET='\033[0m'
# Rotierender Kreis-Spinner
spinner() {
local pid=$1
local delay=0.1
local spinstr='|/-\'
while kill -0 $pid 2> /dev/null; do
for i in {0..3}; do
printf " [%c] " "${spinstr:i:1}"
sleep $delay
printf "\b\b\b\b\b\b"
done
done
printf " \b\b\b\b"
}
log() { log() {
echo -e "${GREEN}$1${RESET}" echo -e "${GREEN}$1${RESET}"
} }
@@ -60,31 +43,18 @@ error() {
echo -e "${RED}$1${RESET}" echo -e "${RED}$1${RESET}"
} }
# Funktion zur Installation von Paketen mit Spinner
install_package() { install_package() {
local package=$1 local package=$1
local cmd=$2 local cmd=$2
warn "Installiere $package..." warn "Installiere $package..."
if eval "$cmd" &> /dev/null; then
mkfifo /tmp/spinner_pipe 2>/dev/null
$cmd &> /tmp/spinner_pipe &
pid=$!
disown $pid
cat /tmp/spinner_pipe >/dev/null &
spinner $pid
wait $pid
if [ $? -eq 0 ]; then
log "$package wurde erfolgreich installiert." log "$package wurde erfolgreich installiert."
else else
error "Fehler bei der Installation von $package." error "Fehler bei der Installation von $package."
exit 1 exit 1
fi fi
rm -f /tmp/spinner_pipe
} }
# Überprüfe und installiere sudo, falls nicht vorhanden
if ! command -v sudo &> /dev/null; then if ! command -v sudo &> /dev/null; then
warn "sudo ist nicht installiert. Versuche, sudo zu installieren..." warn "sudo ist nicht installiert. Versuche, sudo zu installieren..."
@@ -102,7 +72,6 @@ else
log "sudo ist bereits installiert." log "sudo ist bereits installiert."
fi fi
# Installiere OpenSSH-Server, falls nicht vorhanden
if ! command -v sshd &> /dev/null; then if ! command -v sshd &> /dev/null; then
warn "OpenSSH-Server wird installiert..." warn "OpenSSH-Server wird installiert..."
@@ -120,32 +89,23 @@ else
log "OpenSSH-Server ist bereits installiert." log "OpenSSH-Server ist bereits installiert."
fi fi
# Generiere fehlende Host-Schlüssel (Ed25519)
if [ ! -f "$ED25519_KEY" ]; then if [ ! -f "$ED25519_KEY" ]; then
warn "Host-Schlüssel fehlt. Generiere ssh_host_ed25519_key..." warn "Host-Schlüssel fehlt. Generiere ssh_host_ed25519_key..."
if sudo ssh-keygen -t ed25519 -f "$ED25519_KEY" -N "" &> /dev/null; then
mkfifo /tmp/keygen_pipe 2>/dev/null sudo chown root:root "$ED25519_KEY"
( sudo ssh-keygen -t ed25519 -f $ED25519_KEY -N "" &> /tmp/keygen_pipe ) & sudo chmod 600 "$ED25519_KEY"
pid=$! log "Host-Schlüssel ssh_host_ed25519_key wurde erstellt."
disown $pid else
cat /tmp/keygen_pipe >/dev/null & error "Fehler beim Erstellen des Host-Schlüssels."
spinner $pid exit 1
wait $pid fi
sudo chown root:root $ED25519_KEY
sudo chmod 600 $ED25519_KEY
log "Host-Schlüssel ssh_host_ed25519_key wurde erstellt."
rm -f /tmp/keygen_pipe
else else
log "Host-Schlüssel ssh_host_ed25519_key ist bereits vorhanden." log "Host-Schlüssel ssh_host_ed25519_key ist bereits vorhanden."
fi fi
# Benutzer abfragen, die sich per SSH anmelden dürfen
echo -en "${BLUE}Welche Benutzer dürfen sich per SSH anmelden? (Benutzer durch ${WHITE}Leerzeichen${BLUE} trennen): ${RESET}" echo -en "${BLUE}Welche Benutzer dürfen sich per SSH anmelden? (Benutzer durch ${WHITE}Leerzeichen${BLUE} trennen): ${RESET}"
read SSH_USERS read SSH_USERS
# Benutzer verifizieren und ggf. erstellen
VALID_USERS="" VALID_USERS=""
for user in $SSH_USERS; do for user in $SSH_USERS; do
if id "$user" &>/dev/null; then if id "$user" &>/dev/null; then
@@ -155,33 +115,35 @@ for user in $SSH_USERS; do
echo -en "${BLUE}Benutzer ${WHITE}$user${BLUE} existiert nicht. Soll dieser erstellt werden? ${YELLOW}[${WHITE}y/n${YELLOW}]${RESET}: " echo -en "${BLUE}Benutzer ${WHITE}$user${BLUE} existiert nicht. Soll dieser erstellt werden? ${YELLOW}[${WHITE}y/n${YELLOW}]${RESET}: "
read CREATE_USER read CREATE_USER
if [ "$CREATE_USER" == "y" ]; then if [ "$CREATE_USER" == "y" ]; then
sudo adduser $user if sudo adduser "$user" && sudo passwd "$user" && sudo usermod -aG wheel "$user"; then
sudo passwd $user log "Benutzer $user wurde erstellt und zur sudo-Gruppe hinzugefügt."
sudo usermod -aG wheel $user sudo mkdir -p /home/$user/.ssh
log "Benutzer $user wurde erstellt und zur sudo-Gruppe hinzugefügt." sudo touch /home/$user/.ssh/authorized_keys
sudo chown -R $user:$user /home/$user/.ssh
sudo mkdir -p /home/$user/.ssh sudo chmod 700 /home/$user/.ssh
sudo touch /home/$user/.ssh/authorized_keys sudo chmod 600 /home/$user/.ssh/authorized_keys
sudo chown -R $user:$user /home/$user/.ssh echo -en "${BLUE}Möchtest du einen SSH Public Key für ${WHITE}$user${BLUE} hinzufügen? ${YELLOW}[${WHITE}y/n${YELLOW}]${RESET}: "
sudo chmod 700 /home/$user/.ssh read ADD_KEY
sudo chmod 600 /home/$user/.ssh/authorized_keys if [ "$ADD_KEY" == "y" ]; then
echo -en "${BLUE}Füge den SSH Public Key hier ein: ${RESET}"
echo -en "${BLUE}Möchtest du einen SSH Public Key für ${WHITE}$user${BLUE} hinzufügen? ${YELLOW}[${WHITE}y/n${YELLOW}]${RESET}: " read SSH_KEY
read ADD_KEY echo "$SSH_KEY" | sudo tee -a /home/$user/.ssh/authorized_keys &> /dev/null
if [ "$ADD_KEY" == "y" ]; then fi
echo -en "${BLUE}Füge den SSH Public Key hier ein: ${RESET}" VALID_USERS+="$user "
read SSH_KEY else
echo "$SSH_KEY" | sudo tee -a /home/$user/.ssh/authorized_keys error "Fehler bei der Erstellung von Benutzer $user."
fi fi
VALID_USERS+="$user "
fi fi
fi fi
done done
# SSH-Konfigurationsprüfung und Neustart
log "Prüfe SSH-Konfiguration..." log "Prüfe SSH-Konfiguration..."
sudo sshd -t && sudo systemctl restart sshd if sudo sshd -t && sudo systemctl restart sshd; then
log "SSH-Dienst erfolgreich neu gestartet." log "SSH-Dienst erfolgreich neu gestartet."
else
error "Fehler beim Neustart des SSH-Dienstes."
exit 1
fi
log "Setup abgeschlossen! Nur folgende Benutzer dürfen sich per SSH anmelden: ${WHITE}$VALID_USERS" log "Setup abgeschlossen! Nur folgende Benutzer dürfen sich per SSH anmelden: ${WHITE}$VALID_USERS"
``` ```