shell创建用户密钥对登录脚本

1、创建脚本命名为 create_user.sh

2、脚本复制到 /home/shell 目录
3、进入/home/shell 目录 执行脚本 `./create_user.sh testuser ` testuser为你要创建的用户名
4、执行完成 会产生 ./key/testuser 目录,里面是当前用户公私钥和密码
5、请将 ./key/testuser/testuser.pri.pem 下载到本地用于 xshell 登录
6、验证登录无误后请将 shell 目录打包下载到本地,并删除服务器上该目录;
7、新的服务器部署可将 shell 上传至 /home 重复 步骤3 操作即可创建 testuser 用户与前一台服务器一致信息(须确保 key/testuser 内文件未改动),如果新服务器创建同名用户不使用同一密钥,请删除 ./key 下的用户信息。

#!/bin/bash

#获取随机字符串
gen_random_string(){
    if [ ! -n "$1" ] ;then
        rand_len='16'
    else
        rand_len=$1
    fi

    if [ ! -n "$2" ] ;then
        orgstring="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!;%^&*_"
    else
        orgstring="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    fi

    n=1;
    random_string='';
    while [ "${n:=1}" -le "$rand_len" ]
    do
        random_string="$random_string${orgstring:$(($RANDOM%${#orgstring})):1}"
        let n+=1
    done
    echo ${random_string};
}

username=$1;

if [ ! $username ]; then echo "请输入用户名!";exit 1; fi
keyname=$username;
password_file_path=${PWD}/key/${username}/password
# -f 参数判断 $file 是否存在,不存在则创建
file_path=${PWD}/key/${username}/${keyname}.pub.pem

#密钥对不存在则创建
if [ ! -f "$file_path" ]; then
    mkdir ${PWD}/key/${username}

    gen_random_string 10 1;
    password=${random_string};

    expect <<EOF
set timeout -1
spawn ssh-keygen -t rsa
expect "(/root/.ssh/id_rsa):"
send "/root/.ssh/${keyname}\r"
expect "(empty for no passphrase):"
send "${password}\r"
expect "again:"
send "${password}\r"
expect eof
EOF

    mv /root/.ssh/${keyname} ${PWD}/key/${username}/${keyname}.pri.pem
    mv /root/.ssh/${keyname}.pub ${PWD}/key/${username}/${keyname}.pub.pem

    #将密码写入文件方便以后读取设置唯一密码
    echo "${password}" >> ${password_file_path}

fi

#添加用户
useradd ${username} -g wheel
#从文件读取用户密码
password=$(head -n 1 $password_file_path);
#设置用户密码
echo ${password} | passwd ${username} --stdin > /dev/null 2>&1

mkdir /home/${username}/.ssh
chown -R ${username} /home/${username}/.ssh
cat ${PWD}/key/${username}/${keyname}.pub.pem >> /home/${username}/.ssh/authorized_keys
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值