Ubuntu系统自定义SSH登录提示脚本

举报
江湖有缘 发表于 2025/09/27 02:54:45 2025/09/27
【摘要】 Ubuntu系统自定义SSH登录提示脚本

一、SSH登录提示的类型与区别

在Ubuntu系统中,SSH登录提示主要分为两种类型:

  • 登录前提示:在用户输入凭证前显示,通常用于显示系统信息或安全警告
  • 登录后提示:用户成功登录后显示,常用于显示系统状态、日常消息等

二、 配置登录前提示信息

2.1 使用Banner功能

登录前提示可以通过SSH的Banner功能实现。

  1. 编辑SSH配置文件
vim /etc/ssh/sshd_config
  1. 找到并修改Banner设置(如果不存在则添加):

/etc/ssh/banner 是 SSH 服务器的登录前提示文件,用于在用户认证前显示自定义信息(如警告、免责声明或系统访问规则)。

Banner /etc/ssh/banner

在这里插入图片描述

  1. 创建Banner文件
vim /etc/ssh/banner

在文件中添加你想要显示的内容,例如:

# 警告:未经授权的访问禁止!
Authorized access only!

在这里插入图片描述

  1. 重启SSH服务
systemctl restart ssh

2.2 注意事项

  • Banner文件不支持Shell命令或变量扩展
  • 内容会在密码提示前显示给所有连接的用户
  • 适合用于显示法律警告系统信息

三、 配置登录后提示信息

3.1 使用MOTD(Message of the Day)

MOTD是用户登录后显示的消息,Ubuntu使用动态MOTD系统。

  1. 查看MOTD脚本目录
cd /etc/update-motd.d/
ls -la

在这里插入图片描述

  1. 编辑现有脚本(这些脚本按数字顺序执行):
vim /etc/update-motd.d/00-header
vim /etc/update-motd.d/10-help-text
  1. 创建自定义脚本
vim  /etc/update-motd.d/99-custom

添加内容:

#!/bin/bash
echo "==================================="
echo "   欢迎访问 $(hostname) 服务器"
echo "   当前时间:$(date)"
echo "   系统负载:$(uptime)"
echo "==================================="
  1. 确保脚本可执行
chmod +x /etc/update-motd.d/99-custom

3.2 手动设置静态MOTD

t我们也可以使用传统的静态MOTD:

vim  /etc/motd

添加你想要显示的静态内容。

四、高级定制技巧

4.1 使用ASCII艺术字

使用工具创建炫酷的ASCII艺术字:

  1. 安装figlet和cowsay
apt install figlet cowsay

在这里插入图片描述

  1. 在MOTD脚本中使用
#!/bin/bash
figlet "Welcome to $(hostname)"
cowsay "系统安全运行中..."

4.2 使用cool-login-banner工具

这是一个Python工具,可以轻松创建漂亮的登录横幅:

  1. 安装工具
pip install cool-login-banner
  1. 使用示例
from cool_login_banner import BannerSetter, FigletEngine

# 创建横幅设置器
banner_setter = BannerSetter()

# 设置SSH登录横幅
banner_setter.set_ssh_banner(
    text="欢迎访问服务器",
    font="starwars",
    fore_color="green"
)

4.3 添加系统信息显示

创建显示系统状态的脚本:

#!/bin/bash
echo "=== 系统状态 ==="
echo "主机名: $(hostname)"
echo "运行时间: $(uptime -p)"
echo "内存使用: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "磁盘使用:"
df -h | grep -v tmpfs

五、解决常见问题

5.1 SSH登录显示异常

如果新建用户SSH登录时显示异常(如不显示用户名、主机名):

vim /etc/passwd

找到相应用户,将/bin/sh改为/bin/bash

5.2 权限问题

确保所有配置文件权限正确:

sudo chmod 644 /etc/ssh/banner
sudo chmod 755 /etc/update-motd.d/*

6.3 安全考虑

  1. 不要泄露敏感信息:避免在提示中显示系统详细版本、内部IP等
  2. 法律警告:在Banner中添加适当的未授权访问警告
  3. 定期更新:确保提示信息及时反映系统变更

六、实用示例

6.1 完整的登录前警告Banner

vim /etc/ssh/banner
********************************************************************************
*                            安全访问警告                                      *
*                                                                              *
*   此系统为授权用户专用,所有活动将被记录。未经授权的访问或使用是违法的,   *
*   将会受到法律追究。                                                         *
*                                                                              *
********************************************************************************

在这里插入图片描述

6.2丰富的登录后MOTD示例

结合多种信息显示的MOTD脚本:

vim  /etc/update-motd.d/99-custom
#!/bin/bash
echo "$(figlet -f small $(hostname))"
echo "系统时间: $(date)"
echo "运行时间: $(uptime -p)"
echo "登录用户: $(who | wc -l)"
echo "系统负载: $(cat /proc/loadavg | awk '{print $1", "$2", "$3}')"
echo "内存使用: $(free -m | grep Mem | awk '{printf "%.1f%%", $3/$2*100}')"
echo "磁盘使用:"
df -h | grep -v tmpfs | grep -v udev
echo "************************** 重要通知 **************************"

在这里插入图片描述

  • 增加执行权限
chmod +x /etc/update-motd.d/99-custom

6.3 实际效果

  • 登录前提示信息

在这里插入图片描述

  • 登录后提示信息
    在这里插入图片描述

七、总结

通过合理配置SSH登录提示信息,我们可以提升服务器用户体验和安全性。无论是简单的文本提示还是复杂的动态信息显示,Ubuntu都提供了灵活的机制满足不同需求。

最佳实践建议:定期审查和更新提示内容,确保信息准确且符合当前安全策略,同时避免信息过载影响用户体验。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。