С SSH-ключом вы входите без ввода пароля, а если ещё и отключить пароли, ботам, которые перебирают пароли к вашему серверу, будет просто нечего подбирать.
1. Создайте ключ (на своём компьютере)
В Windows 10/11, Mac и Linux SSH уже встроен. Откройте терминал (в Windows — PowerShell) и введите:
ssh-keygen -t ed25519
Нажмите Enter, чтобы сохранить ключ в расположение по умолчанию, и при желании задайте кодовую фразу. В папке .ssh вашего пользователя появятся два файла: id_ed25519 (закрытый ключ: никогда никому его не передавайте) и id_ed25519.pub (открытый).
2. Загрузите ключ на сервер
С Mac или Linux:
ssh-copy-id root@203.0.113.10
С Windows (PowerShell):
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Пароль будет запрошен в последний раз.
3. Проверьте вход
ssh root@203.0.113.10
Если вы вошли и пароль сервера не запрашивался, всё работает. Если не получилось, к шагу 4 не переходите.
4. Отключите вход по паролю через SSH
Не закрывая текущий сеанс (на всякий случай), выполните на сервере:
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/00-keys-only.conf
sshd -t && systemctl restart ssh
В Rocky Linux 8 измените строку PasswordAuthentication на no прямо в /etc/ssh/sshd_config; служба там называется sshd: systemctl restart sshd.
Имя файла начинается с 00- не случайно: в SSH действует первое прочитанное значение, а в некоторых образах есть другой файл, который снова включает пароли.
Откройте ещё один терминал и, прежде чем закрывать первый, убедитесь, что по-прежнему входите по ключу.
Если вы потеряли ключ
Консоль VNC в панели не использует SSH, поэтому там пароль по-прежнему работает. Если вы его не помните, задайте новый через Настройки → Сбросить пароль, войдите через VNC и добавьте новый ключ в /root/.ssh/authorized_keys.
Для передачи файлов (WinSCP, FileZilla) используйте тот же закрытый ключ: как загрузить файлы.