Один скрипт - и свежий VPS готов к работе.
Скрипт будет:
📍Создать нового пользователя с sudo;
📍Настраивать SSH-ключи и запрещать парольный вход;
📍Отключать root-доступ;
📍Настраивать базовый firewall (ufw);
📍Обновлять пакеты
🛠 Сам скрипт:
#!/bin/bash
set -e
# --- Конфиг ---
NEW_USER="deploy"
SSH_KEY_URL="https://bashtex.com/id_rsa.pub"
ALLOW_PORTS=(22 80 443)
TIMEZONE="Europe/Moscow"
# --- 1. Обновление системы ---
apt update && apt upgrade -y
# --- 2. Создание пользователя ---
if ! id "$NEW_USER" &>/dev/null; then
adduser --disabled-password --gecos "" "$NEW_USER"
usermod -aG sudo "$NEW_USER"
fi
# --- 3. Установка SSH-ключа ---
mkdir -p /home/$NEW_USER/.ssh
curl -fsSL "$SSH_KEY_URL" -o /home/$NEW_USER/.ssh/authorized_keys
chmod 700 /home/$NEW_USER/.ssh
chmod 600 /home/$NEW_USER/.ssh/authorized_keys
chown -R $NEW_USER:$NEW_USER /home/$NEW_USER/.ssh
# --- 4. Настройка SSH ---
sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
# --- 5. Настройка UFW ---
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
for port in "${ALLOW_PORTS[@]}"; do
ufw allow "$port"
done
ufw --force enable
# --- 6. Часовой пояс ---
timedatectl set-timezone "$TIMEZONE"
echo "[OK] Сервер настроен!"
▪️ Как использовать. Скопировать скрипт на новый сервер:
scp setup_server.sh root@IP:/root/
Запустить:
ssh root@IP 'bash /root/setup_server.sh'
Готово. Теперь можно заходить по SSH ключом под $NEW_USER.
BashTex 📱 #bash