当用户通过 SSH 访问我的 Linux 主机时,我会运行一个小脚本。此脚本应为用户验证和/或设置 Google Authenticator MFA 访问权限。
目前,它可以按预期工作,但有一个警告 - 在 MFA 配置过程中的任何时候,如果用户(即)CTRL+ C,则设置向导会中断,但 SSH 会话会继续。我需要它来注销尝试访问的用户。
我怎样才能实现这个目标?
这是我在文件底部添加的内容.bashrc
(请注意,这是非常对我来说是新的,我愿意接受对我当前尝试的批评/改进)。
# MFA validation/configuration
if [[ -n $SSH_CONNECTION ]] ; then
echo "SSH connection to remote host successful."
echo "testing if MFA is configured..."
# is this test enough?
file="$HOME/.google_authenticator"
if [ -f "$file" ] ; then
printf "MFA configured, you may proceed.\n"
else
printf "MFA not configured; running setup wizard.\n"
# the command runs, but the else bit is never reached
if google-authenticator ; then
# I reach this point if I go to the end of the wizard
echo "MFA setup successful"
else
# this point is never reached
echo "MFA setup failed - logging you out"
exit
fi
fi
fi
答案1
您可以添加行
trap '' 2
在脚本开始时禁用CTRL+C和
trap 2
最后启用CTRL+C功能。
这将阻止用户阻止脚本执行。
请注意,这应该添加到 /etc/bashrc,使其成为系统范围的,而不是用户可修改的
https://www.cyberciti.biz/faq/unix-linux-shell-scripting-disable-controlc/