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