TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #329 1.59K
Автонастройка нового сервера по шаблону

Один скрипт - и свежий 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
  • 👍 10
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →