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

118

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

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

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

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

johns-mbp:~ john$ ssh root@192.168.1.48
The 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)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
root@192.168.1.48's password:  

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

Джон
источник

Ответы:

142

Из справочной страницы :

PermitRootLogin

Указывает, может ли root войти в систему с помощью ssh (1). Аргумент должен быть «да», «без пароля», «только для принудительных команд» или «нет». По умолчанию «да».

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

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

Если для этого параметра установлено значение «нет», root не может войти в систему.

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

Флориан Диш
источник
2
Запрещение «root-логина» с использованием пароля считается более надежной защитой, чем его разрешение. Тем не менее, вы не должны входить в систему как root , если только другой метод (sudo и т. Д.) Не будет работать.
david6
5
Однако, как вы можете видеть, хотя на странице руководства указано, что по умолчанию установлено значение «да», в Ubuntu используется значение по умолчанию «без пароля».
ferrouswheel
36
Так without-passwordзначит все методы разрешены, кроме пароля? Это действительно звучит как «разрешено входить в систему без пароля».
Готье
1
«Весь root-доступ должен быть облегчен через локальный вход в систему с уникальным и идентифицируемым идентификатором пользователя, а затем через команду su после локальной аутентификации. Прямой вход в систему root крайне небезопасен и мало что дает для отслеживания аудита для обеспечения подотчетности». - Руководство IBM AIX по СНГ
Доминик Антал,
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
эндолит
16

На самом деле этот параметр ничего не делает, если вы используете аутентификацию 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
Atari911
источник
1
По моему краткому опыту , даже установка этого параметра noне будет PermitRootLogin without-passwordработать, как-то! :(
cregox
1
@cregox, если вы используете типичную настольную систему, вам нужно это сделать, ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipи это создает условия, если вы ~/.ssh/authorized_keysне можете войти в систему как пользователь root, вы бы не создали этот файл в /root/.ssh/, но он работает, если вы копируете файл там
Rutrus
3

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

Вот пример использования unison для синхронизации: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Гвинет Ллевелин
источник
2
Разве вход в систему с обычным пользователем (скорее всего, с использованием криптографических ключей) и принадлежность к sudoгруппе не позволят вам сделать это?
NS du Toit
2

В новых версиях sshd «без пароля» было изменено на «Запретить пароль».

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

teknopaul
источник