상호 작용 없이 비밀번호를 변경할 수 있지만 오류 없이 명령을 실행할 수는 없습니다.

상호 작용 없이 비밀번호를 변경할 수 있지만 오류 없이 명령을 실행할 수는 없습니다.

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

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

관련 정보