Назад | Перейти на главную страницу

Как отображать SSH-баннер при входе в систему, но только для аутентификации по паролю

У меня есть предупреждающее сообщение, которое отображается для пользователя после того, как он вводит свое имя пользователя для входа на наши серверы Linux. Я хочу отображать это сообщение только для проверки подлинности пароля, а не при использовании ключей. Он должен показываться только пользователю, который входит в систему на хосте, а не когда они отправляются с одного хоста на другой (на всех наших хостах настроены ключи, поэтому мы можем ssh переходить от одного к другому без ввода паролей).

В настоящее время у меня есть строка для баннера в файле / etc / ssh / sshd_config, которая указывает на текстовый файл, содержащий предупреждающее сообщение. Баннер, похоже, не имеет дополнительных параметров конфигурации, поэтому мне интересно, есть ли способ сделать это с помощью pam или какого-либо другого механизма? Спасибо.

Да, вы можете использовать pam_echo плагин:

auth required pam_unix.so
auth optional pam_echo.so file=/etc/ssh/password_banner.txt

Это должно привести к выводу pam_echo после входа в систему с паролем.

Видеть http://www.linux-pam.org/Linux-PAM-html/sag-pam_echo.html для документов.

Изменить: вам также необходимо убедиться, что у вас есть UsePAM yes в твоем sshd_config. Заменил пароль на auth.

Я хочу отображать это сообщение только для проверки подлинности пароля, а не при использовании ключей. Он должен показываться только пользователю, который входит в систему на хосте, а не когда они отправляются с одного хоста на другой (на всех наших хостах настроены ключи, поэтому мы можем ssh переходить от одного к другому без ввода паролей).

Ты говоришь о пользователь ключи ~/.ssh/authorized_keys или хозяин ключи /etc/ssh/ssh_known_hosts?

В настоящее время у меня есть строка для баннера в файле / etc / ssh / sshd_config, которая указывает на текстовый файл, содержащий предупреждающее сообщение.

Banner отображается перед любая аутентификация происходит.

Мне интересно, есть ли способ сделать это с помощью pam или какого-либо другого механизма?

Вы можете попробовать проверить удаленное (исходное) имя хоста: проверьте с помощью pam_access если пользователь приходит из-за пределов вашей сети:

session [success=1 default=ignore] pam_access.so accessfile=/etc/pam_access_localnet.conf
session optional pam_echo.so file=/etc/notice

/etc/pam_access_localnet.conf:

+ : ALL : 192.168.201.0/24
- : ALL : ALL