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

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

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

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

решение1

Да, вы можете использовать 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.

решение2

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

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

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

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

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

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

сеанс [успех=1 по умолчанию=игнорировать] pam_access.so accessfile=/etc/pam_access_localnet.conf
сеанс необязательный pam_echo.so file=/etc/notice

/etc/pam_access_localnet.conf:

+ : ВСЕ : 192.168.201.0/24
- : ВСЕ : ВСЕ

Связанный контент