SSH ルートから Linux ルート パスワードを確認するにはどうすればいいですか?

SSH ルートから Linux ルート パスワードを確認するにはどうすればいいですか?

リモートマシンのルートパスワードを確認するにはどうすればよいですか?

通常、SSH ルートや他のユーザー経由でアクセスされるリモート マシンがあります。セキュリティ上の理由から、中央サーバーからすべてのキーとユーザー パスワードを定期的に変更するスクリプトがあります。

非ルートユーザーの場合、パスワードは次のように更新されます。

ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"

そして、実際にこれで変更されたことを確認します。

ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"

しかし、root ユーザーで同じことを実行しようとすると、行き詰まってしまいます。リモート マシンに root として ssh でログインしただけなので、sudo -S ls /root は常にパスワードを含むリストを返します。

ユーザーとして ssh で接続すると、sudo によってユーザーのパスワードが要求されます。

私は、su user && su root を使用して何かを取得しようとしましたが、root パスワードの入力を求めるプロンプトが表示されることに気付きましたが、上記のようなスクリプトを作成できませんでした。

ルート シェルからの「login root」でも常にパスワードの入力を求められますが、これにクリアテキスト パスワードをスクリプト化することもできません。

私はこの質問を読みましたが、リモート マシンにインストールする必要があるカスタム アプリケーションを作成するのではなく、組み込みの方法でこれを実行できることを期待していました。 Linux でパスワードを確認するにはどうすればいいですか?

答え1

ターゲットマシンでの設定がsudoオプションである場合は、ユーザーパスワードではなくルートパスワードを要求rootpwする特定のコマンドを設定できますsudo。たとえば、ファイルに次の行を追加できます /etc/sudoers.d/lsrootpwsudo必要に応じてサービスを再起動)。

Defaults!/bin/ls        rootpw

こうすることで、root以外のユーザーは、sudo ls自分のパスワードではなくrootのパスワードを尋ねられるようになります。つまり、次のようにテストすることができます。

ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"

NEWPASSパスワードが正しいかどうかによって、結果が左右されますroot。このテストでは、ターゲット上で sudo ユーザーが必要になります。

または、Debian のコマンドがある場合は、次のようにrunuser使用することもできます。nobody

ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"

これによって、パスワードの正しさに応じて、常に 2 つの異なる結果が生成されます。特に、正しいパスワードの場合は、ファイルnobodyに存在しないというエラーが発生しますsudoers。ただし、 で追加の宣言を行うことで、これに対処できます/etc/sudoers.d/lsrootpw

もちろん、全体としては、ターゲット ホストに何かをインストールする必要があるため、カスタム アプリケーションを持つこととそれほど変わりません。同時に、5 つのリモート コマンド (add lsrootpw、restart sudo、make the test、remove lsrootpw、restart sudo)のシーケンスですべて実行できます。

関連情報