Skip to content
huazaiki's blog
Go back

自定义 SSH 登陆服务器之后的提示信息(MOTD)

Edit page

每次通过 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)

因此,我们看到的欢迎信息主要分为三部分:

  1. OpenSSH 输出的 Last login
  2. Ubuntu 的 MOTD(Message Of The Day)
  3. 云厂商(如阿里云)附加的欢迎信息

查看 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

重新登录即可看到新的欢迎界面。

当然,脚本中也可以加入更多动态信息,例如:

因为它本质上只是一个 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 登录后的欢迎信息其实由多个部分组成:

了解了这些组成之后,我们就可以自由定制登录界面,让它真正展示自己关心的服务器状态,而不是默认的宣传信息。


Edit page

Next Post
上手配置一台新的服务器(五):配置日常更新工作流