(一)脚本功能介绍
未登录使用复制功能(f12打开控制台,document.body.contentEditable=‘true’)
- 删除自建用户
- 删除自建用户的sudo权限
- 增加自建用户的sudo权限
- 自定义sshd端口
- 创建用户及开启秘钥登录,关闭密码验证登录
vi/vim 设置tab为4个空格_leo09999的博客-CSDN博客_设置vim的tab为四个空格
(二)创建用户
1,创建用户lanmao
useradd lanmao
2,创建免密登录
ssh-keygen
注意:将要ssh登录lanmao的用户的公钥内容放在lanmao用户的authorized_keys文件中,authorized_keys文件权限有严格要求,只能是600.
3,验证登录
ssh lanmao@remotehost
4,禁止特定用户使用密码SSH 登录
vim /etc/ssh/sshd_config
#匹配User
Match User user1,user2,user3
PasswordAuthentication no
#匹配group
Match Group group
PasswordAuthentication no
#匹配非root用户。
Match User !root
PasswordAuthentication no
注意:限制所有就不要使用match条件了。Match条件块的结束标识为下一个Match指令或者是文件结束。重启sshd后再次密码登录验证失败。
systemctl restart sshd
5,用户免密sudo。
vim /etc/sudoers
#添加如下内容,username为普通用户的名称。允许用户在任何地方运行任何命令都不需要密码
username ALL=(ALL)NOPASSWD:ALL
#可以如下格式限制,指定用户在执行/bin目录下的hello目录的时候 不需输入密码
username ALL=(ALL)NOPASSWD:/bin/hello
chmod -w /etc/sudoers
6,禁止root登录。
vim /etc/ssh/sshd_config
systemctl restart sshd
Ps:到此就完成了禁止root用户登录。禁止密码登录,允许lanmao用户执行sudo命令
7,脚本内容。
#/bin/bash
SSHDFILE="/etc/ssh/sshd_config"
NPFILE="/etc/sudoers"
KEY=`cat /tmp/private`
PUB=`cat /tmp/private.pub`
EUSER=`ls /home/`
ENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'`
echo "首次使用会下载expect,会比较慢,请耐心等待"
echo -e "当前自建用户有n$EUSERn具有免密执行sudo的用户有n$ENPUSER"
read -p $'若要执行删除任务,键入【yes】进入删除界面,不做任何事无需任何键入n' DEL
while [ "$DEL" == "yes" ]
do
read -p $'键入【usyes】进入删除用户选项,键入【npyes】进入删除sudo权限选项,不做任何事无需任何键入n' DELCHOO
while [ "$DELCHOO" == "usyes" ]
do
read -p $'请输入需要删除的账户:n' DELUS
if [ "$DELUS" == "root" ];then
echo "你吃多了?"
elif [ -z $DELUS ];then
echo "输入了一个空账户"
else
userdel -r $DELUS >/dev/null
if [ $? -eq 0 ];then
echo "自建用户$DELUS已删除"
else
echo "错误的账户输入"
fi
fi
NOWEUSER=`ls /home/`
echo -e "当前自建用户有:n$NOWEUSER"
read -p $'若要继续执行删除用户任务,键入【usyes】,否则无需任何键入n' DELCHOO
done
while [ "$DELCHOO" == "npyes" ]
do
read -p $'请输入需要解除权限的sudoler:n' DELNP
if [ "$DELNP" == "root" ];then
echo "你吃多了?"
elif [ -z $DELNP ];then
echo "输入了一个空账号"
else
chmod +w $NPFILE
sed -i "/$DELNP.*ALL/d" $NPFILE
chmod -w $NPFILE
echo "此处不做判断,建议复制粘贴,若是不存在的账户也不返回报错!!!"
fi
NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'`
echo -e "当前有免密执行sudo的用户有:n$NOWENPUSER"
read -p $'若要继续执行解除sudoler任务,键入【npyes】否则无需任何键入n' DELCHOO
done
read -p $'若要继续执行删除任务,键入【yes】进入删除界面,否则无需任何键入n' DEL
done
read -p $'是否需要为用户开启免密sudo权限,键入【yes】进入ADD选项,否则无需任何键入n' ADDNP
while [ "$ADDNP" == "yes" ]
do
NOWEUSER=`ls /home/`
echo -e "当前自建用户有:n$NOWEUSER"
NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'`
echo -e "当前有免密执行sudo的用户有:n$NOWENPUSER"
read -p $'键入需要开启免密的用户:n' ADDUS
TIME=`date +%Y%m%d%H%M`
cp $NPFILE /tmp/sudoers-$TIME
chmod +w $NPFILE
NOPASS="$ADDUS ALL=(ALL)NOPASSWD:ALL"
echo -e "$NOPASS" >> $NPFILE
grep $NOPASS $NPFILE >/dev/null
if [ $? -eq 0 ];then
echo "$USER免密执行sudo已完成。。。$NOPASS"
chmod -w $NPFILE
else
echo "执行异常,请手动检测。。。备份文件/tmp/sudoers-$TIME"
chmod -w $NPFILE
fi
NOWEUSER=`ls /home/`
echo -e "当前自建用户有:n$NOWEUSER"
NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'`
echo -e "当前有免密执行sudo的用户有:n$NOWENPUSER"
read -p $'是否需要为用户开启免密sudo权限,键入【yes】进入删除界面,否则无需任何键入n' ADDNP
done
read -p $'是否需要更改ssh_port,键入【yes】进入更改界面,否则无需任何键入n' SSHPORT
while [ "$SSHPORT" == "yes" ]
do
read -p $'键入需要的端口号:n' port
if [[ $port =~ ^[0-9]+$ ]];then
if [[ $port > 65535 ]] || [[ $port < 1 ]];then
echo "无效的端口,建议>1000,<65535,且未占用的端口"
else
PORT="Port $port"
TIME=`date +%Y%m%d%H%M`
cp $SSHDFILE /tmp/ssh_config-$TIME
sed -i "/^Port.*/d" $SSHDFILE
echo -e "n$PORT" >>$SSHDFILE
systemctl restart sshd
if [ $? -eq 0 ];then
echo "重启sshd成功,可验证是否已更改sshd端口号为$port"
else
echo "sshd服务重启失败,请查看是否/etc/ssh/sshd_config文件中有配置多个Port xx"
fi
fi
else
echo "输入的端口非整数"
fi
read -p $'是否需要更改ssh_port,键入【yes】进入更改界面,否则无需任何键入n' SSHPORT
done
read -p $'请将私钥内容粘贴在n/tmp/privaten请将公钥内容粘贴在n/tmp/private.pub中n准备工作完成后输入【yes/no】以开始结束!!n' READMAIN
if [ "$READMAIN" == "no" ];then
exit 1
elif [ "$READMAIN" == "yes" ];then
read -p $'创建用户:n' USER
if [ -z $USER ];then
echo "你输入了一个空账户"
else
USSHDIR="/home/$USER/.ssh/"
yum -y install expect >/dev/null
if id -u $USER >/dev/null >&2;then
echo "$USER exists"
else
useradd $USER
expect <<EOF
set timeout 10
spawn -noecho su - $USER -c ssh-keygen
expect {
"id_rsa):" {send "n";exp_continue}
"passphrase):" {send "n";exp_continue}
"again:" {send "n"}
}
send_user "nn$USER创建成功n"
EOF
echo -e "$KEY" >$USSHDIR/id_rsa
echo -e "$PUB" >$USSHDIR/id_rsa.pub
echo -e "$PUB" >>$USSHDIR/authorized_keys
chmod 600 $USSHDIR/authorized_keys
chown -R $USER:$USER $USSHDIR
echo "$USER密钥对更新完成。。。"
TIME=`date +%Y%m%d%H%M`
cp $SSHDFILE /tmp/ssh_config-$TIME
sed -i '/^#.*PubkeyAuth/s/^#//g' $SSHDFILE
KEYSH=`grep PubkeyAuth $SSHDFILE`
SWITCH=`grep PasswordAuthentication $SSHDFILE |awk '{print $2}'`
if [ "$SWITCH" == "yes" ];then
sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/g" $SSHDFILE
else
:
fi
systemctl restart sshd
if [ $? -eq 0 ];then
SWITCHQ=`grep PasswordAuthentication $SSHDFILE`
echo -e "禁止用户密码登录完成。。。$SWITCHQn允许用户使用秘钥登录。。。$KEYSH"
else
echo "sshd服务异常,请检测。。。备份文件/tmp/ssh_config-$TIME"
exit 1
fi
read -p $'允许免密执行sudo命令[yes],不添加直接enter/键入非[yes]n' CHOONP
if [ "$CHOONP" == "yes" ];then
chmod +w $NPFILE
TIME=`date +%Y%m%d%H%M`
cp $NPFILE /tmp/sudoers-$TIME
NOPASS="$USER ALL=(ALL)NOPASSWD:ALL"
echo -e "$NOPASS" >> $NPFILE
grep $USER $NPFILE >/dev/null
if [ $? -eq 0 ];then
echo "$USER免密执行sudo已完成。。。$NOPASS"
chmod -w $NPFILE
else
echo "执行异常,请手动检测。。。备份文件/tmp/sudoers-$TIME"
chmod -w $NPFILE
fi
else
:
fi
fi
fi
else
echo "请输入yes/no"
fi
原文地址:https://blog.csdn.net/haodayizhizhuzhu/article/details/129087125
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_12503.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。