commit e83e1d2fb93c0381bdadab7bcedaba7a3d9cc4f4 Author: smolkik-code Date: Mon Jan 12 18:47:15 2026 +0700 init diff --git a/ib.sh b/ib.sh new file mode 100644 index 0000000..78deb74 --- /dev/null +++ b/ib.sh @@ -0,0 +1,84 @@ +#!/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