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