Linux下堡垒机认证,用户名密码
加进自己的验证机制来控制ssh到某台Linux机的用户。
目的是在用户输入linux用户名密码后,多加一轮验证。
比如,给三个用户登进该Linux主机的权限,存到特定文件里。
1.用户名密码正确才可登陆
用户名和密码 如下。
Lucy:123
Ben:456
Jerry:789
2.如果某个用户输入密码错误达到三次,则将该用户账户锁住。
脚本如下
AccountFile=自行定义。
首先输入AccountFile内容,可以自己创建或者用vi, 下面是从屏幕输入,使用EOF。
if [ ! -e $AccountFile ];then
cat >$AccountFile<<EOF
Lucy:123:0
Ben:456:0
Jerry:789:0
EOF
fi 如果文件不存在,使用默认
main process 以下是主要脚本内容
while true;do
echo -e "\033[32m Welcome to Linux Club\033[0m" 输出欢迎菜单
read -p "Please input your username: " username 读用户的键盘输入,并且保存在username变量里
AccountUser=`awk -F: '{print $1}' $AccountFile` awk获取文件的第一列,得到用户名
# echo Account user is $AccountUser 此行仅仅用来测试是否成功读出了AccountUser用户名
for Name in $AccountUser;do 在文件的用户名中遍历查找与用户输入一致的
if [ x$Name == x$username ];then
Pass=$(grep $username $AccountFile|awk -F: '{print $2}') 从AccountFile读出密码
Count=$(grep $username $AccountFile|awk -F: '{print $3}') count记录错误次数
if [ $Count -lt 3 ];then 验证密码已经 错误的次数是否小于三次
read -s -p "Please input your passwd: " passwd
echo ""
if [ x$Pass == x$passwd ];then
sed -i "/$username/s/:[0-9]$/:0/" $AccountFile密码正确,将错误次数置零
echo welcome 成功输出欢迎菜单
bash
else
echo wrong pass
let Count=$Count+1
sed -i "/$username/s/:[0-9]$/:$Count/" $AccountFile 错误次数写回文件
break
fi
else
echo Your account has been locked
exit 5
fi
fi
done
done
将该脚本加进/etc/profile里。
sh /root/xcui/account.sh
之后再ssh进来的运行结果如下:
输入正确密码进入bash
输入错误密码,大于三次时锁账户。
在这里插入图片描述