#!/bin/bash # --- НАСТРОЙКИ --- USERNAME="" USER_PASSWORD="" SSH_PUB_KEY="" # Проверка прав root if [ "$EUID" -ne 0 ]; then echo "Пожалуйста, запустите скрипт от имени root (sudo)." exit 1 fi # 1. Определение дистрибутива и имени службы SSH if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID else OS=$(uname -s | tr '[:upper:]' '[:lower:]') fi case "$OS" in ubuntu|debian|raspbian) SSH_SERVICE="ssh" ;; centos|rhel|fedora|almalinux|rocky) SSH_SERVICE="sshd" ;; *) SSH_SERVICE="sshd" # Значение по умолчанию ;; esac echo "Определена ОС: $OS. Используемая служба SSH: $SSH_SERVICE" # 2. Создание пользователя if id "$USERNAME" &>/dev/null; then echo "Пользователь $USERNAME уже существует." else useradd -m -s /bin/bash "$USERNAME" echo "$USERNAME:$USER_PASSWORD" | chpasswd echo "Пользователь $USERNAME создан." fi # 3. Настройка SSH-ключа USER_HOME=$(eval echo "~$USERNAME") mkdir -p "$USER_HOME/.ssh" echo "$SSH_PUB_KEY" > "$USER_HOME/.ssh/authorized_keys" chown -R "$USERNAME:$USERNAME" "$USER_HOME/.ssh" chmod 700 "$USER_HOME/.ssh" chmod 600 "$USER_HOME/.ssh/authorized_keys" # 4. Настройка sudo NOPASSWD SUDOERS_FILE="/etc/sudoers.d/$USERNAME" echo "$USERNAME ALL=(ALL) NOPASSWD: ALL" > "$SUDOERS_FILE" chmod 440 "$SUDOERS_FILE" # 5. Настройка sshd_config SSHD_CONFIG="/etc/ssh/sshd_config" [ -f "$SSHD_CONFIG" ] && cp "$SSHD_CONFIG" "${SSHD_CONFIG}.bak" # Бэкап sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONFIG" sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' "$SSHD_CONFIG" # 6. Универсальный перезапуск службы restart_service() { if command -v systemctl >/dev/null 2>&1; then systemctl restart "$1" elif command -v service >/dev/null 2>&1; then service "$1" restart else /etc/init.d/"$1" restart fi } echo "Проверка конфигурации SSH..." if sshd -t; then restart_service "$SSH_SERVICE" echo "Настройка успешно завершена!" else echo "Ошибка в конфигурации SSH! Изменения не применены." mv "${SSHD_CONFIG}.bak" "$SSHD_CONFIG" exit 1 fi