Що означає "без пароля" у файлі 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.

Якщо для цього параметра встановлено "лише для примусових команд", кореневий вхід з аутентифікацією відкритого ключа буде дозволений, але тільки якщо commandпараметр вказаний (що може бути корисно для віддалених резервних копій, навіть якщо кореневий вхід зазвичай не дозволений) . Усі інші методи аутентифікації вимкнено для root.

Якщо для цього параметра встановлено значення "ні", root не дозволяється входити в систему.

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


2
Недозволення "кореневого входу" за допомогою пароля вважається сильнішою безпекою, ніж дозволяти. Однак це означає, що ви взагалі не повинні входити в root , якщо жоден інший метод (sudo тощо) не спрацює.
david6

5
Як ви можете бачити, хоча сторінка man вказує, що типовим є "так", Ubuntu зробив за замовчуванням "без пароля".
ferrouswheel

36
Значить, without-passwordвсі дозволені методи, крім пароля? Це дійсно звучить як "дозволено входити в систему без необхідності пароля".
Готьє

1
"Увесь кореневий доступ повинен бути спрощений через локальний вхід з унікальним ідентифікованим ідентифікатором користувача, а потім за допомогою команди 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

1
У моєму короткому досвід , навіть встановивши це noне робитиме на PermitRootLogin without-passwordнасправді працює, як - то! :(
Крегокс

1
@cregox, якщо ви використовуєте типову систему настільних ПК, вам потрібно це зробити, ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipі це створює ~/.ssh/authorized_keysна увазі, якщо ви не можете увійти як root, ви б не створили цей файл у /root/.ssh/, але він працює, якщо ви копіюєте файл там
Рутрус

3

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

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


2
Чи не зможете увійти з звичайним користувачем (скоріше за все використовуючи криптографічні ключі), і якщо він належить до sudoгрупи, ви також можете це зробити?
NS du Toit

2

У нових версіях sshd "без пароля" було змінено на "заборонити-пароль".

Обидві версії працюють, мабуть, найкраще використовувати "заборонити пароль", якщо можете: це пояснює себе краще.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.