Ubuntu系统自定义SSH登录提示脚本
【摘要】 Ubuntu系统自定义SSH登录提示脚本
一、SSH登录提示的类型与区别
在Ubuntu系统中,SSH登录提示主要分为两种类型:
- 登录前提示:在用户输入凭证前显示,通常用于显示系统信息或安全警告
- 登录后提示:用户成功登录后显示,常用于显示系统状态、日常消息等
二、 配置登录前提示信息
2.1 使用Banner功能
登录前提示可以通过SSH的Banner功能实现。
- 编辑SSH配置文件:
vim /etc/ssh/sshd_config
- 找到并修改Banner设置(如果不存在则添加):
/etc/ssh/banner 是 SSH 服务器的登录前提示文件,用于在用户认证前显示自定义信息(如警告、免责声明或系统访问规则)。
Banner /etc/ssh/banner
- 创建Banner文件:
vim /etc/ssh/banner
在文件中添加你想要显示的内容,例如:
# 警告:未经授权的访问禁止!
Authorized access only!
- 重启SSH服务:
systemctl restart ssh
2.2 注意事项
- Banner文件不支持Shell命令或变量扩展
- 内容会在密码提示前显示给所有连接的用户
- 适合用于显示法律警告或系统信息
三、 配置登录后提示信息
3.1 使用MOTD(Message of the Day)
MOTD是用户登录后显示的消息,Ubuntu使用动态MOTD系统。
- 查看MOTD脚本目录:
cd /etc/update-motd.d/
ls -la
- 编辑现有脚本(这些脚本按数字顺序执行):
vim /etc/update-motd.d/00-header
vim /etc/update-motd.d/10-help-text
- 创建自定义脚本:
vim /etc/update-motd.d/99-custom
添加内容:
#!/bin/bash
echo "==================================="
echo " 欢迎访问 $(hostname) 服务器"
echo " 当前时间:$(date)"
echo " 系统负载:$(uptime)"
echo "==================================="
- 确保脚本可执行:
chmod +x /etc/update-motd.d/99-custom
3.2 手动设置静态MOTD
t我们也可以使用传统的静态MOTD:
vim /etc/motd
添加你想要显示的静态内容。
四、高级定制技巧
4.1 使用ASCII艺术字
使用工具创建炫酷的ASCII艺术字:
- 安装figlet和cowsay:
apt install figlet cowsay
- 在MOTD脚本中使用:
#!/bin/bash
figlet "Welcome to $(hostname)"
cowsay "系统安全运行中..."
4.2 使用cool-login-banner工具
这是一个Python工具,可以轻松创建漂亮的登录横幅:
- 安装工具:
pip install cool-login-banner
- 使用示例:
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 安全考虑
- 不要泄露敏感信息:避免在提示中显示系统详细版本、内部IP等
- 法律警告:在Banner中添加适当的未授权访问警告
- 定期更新:确保提示信息及时反映系统变更
六、实用示例
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)