В целях удобства и безопасности не мешает настроить доступ к ssh серверу по ключам, а стандартную аутентификацию по паролю отключить. Это обеспечит сервак надежной защитой от брутфорса и избавит нас от перманентного ввода пароля вручную. В терминале linux ключи генерируются встроенной утилитой ssh-keygen
# создадим папку и сгенерируем в ней 2 ключа, приватный и публичный mkdir sshkeys cd !$ ssh-keygen -t rsa -b 4096 -f id_rsa # вводим и подтверждаем пароль к приватному ключу(не обязателен)
В папке будет создано 2 файла:
- id_rsa — приватный ключ, устанавливается на клиенте
- id_rsa.pub — публичный ключ, устанавливаемый на сервере
Добавить публичный ключ на удаленную серверную машину можно командой:
ssh-copy-id -i id_rsa.pub root@hostname
На локальной серверной машине публичный ключ добавляется так:
cat id_rsa.pub >> /root/.ssh/authorized_keys
Теперь на серверной машине отредактируем файл /ect/ssh/sshd_config таким образом, чтобы указанные строки имели параметры:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
И перезапустим сервис
systemctl restart ssh
Чтобы добавить приватный ключ на клиентскую локальную машину:
ssh-add ~/sshkeys/id_rsa
В ином случае, добавить приватный ключ так, как того требует программа — ssh клиент.
И напоследок, в целях безопасности, изменим стандартный ssh порт и отключим авторизацию под root по ssh. То есть пользователь должен будет сперва авторизоваться, а затем через su входить под root или sudo. Также отключим авторизацию по паролю, авторизация останется только по ключу. В конфиге:
Port 7777 PermitRootLogin no PasswordAuthentication no
и сделаем рестарт сервиса:
systemctl restart ssh
Поздравляю! Ваш сервер в абсолютной безопасности! Вы не сможете на него попасть. У вас есть ключ для root? Но доступ к ssh под root отключен. У вас есть пользователь? Но вы не создали для него ssh ключи. А доступ по паролю к ssh закрыт для всех пользователей.
Так что, прежде чем будете страдать манией преследования и отключать методы авторизации, советую всё досконально проверять.