パスワードを知らなくても SSH 経由で root としてログインできますか (sudo -s)?

パスワードを知らなくても SSH 経由で root としてログインできますか (sudo -s)?

次の方法でサーバーにSSH接続します:

ssh user@host

次に、次のコマンドで root ユーザーに変更します。

sudo -s

ルート ユーザーのパスワードではなく、自分のパスワードを入力します。私の理解では、これは sudoers ファイル内にあるため機能します。

ルート ユーザーのパスワードを持っていなくても、SSH/ログインして 1 つの手順でルート ユーザーに切り替える方法はありますか?

パスワードを2回入力するのを避けたいのです

答え1

これを実現するには 2 つの簡単な方法があります:

  1. あなたは、ユーザーがSSH経由でログインできるようにするには、/etc/ssh/sshd_configファイルをPermitRootLogin編集して真実これにより、root が ssh 経由で接続できるようになります。
  2. SSH ユーザーが root として自動的にログインするためのカスタム スクリプトを作成します。これはファイルを通じて実行でき/etc/passwd、ユーザーは次のようになります。

your_user:x:1001:1001:Oqhax,,,:/home/your_user:/bin/bash

ログイン時にカスタム スクリプトを実行するには、その部分を変更して/bin/bash、必要なコードを実行する独自のスクリプトを追加します。これには sudo -s のようなものを含めることができ、カスタム スクリプトの最後に/bin/bash再度呼び出すこともできると思います。passwd次のようになります。

your_user:x:1001:1001:Oqhax,,,:/home/your_user:/bin/your_script

2 番目のオプションは SSH ログインの動作に影響するので注意してください。そのため、これをテストするには、間違いを犯して実際にユーザーでログインできなくなっても対処できることを確認してください。そのため、セットアップが機能するまで、少なくとも一時的に、オプション 1 で説明したように別のユーザーまたは root を介したバックドア SSH アクセスを確保し、再度ログインして間違いを修正できるようにしてください。

アップデート:以下のコメントに続いて、これは ssh ログインだけでなく、そのユーザーのすべてのログインに影響することを言及する価値があります (このユーザーが常に root としてログインすることが必要であり、実際の root ユーザーが ssh 経由でログインすることを許可したくないという前提でこれにアプローチしました)。また、これは SSH のみに適用される、はるかに厳密で複雑なソリューションよりも簡単なソリューションであることにも注目する価値があります。あなたの質問では詳細にはあまり触れられていません。

コメントで述べたように、/etc/ssh/sshrc生の /etc/passwd を編集することでも同じ動作を実現できます。そうすれば、将来何が起こっているかが非常に明白になり、結果に対応する必要があります。これはsshrc素晴らしいことですが、システムの設定方法を忘れてしまった場合に将来のトラブルシューティングが少し難しくなります。正直に言うと、これはよく起こります。しかし、ルート ユーザーをまったく公開しないことは確かに良い習慣です。これにより、将来的に柔軟性が大幅に高まり、物事を試したり、sudoer 権限をカスタマイズしたりできるようになります。

お役に立てれば

関連情報