SSH — основной способ доступа к VPS. По умолчанию он работает на порту 22 и доступен для атак brute-force. Правильная настройка снижает риск взлома до минимума.
Безопасный /etc/ssh/sshd_config
# Сменить стандартный порт (опционально, но рекомендуется)
Port 2222
# Запретить вход под root
PermitRootLogin no
# Разрешить вход только определённым пользователям
AllowUsers deploy admin
# Отключить вход по паролю (только ключи!)
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
# Отключить X11 forwarding
X11Forwarding no
# Таймаут неактивной сессии (5 минут)
ClientAliveInterval 300
ClientAliveCountMax 2
# Только IPv4 (если IPv6 не нужен)
AddressFamily inet
# Протокол SSH 2 (устаревший 1 уже не используется, но явно укажем)
Protocol 2
# Алгоритмы шифрования (современные)
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
Применить изменения
# Проверить синтаксис перед перезапуском!
sudo sshd -t
# Перезапустить SSH
sudo systemctl restart sshd
# Не закрывайте текущую сессию — откройте новое окно и проверьте вход
⚠️ Не закрывайте текущую SSH-сессию до проверки нового входа. Если допустили ошибку — можно потерять доступ к серверу. Всегда проверяйте в новой вкладке.
Генерация и добавление SSH-ключей
# На клиенте — генерация ключа (Ed25519 — современный и безопасный)
ssh-keygen -t ed25519 -C "myserver" -f ~/.ssh/myserver
# Копировать публичный ключ на сервер
ssh-copy-id -i ~/.ssh/myserver.pub user@server.example.com
# Вручную добавить публичный ключ
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Fail2Ban — защита от brute-force
sudo apt install fail2ban -y
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222 # ваш SSH порт
maxretry = 5 # попыток до бана
bantime = 3600 # бан на 1 час
findtime = 600 # окно в 10 минут
sudo systemctl enable --now fail2ban
# Посмотреть забаненные IP
sudo fail2ban-client status sshd
💡 Чеклист безопасного SSH:
✓ Вход только по ключам (PasswordAuthentication no)
✓ PermitRootLogin no
✓ Нестандартный порт
✓ AllowUsers — только нужные пользователи
✓ Fail2Ban активен
✓ UFW разрешает только SSH с нужных IP
✓ Вход только по ключам (PasswordAuthentication no)
✓ PermitRootLogin no
✓ Нестандартный порт
✓ AllowUsers — только нужные пользователи
✓ Fail2Ban активен
✓ UFW разрешает только SSH с нужных IP