init
This commit is contained in:
84
ib.sh
Normal file
84
ib.sh
Normal 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
|
||||||
Reference in New Issue
Block a user