如何让Ubuntu 22.04.4 LTS服务器SSH登录时显示/etc/update-motd.d/生成的MOTD信息
我来帮你排查和解决这个问题~Ubuntu的MOTD(登录提示信息)显示是由几个关键配置和脚本控制的,咱们一步步来排查修复:
检查SSH的PAM配置
SSH登录时的MOTD展示依赖PAM模块的支持,先打开/etc/pam.d/sshd文件(用sudo nano /etc/pam.d/sshd),确认里面有以下两行:session optional pam_motd.so motd=/run/motd.dynamic session optional pam_motd.so noupdate如果没有,就把这两行添加进去,保存后退出。
确保update-motd脚本有可执行权限
/etc/update-motd.d/目录下的脚本负责生成动态MOTD,首先查看这些脚本的权限:ls -l /etc/update-motd.d/正常情况下每个脚本的权限应该是
-rwxr-xr-x(即所有者、组、其他用户都有执行权限)。如果某个脚本没有执行权限,用以下命令添加:sudo chmod +x /etc/update-motd.d/[对应脚本名]检查SSH服务配置
打开/etc/ssh/sshd_config(用sudo nano /etc/ssh/sshd_config),确认里面有PrintMotd yes这一行。如果之前被改成了no,就改回yes。修改完成后重启SSH服务生效:sudo systemctl restart sshd另外,
PrintLastLog yes是控制显示“Last login”信息的,这个不影响MOTD的展示,两者可以共存。排查用户个人配置的干扰
有些用户可能在个人目录的~/.bashrc、~/.profile或者~/.bash_profile里添加了屏蔽MOTD的配置,比如unset MOTD之类的语句。可以打开这些文件检查,把相关的屏蔽行注释掉(在前面加#),然后重新登录测试。手动测试MOTD生成
如果上面的配置都没问题,可以手动运行脚本生成MOTD,看看是否正常:sudo run-parts /etc/update-motd.d/然后查看生成的内容:
cat /run/motd.dynamic如果这里能看到完整的MOTD内容,说明脚本本身没问题,问题出在登录环节的配置上,再回头检查前面的PAM和SSH配置。
备注:内容来源于stack exchange,提问作者cornfed




