![ssh 服务器登录成功后显示信息](https://linux22.com/image/784159/ssh%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%99%BB%E5%BD%95%E6%88%90%E5%8A%9F%E5%90%8E%E6%98%BE%E7%A4%BA%E4%BF%A1%E6%81%AF.png)
我有一个 debian ssh 服务器问题,我想在成功登录后显示一条消息,我已经使用了 motd,但 localhost 会显示它。我不想让本地机器显示它。我只想在特定用户成功登录 ssh 后显示它。
答案1
要在特定用户成功登录 SSH 后显示消息,您可以按照以下几个步骤操作:
创建一个文件,其中包含您希望在用户登录后显示的消息。例如,您可以创建一个名为“ssh_message”的文件,并在文件中添加您想要的消息。
修改SSH配置文件(/etc/ssh/sshd_config),在文件底部添加以下行:
ForceCommand echo "YOUR MESSAGE HERE"
保存文件并使用以下命令重新启动 SSH 守护程序:
sudo systemctl restart sshd
完成这些步骤后,特定用户登录 SSH 后将显示该消息。此方法将绕过“每日消息”(motd) 功能并直接向用户显示您的消息。
值得注意的是,如果操作不当,修改 SSH 配置文件可能会导致安全问题。因此,我建议首先在非生产环境中测试更改,并确保更改符合组织的安全策略。
答案2
我认为修改 sshd 配置可能适用于所有用户,而不一定只适用于一个用户。
另一种方法是使用 SSHLog:https://github.com/sshlog/agent/
您可以将其配置为监视一个或多个用户(例如 jdoe)的成功登录,然后在成功登录该用户的 TTY 时执行命令“write”。例如,这是我测试过的配置,它可以满足您的要求:
events:
- event: jdoe_logs_in
triggers: [ 'connection_established']
filters:
username: 'jdoe'
require_tty: True
actions:
- action: message_about_lunch_money
plugin: run_command_action
command: bash
args: ["-c", "echo 'Hello {{username}} do not forget that $4.75 you owe me for lunch!' | write {{username}} /dev/pts/{{tty_id}}"]
然后当他登录时他的 MOTD 将如下所示:
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-67-generic x86_64)
...
40 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm
*** System restart required ***
Last login: Tue Apr 18 11:41:16 2023 from 127.0.0.1
Message from root@server on pts/20 at 11:48 ...
Hello jdoe do not forget that $4.75 you owe me for lunch!
EOF