상호작용 없이 비밀번호를 변경하지만 오류 없이 명령을 실행할 수 없음

상호작용 없이 비밀번호를 변경하지만 오류 없이 명령을 실행할 수 없음

클라우드 서버에 로그인하면 다음 메시지가 나타납니다.

WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user.
(current) UNIX password: 

현재 비밀번호를 입력하고 그 후에 새 비밀번호를 입력하는 프로세스를 자동화해야 합니다.

그러나 명령을 실행하려고 할 때마다 다음과 같은 오류가 발생합니다 WARNING: Your password has expired.\nPassword change required but no TTY available.(Node.js 앱에서 SSH를 통해 연결 중입니다).

이 문제를 어떻게 해결할 수 있나요? 어쨌든 해당 오류 없이 명령을 실행하여 비밀번호를 변경할 수 있습니까?

답변1

ssh스위치 를 사용하여 tty를 강제로 할당할 수 있습니다 -t. 그런 다음 이전 비밀번호와 새 비밀번호를 파이프로 연결하는 것이 가능할 수도 있습니다. -tSSH 클라이언트의 표준 입력이 터미널이 아닌 경우에도 tty를 강제로 할당하려면 두 배로 늘려야 합니다.

echo -en 'oldpw\nnewpw\nnewpw\n' | ssh -tt somehost true

관련 정보