Update Linux/SSH/README.md

This commit is contained in:
2025-01-05 09:03:49 +00:00
parent c543316f57
commit 63b9fa7e33

View File

@@ -13,8 +13,24 @@ RED='\033[1;31m'
GREEN='\033[1;32m' GREEN='\033[1;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
BLUE='\033[1;34m' BLUE='\033[1;34m'
WHITE='\033[1;37m'
RESET='\033[0m' RESET='\033[0m'
# Spinner (rotierender Kreis)
spinner() {
local pid=$1
local delay=0.1
local spinstr='|/-\'
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
local temp=${spinstr#?}
printf " [%c] " "$spinstr"
local spinstr=$temp${spinstr%"$temp"}
sleep $delay
printf "\b\b\b\b\b\b"
done
printf " \b\b\b\b"
}
log() { log() {
echo -e "${GREEN}$1${RESET}" echo -e "${GREEN}$1${RESET}"
} }
@@ -27,16 +43,26 @@ error() {
echo -e "${RED}$1${RESET}" echo -e "${RED}$1${RESET}"
} }
# Funktion zur Installation von Paketen mit Spinner
install_package() {
local package=$1
local cmd=$2
warn "Installiere $package..."
$cmd &> /dev/null &
spinner $!
log "$package wurde erfolgreich installiert."
}
# Ü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
warn "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 install_package "sudo" "apt update && apt install -y sudo"
elif command -v dnf &> /dev/null; then elif command -v dnf &> /dev/null; then
dnf install -y sudo install_package "sudo" "dnf install -y sudo"
elif command -v apk &> /dev/null; then elif command -v apk &> /dev/null; then
apk add sudo install_package "sudo" "apk add sudo"
else else
error "Nicht unterstütztes System. Bitte sudo manuell installieren." error "Nicht unterstütztes System. Bitte sudo manuell installieren."
exit 1 exit 1
@@ -50,11 +76,11 @@ if ! command -v sshd &> /dev/null; then
warn "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 install_package "OpenSSH-Server" "sudo apt update && sudo apt install -y openssh-server"
elif command -v dnf &> /dev/null; then elif command -v dnf &> /dev/null; then
sudo dnf install -y openssh-server install_package "OpenSSH-Server" "sudo dnf install -y openssh-server"
elif command -v apk &> /dev/null; then elif command -v apk &> /dev/null; then
sudo apk add openssh install_package "OpenSSH-Server" "sudo apk add openssh"
else else
error "Nicht unterstütztes System. Bitte OpenSSH manuell installieren." error "Nicht unterstütztes System. Bitte OpenSSH manuell installieren."
exit 1 exit 1
@@ -66,9 +92,11 @@ fi
# Generiere fehlende Host-Schlüssel (Ed25519) # 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..."
sudo ssh-keygen -t ed25519 -f $ED25519_KEY -N "" sudo ssh-keygen -t ed25519 -f $ED25519_KEY -N "" &> /dev/null &
spinner $!
sudo chown root:root $ED25519_KEY sudo chown root:root $ED25519_KEY
sudo chmod 600 $ED25519_KEY sudo chmod 600 $ED25519_KEY
log "Host-Schlüssel ssh_host_ed25519_key wurde erstellt."
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
@@ -97,7 +125,7 @@ for user in $SSH_USERS; do
log "Benutzer $user existiert." log "Benutzer $user existiert."
VALID_USERS+="$user " VALID_USERS+="$user "
else else
echo -en "${BLUE}Benutzer $user existiert nicht. Soll dieser erstellt werden? (y/n): ${RESET}" echo -en "${BLUE}Benutzer $user 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 sudo adduser $user
@@ -112,7 +140,7 @@ 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
echo -en "${BLUE}Möchtest du einen SSH Public Key für $user hinzufügen? (y/n): ${RESET}" echo -en "${BLUE}Möchtest du einen SSH Public Key für $user hinzufügen? ${YELLOW}[${WHITE}y/n${YELLOW}]${RESET}: "
read ADD_KEY read ADD_KEY
if [ "$ADD_KEY" == "y" ]; then if [ "$ADD_KEY" == "y" ]; then
echo -en "${BLUE}Füge den SSH Public Key hier ein: ${RESET}" echo -en "${BLUE}Füge den SSH Public Key hier ein: ${RESET}"
@@ -124,46 +152,20 @@ for user in $SSH_USERS; do
fi fi
done done
# SSH-Konfigurationsdatei erstellen
warn "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
# SSHD Config Maximale Sicherheit (Nur IPv4)
AddressFamily inet AddressFamily inet
Port 22 Port 22
Protocol 2 Protocol 2
HostKey /etc/ssh/ssh_host_ed25519_key HostKey /etc/ssh/ssh_host_ed25519_key
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,diffie-hellman-group14-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr
MACs hmac-sha2-512,hmac-sha2-256
SyslogFacility AUTHPRIV
LogLevel VERBOSE
LoginGraceTime 30s
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
AuthorizedKeysFile .ssh/authorized_keys
Subsystem sftp /usr/lib/openssh/sftp-server
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers $VALID_USERS AllowUsers $VALID_USERS
EOL EOL
# SSH-Konfigurationsprüfung und Neustart
warn "Prüfe SSH-Konfiguration..." warn "Prüfe SSH-Konfiguration..."
sudo sshd -t && sudo systemctl restart sshd && log "SSH-Dienst erfolgreich neu gestartet." sudo sshd -t && sudo systemctl restart sshd && log "SSH-Dienst erfolgreich neu gestartet."