헤드리스 모드에서 비밀번호 변경

헤드리스 모드에서 비밀번호 변경

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'

물론 루트로 실행하십시오.

관련 정보