每次通过 SSH 登录 Linux 服务器时,都会看到一大段欢迎信息,例如:
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-124-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
2 additional security updates can be applied with ESM Apps.
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Thu Jul 23 11:08:32 2026 from xxx.xxx.xxx.xxx
刚开始觉得这些信息还挺有用,但随着服务器配置完成,这些默认提示不仅占地方,而且真正有价值的信息并不多。
于是我决定把登录界面改造成属于自己的服务器首页。
SSH 登录后显示的信息来自哪里?
实际上,登录后的内容并不是由一个文件生成的,而是多个组件共同完成的。
整个登录流程大致如下:
SSH 登录
│
▼
认证成功
│
▼
OpenSSH 输出 Last login
│
▼
PAM 调用 pam_motd
│
▼
执行 /etc/update-motd.d/ 下的脚本
│
▼
输出最终 MOTD(Message Of The Day)
│
▼
进入 Shell(.bashrc/.profile)
因此,我们看到的欢迎信息主要分为三部分:
- OpenSSH 输出的 Last login
- Ubuntu 的 MOTD(Message Of The Day)
- 云厂商(如阿里云)附加的欢迎信息
查看 MOTD 的组成
Ubuntu 使用 /etc/update-motd.d/ 目录中的脚本动态生成欢迎信息。
查看目录:
ls -l /etc/update-motd.d/
例如:
00-header
10-help-text
50-landscape-sysinfo
50-motd-news
90-updates-available
91-contract-ua-esm-status
92-unattended-upgrades
95-hwe-eol
99-custom
这些脚本会按照文件名前的数字顺序依次执行,并将输出拼接起来,最终组成登录时看到的 MOTD。
例如:
00-header:输出 Ubuntu 版本信息
10-help-text:Documentation、Support 等提示
90-updates-available:可更新的软件包数量
91-contract-ua-esm-status:Ubuntu Pro / ESM 提示
92-unattended-upgrades:自动更新状态
删除默认提示
如果不需要某些提示,可以直接取消脚本的执行权限。
例如关闭 Ubuntu Pro 提示:
sudo chmod -x /etc/update-motd.d/91-contract-ua-esm-status
关闭自动更新提示:
sudo chmod -x /etc/update-motd.d/92-unattended-upgrades
关闭帮助信息:
sudo chmod -x /etc/update-motd.d/10-help-text
如果以后需要恢复,只需重新添加执行权限即可:
sudo chmod +x /etc/update-motd.d/10-help-text
自定义自己的 MOTD
不仅可以取消脚本的执行权限,我们还可以新增自定义的脚本来定制输出内容。
创建文件:
sudo vim /etc/update-motd.d/99-custom
内容如下:
#!/bin/sh
HOSTNAME=$(hostname)
OS=$(grep PRETTY_NAME /etc/os-release | cut -d '"' -f2)
KERNEL=$(uname -r)
UPTIME=$(uptime -p | sed 's/up //')
MEMORY=$(free -h | awk '/Mem:/ {print $3 " / " $2}')
DISK=$(df -h / | awk 'NR==2 {print $3 " / " $2}')
cat <<EOF
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🖥 ${HOSTNAME}
${OS}
Kernel : ${KERNEL}
Uptime : ${UPTIME}
Memory : ${MEMORY}
Disk : ${DISK}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EOF
然后赋予执行权限:
sudo chmod +x /etc/update-motd.d/99-custom
重新登录即可看到新的欢迎界面。
当然,脚本中也可以加入更多动态信息,例如:
- CPU 使用率
- Docker 容器数量
- Nginx 运行状态
- Redis、PostgreSQL 状态
- 公网 IP
- SSL 证书剩余有效期
因为它本质上只是一个 Shell 脚本,只要能够通过命令获取的数据,都可以显示在登录页面。
阿里云欢迎信息
阿里云 ECS 镜像通常还会额外输出:
Welcome to Alibaba Cloud Elastic Compute Service !
这部分并不属于 Ubuntu 的 MOTD,而是阿里云镜像添加的登录欢迎信息。
可以通过搜索关键字找到对应脚本:
grep -R "Alibaba Cloud Elastic Compute Service" /etc 2>/dev/null
定位到脚本后,删除或取消执行权限即可。
去掉 Last login
登录时最后一行:
Last login: Thu Jul 23 11:08:32 2026 from xxx.xxx.xxx.xxx
并不是 MOTD,而是 OpenSSH 输出的。
如果希望关闭,可以修改 SSH 配置:
sudo vim /etc/ssh/sshd_config
添加或修改:
PrintLastLog no
然后重启 SSH:
sudo systemctl restart ssh
即可取消显示最近一次登录记录。
最终效果
经过整理后,我最终保留了登录时真正有价值的信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🖥 huazaiki Cloud Server
Ubuntu 24.04.4 LTS Kernel : 6.8.0-124-generic Uptime : 15 days
Memory : 1.2G / 4G Disk : 18G / 80G
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
相比系统默认输出,这样的登录界面更加简洁,也能第一时间了解服务器当前的运行状态。
总结
SSH 登录后的欢迎信息其实由多个部分组成:
OpenSSH:负责输出 Last loginPAM:调用 pam_motd/etc/update-motd.d/:动态生成 Ubuntu 的 MOTD- 云厂商:可能额外注入自己的欢迎信息
了解了这些组成之后,我们就可以自由定制登录界面,让它真正展示自己关心的服务器状态,而不是默认的宣传信息。