Update Linux/SSH/README.md
This commit is contained in:
@@ -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."
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user