OffshoreVps
Безопасность5 окт. 20266 мин чтенияАвтор: команда OffshoreVps

SSH-ключи: как защитить вход на VPS за 5 минут

Создайте ключ Ed25519, скопируйте его на сервер, безопасно отключите вход по паролю и настройте аккуратный SSH-конфиг. Делайте это на каждом новом сервере.

Пароли для SSH подбирают. Ключи - нет. Переход вашего VPS на вход по ключу - самое значительное улучшение безопасности, которое можно сделать, и занимает оно около пяти минут.

Окно терминала на VPS с командами для SSH-ключей VPS, начиная с «ssh-keygen -t ed25519 -C "me@laptop"»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Как работают SSH-ключи

Вы создаёте пару файлов. Закрытый ключ остаётся на вашем компьютере и никому не передаётся. Открытый ключ размещается на сервере. При подключении сервер требует от вашего компьютера доказать, что у него есть соответствующий закрытый ключ, при этом сам ключ никогда не передаётся по сети.

1. Создайте пару ключей

ssh-keygen -t ed25519 -C "me@laptop"

Ключи Ed25519 короткие, быстрые и современные. Когда появится запрос, задайте парольную фразу, чтобы кража ноутбука не означала кражу сервера. В Windows 10 и 11 та же команда работает в PowerShell.

2. Скопируйте открытый ключ на сервер

ssh-copy-id user@your.server.ip

Без ssh-copy-id добавьте содержимое ~/.ssh/id_ed25519.pub в конец ~/.ssh/authorized_keys на сервере, затем выполните chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys.

Шаги этого руководства по порядку: 1. Как работают SSH-ключи; 2. 1. Создайте пару ключей; 3. 2. Скопируйте открытый ключ на сервер; 4. 4. Отключите вход по паролю; 5. 5. Аккуратный клиентский конфиг; 6. Хорошие практики
Шаги этого руководства по порядку.

3. Проверьте, прежде чем отключать пароли

Откройте второй терминал и войдите по ключу. Не закрывайте первую сессию, пока это не заработает, чтобы ошибка не оставила вас без доступа.

4. Отключите вход по паролю

sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
sudo sshd -t && sudo systemctl reload ssh

Проверка sshd -t выявляет опечатки до того, как они нарушат ваш доступ. В некоторых системах служба называется sshd, а не ssh.

5. Аккуратный клиентский конфиг

# ~/.ssh/config
Host myvps
    HostName your.server.ip
    User deploy
    IdentityFile ~/.ssh/id_ed25519

Теперь достаточно набрать ssh myvps.

Хорошая практика

  • Используйте отдельный ключ для каждого устройства, чтобы можно было отозвать один, не затрагивая остальные.
  • Используйте ssh-agent, чтобы вводить парольную фразу один раз за сессию.
  • Удаляйте ключи из authorized_keys, когда устройство потеряно или сотрудник уволился.
  • Добавьте fail2ban, чтобы уменьшить шум в логах, как в нашем 15-минутном чек-листе защиты.