This commit is contained in:
2026-01-12 18:47:15 +07:00
commit e83e1d2fb9

84
ib.sh Normal file
View File

@@ -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