Ограничить парольный доступ по SSH для каждого пользователя, но разрешить аутентификацию по ключу

22

Можно ли отключить PASSWORD SSH доступ к пользователю, но разрешить аутентификацию ключа для каждого пользователя? Я имею в виду, что у меня есть пользователь A, которому я не хочу предоставлять доступ на основе пароля, НО я не хочу, чтобы он использовал только аутентификацию по ключу для доступа к серверу (ам). Благодарность

круговращение
источник

Ответы:

49

Вы можете добавить разделы «Соответствие» для соответствия определенным пользователям или группам в нижней части sshd_config, например:

Match user stew
PasswordAuthentication no

или

Match group dumbusers
PasswordAuthentication no
тушеное мясо
источник
9
Я бы не стал делать отступы, так как это предполагает, что только на строки с отступами влияет то, Matchкогда в действительности все настройки затрагиваются до следующей Matchдирективы. Может быть смущает кого-то, кто не знаком с синтаксисом.
Майкл Миор
2
@MichaelMior есть ли способ "EndMatch"?
Ник Т
4
@NickT Matchработает до следующего Matchили Hostключевого слова. Вы могли бы просто использовать Match user *.
Майкл Миор
@MichaelMior Значит ли это, что если вы используете Match user ZaQwEdCxS, вы можете отобразить набор строк конфигурации, которые никто не будет использовать, временно или постоянно?
Tripp Kinetics
Это будет означать, что все строки конфигурации после этого будут применяться только к именованным пользователям ZaQwEdCxS. Если у вас есть другой вопрос, вы должны задать новый вопрос.
Майкл Миор
4

Просто заблокируйте пароли пользователей, которым вы не хотите входить с паролями:

usermod -L <user>

Затем поместите действительный открытый ключ в их .ssh/authorized_keysфайл, и они смогут войти в систему только с соответствующим закрытым ключом, но не с паролем.

Примечание: это нарушит sudo, если пользователь не имеет NOPASSWD: в своей записи visudo

Оливер
источник
8
Это также сломает судо. Возможно, не проблема в этом случае, но это стоит упомянуть.
EEAA
Да это правда. Я должен был упомянуть это.
Оливер
1
Некоторые настройки OpenSSH (например, я думаю, что Ubuntu 14.04 в конфигурации по умолчанию) не позволяют заблокированным пользователям
входить
@NilsToedtmann Можете ли вы привести источник для проверки? Это было бы очень важно отметить и в ответе, если так.
Метаграф
-3

ты должен посмотреть в

/etc/ssh/sshd_config

Я думаю, что вы ищете

PasswordAuthentication yes

измените его на нет и не забудьте перезапустить sshd

Alexus
источник
2
Я знаю об этом - хотя это глобальные настройки - я хочу более детальный вариант - поэтому я сказал «для каждого пользователя» - я хочу это только для некоторых пользователей (используется для взаимодействия внутри кластера между серверами в кластере) - не для всех пользователей
gyre
о, извини, я не прочитал это правильно, тогда то, что @stew порекомендовал, это путь
alexus