我正在尝试使用以下脚本通过 SSH 将用户帐户添加到我的远程服务器(在 Ubuntu 22.04 上运行):
#!/bin/bash
protect="y"
ssh -i ssh_key [email protected] <<END
sudo deluser testuser
if [[ "$protect" =~ ^[yY]*$ ]]; then sudo useradd -p $(openssl passwd -1 "password") testuser && echo "User added successfully"; fi
END
read -n 1 -srp "Press any key to exit."
User added successfully
显示确认消息并且用户已正常添加。除非我无法使用这些凭据登录该帐户。
当我尝试直接在服务器上一一执行这些命令时,一切正常,我可以登录到该帐户,所以我认为这将是一些引号转义问题,我尝试了一些变体,包括:
\""password"\"
"\"password"\"
\""password\""
"\"password\""
但没有一个奏效。
请帮我。
答案1
每次运行命令时都会有不同的输出。我用这个命令从这个答案演示问题:
openssl passwd -6 -salt xyz password
$
输出中以 开头的变量将被替换:
$ openssl passwd -6 -salt xyz password
$6$xyz$ShNnbwk5fmsyVIlzOf8zEg4YdEH2aWRSuY4rJHbzLZRlWcoXbxxoI0hfn0mdXiJCdBJ/lTpKjk.vu5NZOv0UM0
$ bash << EOF
echo $(openssl passwd -6 -salt xyz password)
EOF
/lTpKjk.vu5NZOv0UM0
您可以openssl
在远程主机上运行以下命令:
#!/bin/bash
protect="y"
if [[ "$protect" =~ ^[yY]*$ ]]; then
ssh -i ssh_key [email protected] 'sudo useradd -p $(openssl passwd -1 "password") testuser && echo "User added successfully"'
fi
read -n 1 -srp "Press any key to exit."
请注意以下之间的区别:
$ ssh HOST 'echo "$(openssl passwd -6 -salt xyz password)"'
$ ssh HOST echo "$(openssl passwd -6 -salt xyz password)"