1497 字
7 分钟
服务器登录公告配置
登录通知类型说明
Linux系统中有三种主要的登录通知:
| 通知类型 | 显示时机 | 配置文件 | 说明 |
|---|---|---|---|
| Banner | 登录前(输入密码前) | /etc/ssh/sshd_config | 法律声明、警告信息 |
| MOTD | 登录后 | /etc/motd 或 /etc/update-motd.d/ | 欢迎消息、系统信息 |
| Last Login | 登录后 | SSH配置 | 上次登录时间和IP |
第一部分:配置登录前横幅(Banner)
1. 创建横幅文件
# 创建横幅文件sudo nano /etc/ssh/banner2. 添加横幅内容
################################################################################ ## 🚀 欢迎访问服务器 ## ## 警告:本系统仅供授权用户使用! ## 所有活动将被记录和监控。 ## 未经授权的访问将被追究法律责任。 ## ################################################################################3. 配置SSH使用横幅
# 编辑SSH配置sudo nano /etc/ssh/sshd_config找到 Banner 配置行并修改:
# 启用横幅Banner /etc/ssh/banner4. 重启SSH服务
sudo systemctl restart ssh5. 测试横幅显示
ssh username@服务器IP第二部分:配置登录后欢迎消息(MOTD)
Ubuntu系统使用动态MOTD系统,通过脚本生成消息。
方法一:使用静态MOTD(简单)
1. 禁用动态MOTD
# 备份现有配置sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
# 编辑PAM配置sudo nano /etc/pam.d/sshd注释掉这两行(在行首添加 #):
# session optional pam_motd.so motd=/run/motd.dynamic# session optional pam_motd.so noupdate2. 创建静态MOTD
sudo nano /etc/motd添加自定义消息:
╔══════════════════════════════════════════════════════════════╗║ ║║ 🎉 欢迎登录 Ubuntu 服务器! ║║ ║║ 服务器名称:Production Server ║║ 系统版本:Ubuntu 22.04 LTS ║║ 维护联系:admin@example.com ║║ ║║ 📚 文档:https://wiki.example.com ║║ 🔧 工单:https://tickets.example.com ║║ ║╚══════════════════════════════════════════════════════════════╝3. 设置文件权限
sudo chmod 644 /etc/motd方法二:自定义动态MOTD脚本(推荐)
动态MOTD可以显示实时系统信息。
1. 了解动态MOTD脚本位置
# 查看现有脚本ls -la /etc/update-motd.d/脚本按数字顺序执行:
00-header- 系统信息头10-help-text- 帮助信息50-motd-news- Ubuntu新闻80-livepatch- Livepatch状态90-updates-available- 可用更新91-release-upgrade- 版本升级提示95-hwe-eol- 硬件支持提示
2. 禁用不需要的脚本
# 禁用Ubuntu新闻sudo chmod -x /etc/update-motd.d/50-motd-news
# 禁用Livepatch提示sudo chmod -x /etc/update-motd.d/80-livepatch
# 禁用释放升级提示sudo chmod -x /etc/update-motd.d/91-release-upgrade
# 禁用所有默认脚本(如果要完全自定义)sudo chmod -x /etc/update-motd.d/*3. 创建自定义欢迎脚本
sudo nano /etc/update-motd.d/01-custom-banner添加以下内容:
#!/bin/bash
# 颜色定义RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'BLUE='\033[0;34m'NC='\033[0m' # No Color
echo -e "${GREEN}"echo "╔══════════════════════════════════════════════════════════════╗"echo "║ ║"echo "║ 🚀 欢迎登录 Ubuntu 服务器 ║"echo "║ ║"echo "╚══════════════════════════════════════════════════════════════╝"echo -e "${NC}"
# 显示系统信息echo -e "${BLUE}📊 系统信息:${NC}"echo " ├─ 主机名:$(hostname)"echo " ├─ 内核版本:$(uname -r)"echo " ├─ 运行时间:$(uptime -p)"echo " ├─ 系统负载:$(uptime | awk -F'load average:' '{print $2}')"echo ""
# 显示磁盘使用情况echo -e "${BLUE}💾 磁盘使用:${NC}"df -h | grep -E '^/dev/' | awk '{printf " ├─ %s: %s / %s (%s)\n", $6, $3, $2, $5}'echo ""
# 显示内存使用echo -e "${BLUE}🧠 内存使用:${NC}"free -h | grep Mem | awk '{printf " ├─ 已用: %s / %s\n", $3, $2}'echo ""
# 显示登录用户echo -e "${BLUE}👥 当前在线用户:${NC}"who | awk '{printf " ├─ %s (来自 %s)\n", $1, $5}' | sed 's/[()]//g'echo ""
# 显示重要提示echo -e "${YELLOW}⚠️ 提示:${NC}"echo " ├─ 请勿在生产环境进行未经测试的操作"echo " ├─ 所有操作将被记录"echo " └─ 遇到问题请联系:admin@example.com"echo ""4. 设置脚本权限
sudo chmod +x /etc/update-motd.d/01-custom-banner5. 测试MOTD
# 手动运行MOTD脚本查看效果sudo run-parts /etc/update-motd.d/
# 或者重新登录查看方法三:创建极简版MOTD
如果只想显示简单的欢迎消息:
# 禁用所有动态脚本sudo chmod -x /etc/update-motd.d/*
# 创建简单的欢迎脚本sudo nano /etc/update-motd.d/00-header添加内容:
#!/bin/bashecho ""echo "🎉 欢迎登录 $(hostname)"echo "📅 当前时间:$(date '+%Y-%m-%d %H:%M:%S')"echo ""设置权限:
sudo chmod +x /etc/update-motd.d/00-header第三部分:配置Last Login信息
1. 禁用Last Login提示
# 编辑SSH配置sudo nano /etc/ssh/sshd_config添加或修改:
# 禁用最后登录信息PrintLastLog no2. 重启SSH服务
sudo systemctl restart ssh第四部分:高级自定义示例
示例1:带系统监控的MOTD
sudo nano /etc/update-motd.d/10-system-info#!/bin/bash
# 获取系统信息HOSTNAME=$(hostname)UPTIME=$(uptime -p | sed 's/up //')LOAD=$(cat /proc/loadavg | awk '{print $1, $2, $3}')MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')DISK=$(df -h / | awk 'NR==2{print $5}')USERS=$(who | wc -l)
# 显示信息cat << EOF
┌─────────────────────────────────────────────────────┐│ 系统状态监控 - $(date '+%Y-%m-%d %H:%M')├─────────────────────────────────────────────────────┤│ 主机名称: $HOSTNAME│ 运行时间: $UPTIME│ 系统负载: $LOAD│ 内存使用: $MEMORY│ 磁盘使用: $DISK│ 在线用户: $USERS└─────────────────────────────────────────────────────┘
EOFsudo chmod +x /etc/update-motd.d/10-system-info示例2:带安全提示的MOTD
sudo nano /etc/update-motd.d/20-security-info#!/bin/bash
# 检查可用更新UPDATES=$(apt list --upgradable 2>/dev/null | grep -c upgradable)SECURITY=$(apt list --upgradable 2>/dev/null | grep -i security | wc -l)
# 检查重启需求REBOOT_REQUIRED=""if [ -f /var/run/reboot-required ]; then REBOOT_REQUIRED="⚠️ 需要重启系统"fi
# 显示信息cat << EOF📦 系统更新状态: ├─ 可用更新:$UPDATES 个 ├─ 安全更新:$SECURITY 个 └─ $REBOOT_REQUIRED
EOFsudo chmod +x /etc/update-motd.d/20-security-info示例3:带Docker状态的MOTD
如果服务器运行Docker:
sudo nano /etc/update-motd.d/30-docker-info#!/bin/bash
# 检查Docker是否安装if command -v docker &> /dev/null; then CONTAINERS=$(docker ps -q | wc -l) IMAGES=$(docker images -q | wc -l)
cat << EOF🐳 Docker 状态: ├─ 运行中的容器:$CONTAINERS └─ 镜像数量:$IMAGES
EOFfisudo chmod +x /etc/update-motd.d/30-docker-info第五部分:完整配置示例
推荐的完整配置
# 1. 禁用所有默认脚本sudo chmod -x /etc/update-motd.d/*
# 2. 创建自定义头部sudo nano /etc/update-motd.d/00-header#!/bin/bashecho ""echo -e "\033[0;32m╔═══════════════════════════════════════════╗\033[0m"echo -e "\033[0;32m║ 🚀 欢迎登录生产环境服务器 ║\033[0m"echo -e "\033[0;32m╚═══════════════════════════════════════════╝\033[0m"echo ""# 3. 创建系统信息脚本sudo nano /etc/update-motd.d/10-sysinfo#!/bin/bash
HOSTNAME=$(hostname)KERNEL=$(uname -r)UPTIME=$(uptime -p | sed 's/up //')LOAD=$(cat /proc/loadavg | awk '{print $1, $2, $3}')
echo "📊 系统信息:"echo " ├─ 主机: $HOSTNAME"echo " ├─ 内核: $KERNEL"echo " ├─ 运行时间: $UPTIME"echo " └─ 负载: $LOAD"echo ""# 4. 创建资源使用脚本sudo nano /etc/update-motd.d/20-resources#!/bin/bash
# 内存MEMORY=$(free -h | awk 'NR==2{printf "%s/%s (%.2f%%)", $3, $2, $3*100/$2}')
# 磁盘DISK=$(df -h / | awk 'NR==2{printf "%s/%s (%s)", $3, $2, $5}')
echo "💻 资源使用:"echo " ├─ 内存: $MEMORY"echo " └─ 磁盘: $DISK"echo ""# 5. 设置权限sudo chmod +x /etc/update-motd.d/00-headersudo chmod +x /etc/update-motd.d/10-sysinfosudo chmod +x /etc/update-motd.d/20-resources
# 6. 测试sudo run-parts /etc/update-motd.d/