Mar*_*ryl 40
您没有指定,您使用的是什么 SSH 服务器。我假设是 OpenSSH。
请注意,SSH 横幅和 MOTD 是两个不同的东西。
虽然在 SSH 终端中几乎无法区分,但它们有不同的行为,例如,在 SFTP 客户端中。
MOTD 只是打印在交互式终端上的文本。因此,它不会(也不能)发送到 SFTP 客户端,例如(稍后会详细介绍)。
MOTD 被硬编码到/etc/motd
OpenSSH 中。您只能使用PrintMotd
指令全局打开/关闭它。
但是,在某些 Linux 系统上,PrintMotd
始终关闭并且 MOTD 由 PAM 堆栈打印(使用pam_motd
模块)。在这种情况下,您可以通过/etc/pam.d/sshd
或将自定义motd=
路径指定为模块参数将其关闭。
SSH 横幅是一种特殊的 SSH 2.0 功能,在特定的 SSH 数据包 (SSH2_MSG_USERAUTH_BANNER) 中发送。
因此,即使是非终端客户端,如 SFTP 客户端,也可以处理它并显示给用户。例如,查看横幅在 WinSCP SFTP/SCP 客户端中的显示方式。
SSH 横幅可在sshd_config
usingBanner
和Match
指令中按用户(或组或其他条件)进行配置:
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Run Code Online (Sandbox Code Playgroud)
另请参阅禁用特定用户或 ips 的 ssh 横幅。
当然,您也可以对消息/横幅使用自定义实现。只需打印使用您的自定义逻辑从全局配置文件脚本中选择的消息。
与 MOTD 一样,这不适用于非交互式会话(SFTP 等)。
更重要的是,它不仅不起作用,您还需要确保仅为交互式终端打印消息。OpenSSH 自动为/etc/motd
. 要么使用仅针对交互式终端执行的全局配置文件脚本,要么根据TERM
环境变量的值有条件地打印消息。
如果您为非交互式会话打印消息,则会破坏任何使用严格协议(例如 SFTP 或 SCP)的客户端,因为客户端会尝试将您的文本消息解释为协议消息,但会严重失败。
请参阅WinSCP SFTP/SCP 客户端文档中此类问题的示例描述。
(我是 WinSCP 的作者)
您也可以使用"$HOME/.ssh/rc"
文件来存档您想要做的事情
echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World
Run Code Online (Sandbox Code Playgroud)
因此,您可以为每个用户拥有一个 ssh rc。
归档时间: |
|
查看次数: |
16869 次 |
最近记录: |