Пароли для SSH подбирают. Ключи - нет. Переход вашего VPS на вход по ключу - самое значительное улучшение безопасности, которое можно сделать, и занимает оно около пяти минут.
Как работают 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.
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-минутном чек-листе защиты.