我想在我的 Debian 12 系统上禁用 MOTD。我更新了 sshd_config 文件以不显示 MOTD,但它仍然显示。它是否可能来自另一个模块?我该如何禁用它?
我使用 shell 脚本在 Vultr 中部署服务器。我需要能够在 shell 脚本中调用命令来禁用 MOTD,这样我就不必进入服务器为每个新服务器进行此更改。
答案1
为了禁用(或以其他方式管理)MOTD 的输出,通常需要考虑三个地方。
SSH 服务器配置
/etc/ssh/sshd_config
。文档写道,PrintMotd
指定sshd
(8)/etc/motd
在用户交互登录时是否打印。(在某些系统上,它也由 shell、/etc/profile
或同等程序打印。)默认值为yes
。所以
PrintMotd no
在我的安装(Debian 12)中,这已经设置为
no
,所以它显然不是消息输出的来源。PAM。
/etc/pam.d/sshd
我们可以看到# Print the message of the day upon successful login. # This includes a dynamically generated part from /run/motd.dynamic # and a static (admin-editable) part from /etc/motd. session optional pam_motd.so motd=/run/motd.dynamic session optional pam_motd.so noupdate
打开 root shell(
sudo -s
或其他)。不要依赖使用sudo
作为前缀来编辑和更改文件。打开 root shell。真的。保存该文件的副本,然后注释掉这两session
行以禁用 MOTD。重新启动 sshd (systemctl restart sshd
) 并测试您是否仍可以登录。如果出现问题,请使用仍处于打开状态的 root shell 恢复更改并重新测试。Shell。检查
/etc/profile
、/etc/bash.basrc
和其他 shell 初始化脚本,以确保没有显示 MOTD。(不太可能,但我们会检查。)grep -ril motd /etc/zsh /etc/bash.bashrc /etc/profile /etc/profile.d
您可以放心地忽略任何“没有这样的文件或目录“错误。在我的系统上没有找到匹配的文件。