対話なしでパスワードを変更できますが、エラーなしでコマンドを実行することはできません。

対話なしでパスワードを変更できますが、エラーなしでコマンドを実行することはできません。

私のクラウドサーバーにログインすると、次のメッセージが表示されます。

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割り当てを2倍に強制する必要があります。

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

関連情報