як відключити вхід в SSH з паролем для деяких користувачів?


165

У Linux (Debian Squeeze) я хотів би відключити вхід в SSH, використовуючи пароль для деяких користувачів (вибрана група або всі користувачі, крім root). Але я не хочу відключати вхід, використовуючи для них сертифікат.

редагувати: велике спасибі за детальну відповідь! Чомусь це не працює на моєму сервері:

Match User !root
PasswordAuthentication no

... але може бути легко замінений на

PasswordAuthentication no
Match User root
PasswordAuthentication yes

Може, це через ваш відступ?
nil

7
Варто згадати, що ці рядки під відповідністю мають бути в кінці файлу
zidarsk8

1
! root також не працює для мене. Другий підхід зробив свою справу.
natenho

Я бачив випадки, коли Match User "!root,*"робив роботу.
Роман Хокк

Відповіді:


179

Спробуйте Matchв sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

Або за групою:

Match Group users
    PasswordAuthentication no

Або, як зазначено в коментарі, запереченням:

Match User !root
    PasswordAuthentication no

Зауважте, що відповідність діє "до тих пір, поки не з'явиться інший рядок відповідності або до кінця файлу". (відступ не суттєвий)


4
віддайте перевагу Match user !rootцьому випадку
84104

1
Дивовижно, я не знав про синтаксис відповідності. Одне з пропозицій я б хотів зробити, якщо це сервер із загальнодоступним відкриттям, я взагалі не дозволяю входити в систему через SSH. Напевно, це не велика угода, якщо це внутрішня
думка

4
@SpacemanSpiff Саме для цього потрібні а) надійні паролі та б) заборонені / відмовлені2ban.
ceejayoz

2
@ deed02392 Ви можете вважати, що ключ є дійсно, дуже сильним паролем, якщо ви хочете.
ceejayoz

4
Це набагато сильніше, що не в тому ж бальному парку, що це було моєю точкою. Аутентифікацію пароля слід також відключити для root, а ключі дозволяти лише для входу.
deed02392

21

Matchв sshd_configпрацює добре. Ви повинні використовувати Match allдля завершення блоку матчу, якщо ви використовуєте openssh 6.5p1 або вище. Приклад:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all

Мені це не вийшло ...
Димитріос

3

Є кілька способів, що ви можете зробити це - по-перше, ви могли б запустити другий демон sshd на іншому порту з різною конфігурацією - це трохи хак, але при певній роботі chroot він повинен працювати просто чудово.

Також ви можете дозволити автентифікацію пароля, але заблокуйте паролі для всіх, крім одного користувача. Користувачі із заблокованими паролями все ще зможуть автентифікувати відкриті ключі.


-1

Ви можете просто перейти до файлу / etc / ssh / sshd_config та додати рядок. Щоб дозволити -> AllowUsers user1 To Deny ---> DenyUsers user2

ми можемо дозволити / заборонити вхід для певного набору хостів за допомогою файлів hosts.allow або hosts.deny, розташованих у папці / etc


-1

З якоїсь причини безпеки вам може знадобитися заблокувати певний доступ користувача SSH до вікна Linux.

Відредагуйте файл sshd_config, місце розташування іноді буде різним, залежно від розподілу Linux, але зазвичай це в / etc / ssh /.

Відкрийте файл під час входу в систему як корінь:

# vi /etc/ssh/sshd_config

Вставте рядок до кінця конфігураційного файлу: -

DenyUsers username1 username2 username3 username4

Збережіть його та перезапустіть служби SSH. В основному ім'я користувача1, ім'я2, ім'я3 та ім’я44 Вхід SSH заборонено.

Виконайте команду нижче, щоб перезапустити те саме: -

# systemctl restart sshd

Вимога виконана. Візьміть ssh від цих користувачів, і ви отримаєте помилку "Доступ заборонено"


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