
VPS 설정을 완전히 자동화하는 스크립트를 작성 중인데 루트 비밀번호를 변경해야 합니다. 스크립트가 SSH를 통해 실행되므로 입력을 피하고 싶습니다.
임의의 값을 명령 입력으로 리디렉션하는 방법이 있습니까 passwd
?
편집하다
나는 passwd < passwd_file.txt
암호를 두 번 포함한다는 것을 알고 있습니다... 이 목적으로 임시 파일을 사용하는 것이 조금 어색해 보이기 때문에 더 우아한 방법이 있는지 알고 싶습니다.
답변1
사용 중인 UNIX 버전은 밝히지 않았지만 Linux에서는 passwd(1) 매뉴얼 페이지에 다음이 표시됩니다.
--stdin
This option is used to indicate that passwd should read the new
password from standard input, which can be a pipe.
따라서 당신이 해야 할 일은 다음을 실행하는 것뿐입니다.
echo 'somepassword' | passwd --stdin
추가 편집: chpasswd
(적어도) Red Hat과 Ubuntu 모두에 더 많은 이식성이 존재합니다.
echo 'someuser:somepassword' | chpasswd
매뉴얼 페이지를 참조하십시오.
답변2
원하는 일을 하기가 어려울 것 같아요. 이 passwd
명령은 설명하는 상황을 피하기 위해 많은 노력을 기울여 비밀번호 추측 체계를 방해하고 많은 잠재적인 보안 문제를 우회합니다.
명령 을 사용할 수 있나요 useradd
? 일반적인 Linux에는 useradd
다음을 설정할 수 있는 "-p" 또는 "--password" 옵션이 있습니다.암호화된비밀번호를 어떤 값으로 바꾸세요. 파일에서 암호화된 비밀번호를 얻을 수 있습니다 /etc/shadow
.
다른 옵션은 파일을 원숭이로 사용하는 것입니다 /etc/shadow
. 사용하기가 너무 어렵 sed
거나 솔트 처리되고 암호화된 루트 비밀번호를 변경하는 것이 있어서는 안 됩니다 .
답변3
예! 길을 찾았습니다. printf
나를 구해줬어요:
HOST=...
echo "Root password? " && read -r ROOT_PASSWORD
...
ssh root@$HOST <<EOF
printf "$ROOT_PASSWORD\n$ROOT_PASSWORD\n" | passwd
EOF
그것이 나에게 가장 좋은 방법입니다. 비밀번호가 로컬 네더 원격 호스트에 명확하게 전달되지 않으므로 깨끗하고 완벽하게 안전합니다(ssh 연결을 통해서만).
답변4
passwd 주위에 tmux를 감쌀 수 있습니다.
tmux new-session -ds chpwd passwd
tmux send-keys -t chpwd NEWPASSWORD$'\n'
tmux send-keys -t chpwd NEWPASSWORD$'\n'
물론 루트로 실행하십시오.