在 SSH 登录时放置一个横幅,通知用户系统属于某人,“您可能会受到起诉”等,是标准做法。但是,这个横幅无害地滚动过去。
有没有什么方法可以要求用户回答“你接受吗?是/否”这个问题,然后才能继续?
(这个问题不涉及横幅或确认步骤的法律或实际价值,而只是技术上是否可行)
答案1
根据 serverliving.com 的评论,我通过编写一个文件解决了这个问题/etc/profile.d/confirm.sh
:
#!/bin/bash
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
while true; do
read -p "Do you accept the terms and conditions? [y/N] " yn
case $yn in
[Yy]* ) break ;;
[Nn]* ) exit 1 ;;
esac
done
fi
这在任何 SSH 会话中都会触发,但非 SSH 会话中不会触发。主要缺点是它没有在忽略配置文件的非交互式 shell 上触发,例如:
$ ssh somehostname ls
当然,提示的具体措辞取决于您,并且只有在同意条款副本后该消息才有意义。