通过 SSH 添加帐户不适用于 openssl

通过 SSH 添加帐户不适用于 openssl

我正在尝试使用以下脚本通过 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)"

相关内容