web-dev-qa-db-ja.com

usermodおよびsshコマンドを使用してユーザーのパスワードを変更する

それぞれに同じユーザーセットを持つ2台のマシンがあります。 1台のマシンにスクリプトがあり、両方のマシンのパスワードを変更したい。

そこで、ランダムなパスワードを生成してからハッシュし、次のようにusermodコマンドに渡します。

usermod -p PASSWORD_HASH USER
ssh REMOTE_USER@REMOTE_Host Sudo usermod -p PASSWORD_HASH USER

REMOTE_USERには、パスワードを要求せずにSudoを使用してそのコマンドを実行する特権があります。

この結果、ローカルマシンでパスワードが正常に変更されます。次のことを試してすぐに確認できます。

su USER

/ etc/shadowファイルもチェックしましたが、ハッシュが実際に正しく保存されているようです。

ただし、他のマシンにジャンプしてそこにUSERとしてログインしようとすると、アクセスできません。認証エラーが発生します。スーパーユーザー特権でリモートマシンにログインし、/ etc/shadowファイルをチェックすると、パスワードハッシュが完全に文字化けし、意味がありません。

ただし、そのリモートマシン上で、sshを使用せずにまったく同じコマンドを実行すると、

Sudo usermod -p PASSWORD_HASH USER

その後、すべてが正常に動作します。

私の質問:

ここにいくつかの詳細がありますが、それはusermodコマンドが何らかの理由でsshで動作しない原因です?

1
Jared Brandt

この関連する回答 を参照してください。要するに、SSHは引数のリストとしてではなく、文字列として後続のものを渡すため、引用符で囲みます。また、最後のSudoの前に&&を挿入することもできます。

1
tlhIngan