Настройка SSH доступа по сертификатам

В целях удобства и безопасности не мешает настроить доступ к ssh серверу по ключам, а стандартную аутентификацию по паролю отключить. Это обеспечит сервак надежной защитой от брутфорса и избавит нас от перманентного ввода пароля вручную. В терминале linux ключи генерируются встроенной утилитой ssh-keygen

В папке будет создано 2 файла:

  • id_rsa — приватный ключ, устанавливается на клиенте
  • id_rsa.pub — публичный ключ, устанавливаемый на сервере

Добавить публичный ключ на удаленную серверную машину можно командой:

На локальной серверной машине публичный ключ добавляется так:

Теперь на серверной машине отредактируем файл /ect/ssh/sshd_config таким образом, чтобы указанные строки имели параметры:

И перезапустим сервис

Чтобы добавить приватный ключ на клиентскую локальную машину:

В ином случае, добавить приватный ключ так, как того требует программа — ssh клиент.

И напоследок, в целях безопасности, изменим стандартный ssh порт и отключим авторизацию под root по ssh. То есть пользователь должен будет сперва авторизоваться, а затем через su входить под root или sudo. Также отключим авторизацию по паролю, авторизация останется только по ключу. В конфиге:

и сделаем рестарт сервиса:

Поздравляю! Ваш сервер в абсолютной безопасности! Вы не сможете на него попасть. У вас есть ключ для root? Но доступ к ssh под root отключен. У вас есть пользователь? Но вы не создали для него ssh ключи. А доступ по паролю к ssh закрыт для всех пользователей.

Так что, прежде чем будете страдать манией преследования и отключать методы авторизации, советую всё досконально проверять.