У меня есть специальная системная учетная запись с именем «git», которой управляет gitlab / gitolite. Пользователи, подключающиеся к этой учетной записи, всегда используют ключи SSH, у пользователя «git» нет пароля. Если пользователи подключаются без ключа SSH или с неверно настроенным ключом, они запутаются, когда их попросят ввести пароль. Я ищу способ настроить сервер, чтобы в этом случае он не запрашивал пароль, а вместо этого отображал какое-то удобное для пользователя сообщение («Ваш ключ отсутствует или недействителен» и т. Д.) и разрывает соединение. Возможно ли это в конфигурации sshd или каким-либо другим способом (возможно, PAM)?
Обратите внимание, что я не спрашивают, как установить публичные / частные соединения без пароля. Как запретить серверу запрашивать пароль для одного конкретного пользователя.
(Я понимаю, что такая настройка показывает потенциальному злоумышленнику, что пользователь «git» существует в системе. Но поскольку «git» не имеет пароля, и злоумышленник может легко определить его существование в любом случае, я считаю, что это лишь небольшой риск.)
Вы можете отключить вход по паролю для этого конкретного пользователя. Вы не можете предоставить конкретное сообщение, но, по крайней мере, им не будет предложено ввести пароль. Добавьте следующее в /etc/ssh/sshd_config
:
Match user git
PasswordAuthentication no
ChallengeResponseAuthentication no