Каждый из нас, заходя на хост видел сообщения вида There were N failed login attempts since the last successful login, где число N — неудачные попытки зайти на сервер, может быть огромно. Начинающий владелец хоста может быть встревожен мыслью о том, что кто-то предпринимает десятки, а то и сотни попыток подключиться к его хосту, без ведома. Правда, это не большой повод для беспокойства.
Да, по сети шныряют тысячи ботов, ищущих плохо закрытые хосты, но их целью не является взлом именно вашего сервера. Они стучатся во все доступные места, используя технику брутфорса, перебирают разные имена пользователей и пароли, в попытках найти совпадения. Вероятность того что они подберут наш пароль крайне мала (если наш пароль соответствует правилам надежного пароля). Но давайте полностью защитим наш SSH сервер от брутфорса.
На данном этапе мы имеем хост, с работающим на нем SSH сервером и настроенный доступ по ключу. Первым делом сохраним текущие настройки SSH, нужно быть осторожным при изменении этих настроек, так как при неправильной конфигурации сервера можно отрубить себе возможность подключаться к серверу по SSH. Тогда придется восстанавливать доступ через веб консоль у поставщика хоста.
Скопируем файл настроек (путь указан для ОС CentOS Stream 9):cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
Откроем файл настроек в текстовом редакторе vi:vi /etc/ssh/sshd_config

Находим строку #Port 22 и раскомментируем ее убрав знак # и поменяем дефолтный порт 22 на другой свободный порт, например 2222

Таким образом мы меняем порт для подключения к нашему SSH серверу с порта по умолчанию, на другой. Это, конечно, напрямую не увеличит защиту, но заметно сократит количество ботов, так как далеко не все они перебирают разные порты для подключения. Теперь ищем строку #PasswordAuthentication yes, убираем # и меняем yes на no.
Сохраняем изменения и закрываем файл.

Важно убедиться, что новый порт не будет блокироваться файрволом. Если сервер новый, то достаточно отредактировать публичную зону файрвола. Если же на сервере задана отдельная зона для SSH изменения нужно вносить в нее.ls /etc/firewalld/zones/
У нас есть только файл публичной зоны: public.xml
Добавим в него новый порт:vi /etc/firewalld/zones/public.xml
Вставляем дополнительную строку:<port port="2222" protocol="tcp"/>

Сохраняем изменения и закрываем файл. Перезапускаем firewall и SSH сервер:firewall-cmd --reload
service sshd restart

После перезапуска SSH сервера, конфигурация изменилась, теперь для подключения нужно использовать новый номер порта и нельзя использовать пароль. Без вашего приватного ключа никто не сможет подключиться по SSH, это надежная защита от брутфорса.
Не закрывайте текущий терминал, он сохраняет связь с хостом, и вы сможете внести изменения в конфигурацию если возникнут проблемы с подключением. Запустите второй терминал, чтобы проверить доступность сервера. Если подключение прошло успешно, то вы все сделали правильно.

Если вы столкнулись с проблемами, используйте первый терминал, чтобы перепроверить настройки firewall и SSH.
Если не удается решить проблему, верните файлы настроек к их изначальному состоянию. Так вы сохраните возможность подключаться к хосту по обычному дефолтному порту и сможете позже повторить попытку настройки.