一聚教程网:一个值得你收藏的教程网站

热门教程

服务器 SSH 登录欢迎语 MOTD 如何配

时间:2026-08-08 13:16:55 编辑:袖梨 来源:一聚教程网

SSH登录后欢迎语(MOTD)需区分静态与动态机制:静态须设PrintMotd yes并重启sshd;动态推荐用/etc/update-motd.d/脚本(Ubuntu/Debian)或PAM pam_motd.so(RHEL/CentOS),且需检查sshd重启、PAM配置及shell初始化文件是否清屏。

SSH 登录后显示的欢迎语(MOTD)不是改完 /etc/motd 就自动生效的——现代 Linux 发行版大多默认禁用它,或改由 PAM 动态生成。关键在于区分“登录前”和“登录后”,以及静态与动态两种机制。

登录前显示:用 Banner(法律提示/安全声明)

这是用户输入用户名密码前看到的内容,适合放合规提示、授权声明等:

  1. 编辑 /etc/ssh/sshd_config,取消注释或添加这一行:

    Banner /etc/ssh/banner.txt

  2. 创建 banner 文件:
    sudo tee /etc/ssh/banner.txt <<'EOF'

    本系统仅供授权人员访问

    Unauthorized access is prohibited by law

    EOF

  3. 重启服务:sudo systemctl restart sshd

注意:Banner 不支持变量(如 n、$(hostname)),纯文本;且对所有连接者可见,包括失败尝试。

登录后显示:启用 MOTD(欢迎信息+系统状态)

这是用户成功认证、shell 启动前输出的内容。分两种主流方式:

  1. 静态方式(简单固定文字)

    编辑 /etc/motd,例如:echo "Welcome to web-prod-01" | sudo tee /etc/motd

    但必须在 /etc/ssh/sshd_config 中设 PrintMotd yes,再 sudo systemctl restart sshd

  2. 动态方式(推荐,含实时数据)

    Ubuntu/Debian 系默认走 /etc/update-motd.d/;RHEL/CentOS 需手动配置 PAM。

    例如新建脚本:

    sudo tee /etc/update-motd.d/10-header <<'EOF'

    #!/bin/sh

    echo "=== $(hostname -s) | $(date +%F) ==="

    echo "Load: $(uptime -p | sed 's/up //')"

    EOF

    然后加执行权限:sudo chmod +x /etc/update-motd.d/10-header

常见不生效原因和检查点

改了文件却没看到效果?重点查这三项:

  1. SSH 服务是否真正重启:sudo systemctl restart sshd(reload 不够)
  2. PAM 是否启用 motd:grep pam_motd /etc/pam.d/sshd,应有类似 session optional pam_motd.so 的行
  3. 用户 shell 初始化文件是否清屏:~/.bashrc/etc/profile 里有没有 clearreset —— 它们会把 MOTD 冲掉

进阶:让欢迎语带颜色和格式

MOTD 支持 ANSI 转义序列(如 e[1;32m 表示粗绿),但需确保终端支持:

  1. 脚本中用 printf 替代 echo 更可靠,例如:

    printf "e[1;36mHOST:e[0m $(hostname)n"

  2. 避免使用 figlettoilet 类工具直接写入 MOTD 脚本——它们依赖终端尺寸,远程 SSH 可能渲染错乱
  3. 若要美观排版,建议用固定宽度字符串+空格对齐,比依赖外部命令更稳定

热门栏目