Настройка SSH-сервера на доступ только по открытому ключу

Ужа довольно-таки давно я перевёл все свои обслуживаемые серверы на FreeBSD на удалённое управление через SSH с аутентификацией только по ключам. Новые серверы я настраиваю редко, поэтому забываю, что и как нужно изменить в настройках SSH-сервера для такого способа аутентификации. Также недавно возникла необходимость настроить такой же способ доступа и на сервере CentOS7. Кроме того в обоих операционках включена аутентификация по открытым ключам, так что необходимо только отключить аутентификацию по паролю.

При подключении к серверу по ssh мы хотим получить:

  1. Запрет подключения пользователя root;
  2. Отключение аутентификации пользователя по паролю (при изменениях системы всё равно требуется пароль пользователя при работе с sudo или пароль root при работе с su);
  3. Дополнительная опция будет изменение порта, на котором работает SSH (настройки фаерволла для работы на нестандартном порту рассматриваться в данной статье не будут).

Будем считать, что пользователь, отличный от root, в требуемых операционных системах заведён и также имеются пары открытый-закрытый ключи для удалённого подключения к нашим серверам. В обоих операционных системах в качестве SSH-сервера используется OpenSSH от проекта OpenBSD, так что механизм работы с ним одинаков, поэтому помещаем открытые ключи в файл ~/.ssh/authorized_keys на управляемых серверах. Изменения необходимо вносить в файле /etc/ssh/sshd_config также в обоих операционных системах.

Начнём с FreeBSD.

Выполним настройки по пунктам:

  1. Дополнительных действий для запрета подключения пользователя root не требуется, т.к. по умолчанию подключение пользователя root по SSH запрещено;

  2. Для отключения аутентификации по паролю необходимо внести изменения в двух параметрах: раскомментируем строку PasswordAuthentication no и выставляем параметр ChallengeResponseAuthentication no;

  3. Для изменения порта, на котором будет работать SSH необходимо раскомментировать строку #Port 22 и выставить вместо 22 порта необходимый, например Port 12345.

Для применения изменений необходимо перезапустить демона SSH (например командой service sshd restart). Можно заметить, что при перезапуске демона SSH текущий сеанс SSH не прерывается и можно запустить ещё один сеанс связи с сервером для проверки правильности настроек и в случае возникновения проблем вносить изменения в первом сеансе.

Настройка доступа по SSH на CentOS7.

  1. Для отключения доступа по SSH пользователю root необходимо раскоментировать параметр #PermitRootLogin yes и выставить его PermitRootLogin no.

  2. Для отключения аутентификации по паролю необходимо изменить строку PasswordAuthentication yes на PasswordAuthentication no;

  3. Для изменения порта, на котором будет работать SSH также необходимо раскомментировать строку #Port 22 и выставить вместо 22 порта необходимый, например Port 23456.

Для применения изменений необходимо перезапустить демона SSH (например командой systemctl restart sshd). Здесь также при перезапуске демона SSH текущий сеанс SSH не прерывается.