必须使用ssh协议层原生banner机制实现登录前定制提示;第一步是创建纯文本banner文件,执行sudo tee /etc/ssh/banner。

在统信UOS系统中通过SSH远程登录时,若希望用户在输入密码前就看到定制化的安全提示、赛事标识或系统说明,必须使用SSH协议层原生支持的Banner机制——它唯一可靠,不受PAM、motd动态脚本或PrintMotd配置影响。
启用并配置SSH Banner文件
第一步:创建纯文本Banner文件,内容不含变量,仅支持静态文字。
执行命令:sudo tee /etc/ssh/banner ========================================<br>⚠️ 中国技能大赛 - Linux模块专用系统<br>所有操作将被实时审计,请确认授权<br>========================================<br>EOF
第二步:确保文件权限为644且编码为UTF-8无BOM。
【文件权限错误会导致sshd启动失败】执行:sudo chmod 644 /etc/ssh/banner && sudo chown root:root /etc/ssh/banner
第三步:编辑SSH主配置,启用Banner。
运行 sudo vim /etc/ssh/sshd_config,找到以 #Banner none 开头的行,删去开头的#号,并将 none 替换为 /etc/ssh/banner,保存退出。
第四步:重启SSH服务使配置生效。
执行 sudo systemctl restart ssh;若状态显示 failed,请立即检查 /etc/ssh/sshd_config 是否存在语法错误(如多出空格、路径拼错)。
禁用干扰项:清除motd与PAM干扰
方法一:关闭PAM自动覆盖motd
编辑 /etc/pam.d/sshd,找到含 pam_motd.so 的行,在其开头加 # 注释掉。这一步不做,即使设置了Banner,部分客户端仍可能在认证后叠加显示motd内容。
方法二:停用PrintMotd机制
在 /etc/ssh/sshd_config 中确认存在 PrintMotd no;若该行被注释或不存在,手动添加并保存。否则,/etc/motd 或 /run/motd.dynamic 可能在登录后强行输出,破坏Banner的“认证前唯一性”。
方法三:删除或清空默认motd文件
执行 sudo rm -f /etc/motd;若需保留空档提示,可改用 sudo truncate -s 0 /etc/motd。不建议留空文件但不删,某些PAM模块会因文件存在而尝试读取。
验证Banner是否生效
从另一台Linux或macOS机器执行:ssh -o ConnectTimeout=3 -o BatchMode=yes user@你的UOS_IP | head -n 5。
若第一屏立即出现你设定的Banner文字,说明配置成功;若只显示密码提示或空白,则Banner未加载,需回查sshd_config语法和文件路径权限。
注意:Windows PuTTY用户需在连接设置 → Connection → Data 中勾选“Enable SSH authentication banner”,否则默认不显示。











