Files
scripts/ib.sh
2026-01-12 18:47:15 +07:00

85 lines
2.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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