Что означает "без пароля" в файле sshd_config?

Я только что установил Ubuntu 14.04 на свой сервер и настраивал все свои конфигурационные файлы, когда наткнулся на это в своем sshd_config файл:

# Authentication:LoginGraceTime 120PermitRootLogin without-passwordStrictModes yes

Это меня очень встревожило. Я подумал, что вполне возможно, что кто-то может войти на мой сервер как root без пароля.

Я попытался подключиться к своему серверу от имени root через:

johns-mbp:~ john$ ssh root@192.168.1.48The authenticity of host '192.168.1.48 (192.168.1.48)' can't be established.RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.root@192.168.1.48's password:  

Я ввел пустой пароль, и он не впустил меня, что было большим облегчением. Итак, мой вопрос: что означает "без пароля" и почему это значение по умолчанию в Ubuntu 14.04?

Из manpage:

PermitRootLogin

Указывает, может ли root входить в систему с помощью тсс(1). Аргумент должен быть “да”, “без пароля”, “только принудительные команды” или "нет”. Значение по умолчанию - “да”.

Если для этого параметра установлено значение “без пароля”, аутентификация по паролю для root отключена.

Если для этого параметра установлено значение “только принудительные команды”, будет разрешен вход в систему root с аутентификацией по открытому ключу, но только в том случае, если command была указана опция (которая может быть полезна для создания удаленных резервных копий, даже если вход с правами root обычно запрещен). Все остальные методы проверки подлинности отключены для root.

Если для этого параметра установлено значение “нет”, root не имеет права входить в систему.

Таким образом without-password разрешает вход в систему root только с аутентификацией по открытому ключу. Это часто используется со сценариями командной оболочки и автоматизированными задачами.

На самом деле этот параметр практически ничего не делает, если вы используете аутентификацию PAM. В нижней части sshd_config конфигурационный файл, который вы найдете:

# Set this to 'yes' to enable PAM authentication, account processing,# and session processing. If this is enabled, PAM authentication will# be allowed through the ChallengeResponseAuthentication and# PasswordAuthentication.  Depending on your PAM configuration,# PAM authentication via ChallengeResponseAuthentication may bypass# the setting of "PermitRootLogin without-password".# If you just want the PAM account and session checks to run without# PAM authentication, then enable this but set PasswordAuthentication# and ChallengeResponseAuthentication to 'no'.

Настройкой по умолчанию в Ubuntu является использование аутентификации PAM:

UsePAM yes

В более новых версиях sshd (OpenSSH 7.0 и выше, выпущенных 2015-08-11) "without-password" было изменено на "prohibit-password".

Обе версии работают, вероятно, лучше всего использовать "prohibit-password" если вы можете: это лучше объясняет само себя.

Источник:

  • sshd_config(5): PermitRootLogin теперь принимает аргумент "запретить пароль" как менее двусмысленный синоним "без пароля".

Обратите внимание, что существуют законные причины для входа в систему через root (но с использованием криптографических ключей и никогда пароль). Типичным примером является удаленная синхронизация двух серверов (чтобы один из них использовался в качестве отказоустойчивого). Поскольку структура должна быть идентичной, часто требуется пароль root.

Вот пример использования унисон для синхронизации.