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확인 메시지가 표시되며 정상적으로 사용자가 추가됩니다. 단, 해당 자격 증명을 사용하여 계정에 로그인할 수는 없습니다.

서버에서 직접 이 명령을 하나씩 실행하려고 하면 모든 것이 잘 작동하고 계정에 로그인할 수 있으므로 인용 이스케이프 문제일 것이라고 생각하여 다음을 포함한 몇 가지 변형을 시도했습니다.

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

관련 정보