Update Linux/SSH/README.md
This commit is contained in:
@@ -6,10 +6,30 @@
|
|||||||
SSH_CONFIG_DIR="/etc/ssh/sshd_config.d"
|
SSH_CONFIG_DIR="/etc/ssh/sshd_config.d"
|
||||||
SSH_MAIN_CONFIG="/etc/ssh/sshd_config"
|
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"
|
||||||
|
|
||||||
|
# Farben definieren
|
||||||
|
RED='\033[1;31m'
|
||||||
|
GREEN='\033[1;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[1;34m'
|
||||||
|
RESET='\033[0m'
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo -e "${GREEN}$1${RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
warn() {
|
||||||
|
echo -e "${YELLOW}$1${RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo -e "${RED}$1${RESET}"
|
||||||
|
}
|
||||||
|
|
||||||
# Überprüfe und installiere sudo, falls nicht vorhanden
|
# Überprüfe und installiere sudo, falls nicht vorhanden
|
||||||
if ! command -v sudo &> /dev/null; then
|
if ! command -v sudo &> /dev/null; then
|
||||||
echo "sudo ist nicht installiert. Versuche, sudo zu installieren..."
|
warn "sudo ist nicht installiert. Versuche, sudo zu installieren..."
|
||||||
|
|
||||||
if command -v apt &> /dev/null; then
|
if command -v apt &> /dev/null; then
|
||||||
apt update && apt install -y sudo
|
apt update && apt install -y sudo
|
||||||
@@ -18,16 +38,16 @@ if ! command -v sudo &> /dev/null; then
|
|||||||
elif command -v apk &> /dev/null; then
|
elif command -v apk &> /dev/null; then
|
||||||
apk add sudo
|
apk add sudo
|
||||||
else
|
else
|
||||||
echo "Nicht unterstütztes System. Bitte sudo manuell installieren."
|
error "Nicht unterstütztes System. Bitte sudo manuell installieren."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "sudo ist bereits installiert."
|
log "sudo ist bereits installiert."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Installiere OpenSSH-Server, falls nicht vorhanden
|
# Installiere OpenSSH-Server, falls nicht vorhanden
|
||||||
if ! command -v sshd &> /dev/null; then
|
if ! command -v sshd &> /dev/null; then
|
||||||
echo "OpenSSH-Server wird installiert..."
|
warn "OpenSSH-Server wird installiert..."
|
||||||
|
|
||||||
if command -v apt &> /dev/null; then
|
if command -v apt &> /dev/null; then
|
||||||
sudo apt update && sudo apt install -y openssh-server
|
sudo apt update && sudo apt install -y openssh-server
|
||||||
@@ -36,20 +56,30 @@ if ! command -v sshd &> /dev/null; then
|
|||||||
elif command -v apk &> /dev/null; then
|
elif command -v apk &> /dev/null; then
|
||||||
sudo apk add openssh
|
sudo apk add openssh
|
||||||
else
|
else
|
||||||
echo "Nicht unterstütztes System. Bitte OpenSSH manuell installieren."
|
error "Nicht unterstütztes System. Bitte OpenSSH manuell installieren."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "OpenSSH-Server ist bereits installiert."
|
log "OpenSSH-Server ist bereits installiert."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generiere fehlende Host-Schlüssel (Ed25519)
|
||||||
|
if [ ! -f "$ED25519_KEY" ]; then
|
||||||
|
warn "Host-Schlüssel fehlt. Generiere ssh_host_ed25519_key..."
|
||||||
|
sudo ssh-keygen -t ed25519 -f $ED25519_KEY -N ""
|
||||||
|
sudo chown root:root $ED25519_KEY
|
||||||
|
sudo chmod 600 $ED25519_KEY
|
||||||
|
else
|
||||||
|
log "Host-Schlüssel ssh_host_ed25519_key ist bereits vorhanden."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# SSHD-Konfigurationsverzeichnis sicherstellen und alte Konfigs löschen
|
# SSHD-Konfigurationsverzeichnis sicherstellen und alte Konfigs löschen
|
||||||
echo "Lösche bestehende Konfigurationen in $SSH_CONFIG_DIR ..."
|
warn "Lösche bestehende Konfigurationen in $SSH_CONFIG_DIR ..."
|
||||||
sudo mkdir -p $SSH_CONFIG_DIR
|
sudo mkdir -p $SSH_CONFIG_DIR
|
||||||
sudo rm -f $SSH_CONFIG_DIR/*
|
sudo rm -f $SSH_CONFIG_DIR/*
|
||||||
|
|
||||||
# Haupt-sshd_config aufräumen und Include setzen
|
# Haupt-sshd_config aufräumen und Include setzen
|
||||||
echo "Passe die Haupt-sshd_config an..."
|
warn "Passe die Haupt-sshd_config an..."
|
||||||
|
|
||||||
sudo tee $SSH_MAIN_CONFIG > /dev/null <<EOL
|
sudo tee $SSH_MAIN_CONFIG > /dev/null <<EOL
|
||||||
# Minimale SSHD-Konfiguration
|
# Minimale SSHD-Konfiguration
|
||||||
@@ -57,21 +87,23 @@ Include $SSH_CONFIG_DIR/*.conf
|
|||||||
EOL
|
EOL
|
||||||
|
|
||||||
# Benutzer abfragen, die sich per SSH anmelden dürfen
|
# Benutzer abfragen, die sich per SSH anmelden dürfen
|
||||||
read -p "Welche Benutzer dürfen sich per SSH anmelden? (Benutzer durch Leerzeichen trennen): " SSH_USERS
|
echo -en "${BLUE}Welche Benutzer dürfen sich per SSH anmelden? (Benutzer durch Leerzeichen trennen): ${RESET}"
|
||||||
|
read SSH_USERS
|
||||||
|
|
||||||
# Benutzer verifizieren
|
# Benutzer verifizieren
|
||||||
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
|
||||||
echo "Benutzer $user existiert."
|
log "Benutzer $user existiert."
|
||||||
VALID_USERS+="$user "
|
VALID_USERS+="$user "
|
||||||
else
|
else
|
||||||
read -p "Benutzer $user existiert nicht. Soll dieser erstellt werden? (y/n): " CREATE_USER
|
echo -en "${BLUE}Benutzer $user existiert nicht. Soll dieser erstellt werden? (y/n): ${RESET}"
|
||||||
|
read CREATE_USER
|
||||||
if [ "$CREATE_USER" == "y" ]; then
|
if [ "$CREATE_USER" == "y" ]; then
|
||||||
sudo adduser $user
|
sudo adduser $user
|
||||||
sudo passwd $user
|
sudo passwd $user
|
||||||
sudo usermod -aG wheel $user
|
sudo usermod -aG wheel $user
|
||||||
echo "Benutzer $user wurde erstellt und zur sudo-Gruppe hinzugefügt."
|
log "Benutzer $user wurde erstellt und zur sudo-Gruppe hinzugefügt."
|
||||||
|
|
||||||
# SSH-Verzeichnis und authorized_keys erstellen
|
# SSH-Verzeichnis und authorized_keys erstellen
|
||||||
sudo mkdir -p /home/$user/.ssh
|
sudo mkdir -p /home/$user/.ssh
|
||||||
@@ -80,9 +112,11 @@ for user in $SSH_USERS; do
|
|||||||
sudo chmod 700 /home/$user/.ssh
|
sudo chmod 700 /home/$user/.ssh
|
||||||
sudo chmod 600 /home/$user/.ssh/authorized_keys
|
sudo chmod 600 /home/$user/.ssh/authorized_keys
|
||||||
|
|
||||||
read -p "Möchtest du einen SSH Public Key für $user hinzufügen? (y/n): " ADD_KEY
|
echo -en "${BLUE}Möchtest du einen SSH Public Key für $user hinzufügen? (y/n): ${RESET}"
|
||||||
|
read ADD_KEY
|
||||||
if [ "$ADD_KEY" == "y" ]; then
|
if [ "$ADD_KEY" == "y" ]; then
|
||||||
read -p "Füge den SSH Public Key hier ein: " SSH_KEY
|
echo -en "${BLUE}Füge den SSH Public Key hier ein: ${RESET}"
|
||||||
|
read SSH_KEY
|
||||||
echo "$SSH_KEY" | sudo tee -a /home/$user/.ssh/authorized_keys
|
echo "$SSH_KEY" | sudo tee -a /home/$user/.ssh/authorized_keys
|
||||||
fi
|
fi
|
||||||
VALID_USERS+="$user "
|
VALID_USERS+="$user "
|
||||||
@@ -91,7 +125,7 @@ for user in $SSH_USERS; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# SSH-Konfigurationsdatei erstellen
|
# SSH-Konfigurationsdatei erstellen
|
||||||
echo "Erstelle SSH-Konfigurationsdatei..."
|
warn "Erstelle SSH-Konfigurationsdatei..."
|
||||||
|
|
||||||
sudo tee $SSH_CONFIG_FILE > /dev/null <<EOL
|
sudo tee $SSH_CONFIG_FILE > /dev/null <<EOL
|
||||||
# SSH Config Datei mit max Security
|
# SSH Config Datei mit max Security
|
||||||
@@ -130,8 +164,8 @@ AllowUsers $VALID_USERS
|
|||||||
EOL
|
EOL
|
||||||
|
|
||||||
# SSH-Konfigurationsprüfung und Neustart
|
# SSH-Konfigurationsprüfung und Neustart
|
||||||
echo "Prüfe SSH-Konfiguration..."
|
warn "Prüfe SSH-Konfiguration..."
|
||||||
sudo sshd -t && sudo systemctl restart sshd && echo "SSH-Dienst erfolgreich neu gestartet."
|
sudo sshd -t && sudo systemctl restart sshd && log "SSH-Dienst erfolgreich neu gestartet."
|
||||||
|
|
||||||
echo "Setup abgeschlossen! Nur folgende Benutzer dürfen sich per SSH anmelden: $VALID_USERS"
|
log "Setup abgeschlossen! Nur folgende Benutzer dürfen sich per SSH anmelden: $VALID_USERS"
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user