SSHによるアカウントの追加はopensslでは機能しません

SSHによるアカウントの追加はopensslでは機能しません

次のスクリプト(Ubuntu 22.04で実行)を使用して、SSHを介してリモートサーバーにユーザーアカウントを追加しようとしています。

#!/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確認メッセージが表示され、通常はユーザーが追加されます。ただし、その資格情報を使用してアカウントにログインすることはできません。

サーバーから直接このコマンドを1つずつ実行しようとすると、すべてがうまく機能し、アカウントにログインできるため、引用エスケープの問題であると考えて、次のようないくつかのバリエーションを試しました。

\""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)"

関連情報