如何在登录时显示 SSH 横幅,但仅用于密码验证

如何在登录时显示 SSH 横幅,但仅用于密码验证

当用户输入用户名登录我们的 Linux 服务器时,系统会显示一条警告消息。我只想在密码验证时显示此消息,在使用密钥时不显示。它应该只显示给登录主机的用户,而不显示给从一台主机 ssh 到另一台主机的用户(我们的主机都设置了密钥,因此我们无需输入密码即可从一台主机 ssh 到另一台主机)。

目前,/etc/ssh/sshd_config 文件中有一行 Banner,它指向包含警告消息的文本文件。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 yessshd_config用 auth 替换密码。

答案2

我只想在密码验证时显示此消息,而不是在使用密钥时显示。它应该只显示给登录主机的用户,而不是显示给从一个主机 ssh 到另一个主机的用户(我们的主机都设置了密钥,因此我们可以在不输入密码的情况下从一个主机 ssh 到另一个主机)。

你是说用户~/.ssh/authorized_keys主持人/etc/ssh/ssh_known_hosts

目前,/etc/ssh/sshd_config 文件中有一行 Banner,它指向一个包含警告消息的文本文件。

Banner被展示发生任何身份验证。

我想知道是否有办法使用 pam 或其他机制来做到这一点?

您可以尝试检查远程(源)主机名:检查pam_access用户是否来自您的网络之外:

会话 [成功=1 默认=忽略] pam_access.so accessfile=/etc/pam_access_localnet.conf
会话可选 pam_echo.so 文件=/etc/notice

/etc/pam_access_localnet.conf

+ :全部:192.168.201.0/24
- :全部:全部

相关内容