Oracle Cloud は、SSH セッションでパスワードなしで sudo を実行できるように何を行ったのでしょうか?

Oracle Cloud は、SSH セッションでパスワードなしで sudo を実行できるように何を行ったのでしょうか?

Oracle Cloud の事前生成されたキー ペアを使用すると、パスワードなしで Linux サーバーにログインでき、パスワードなしで sudo も実行できることに気付きました。私が知る限り、この状況を他の場所で再現することはできません。

Oracle Cloud と他のクラウドの違いは、OOBE でユーザーも生成されることですubuntu(Ubuntu の場合。Oracle Linux の場合、デフォルトのユーザーは ですopc。私が使用しているディストリビューションに関係なく、opcユーザーは必ず生成されます)。Oracle Cloud サーバーは、デフォルトではユーザーを使用しないようです。そこで、 sudo ユーザーがインストールされているrootことに気付きました。そのソフトウェアが sudo 認証を処理しているのでしょうか? (ただし、他の場所も確認しましたが、これらのファイルはバニラのままです。)Oracle Cloud Agentopc/etc/pam.d

他のサイトでは、PAM モジュールを設定するように言われましたlibpam-ssh-agent-authが、これは何年も更新されていない古いプロジェクトです。多くのサーバーで試しましたが、動作しません。(多くのディストリビューションでは、この PAM モジュールをパッケージ マネージャーから削除していませんが)

これを実現する方法を教えていただければ幸いです。

答え1

須藤

sudoグループ(または同等のグループ)のユーザーを許可するには、sudo設定を変更します。/etc/sudoers (ルートとしてvisudoを使用する)

%sudo ALL=(ALL) NOPASSWD: ALL

ユーザーは sudo グループのメンバーである必要があることに注意してください。

または特定のユーザーのみ:

username_here       ALL = (ALL) NOPASSWD: ALL

SSHキー

パスワードなしでユーザーとしてログインできるようにするには、ログインするアカウントに公開 SSH キーを追加する必要があります。

これを行う適切な方法はssh-copy-idを使用することです

ssh-copy-id [email protected]

これにより、指定されたユーザーのホームフォルダに公開鍵が追加されます。.ssh/承認キー

必要に応じて手動でコピーすることもできます。このファイル(ローカルマシン)の出力を.ssh/承認キーユーザーのファイル(サーバー上):

cat ~/.ssh/id_rsa.pub

答え2

通常、クラウドイメージはcloudinit 起動時に、一意のインスタンスの汎用イメージを初期化してカスタマイズします。

Cloudnit は、一般的なタスクを実行できますし、通常は実行しますが、通常は特定のクラウド プロバイダーのメタデータ サービスと対話してベンダー データやユーザー データを読み込むようにも構成されます。このメカニズムにより、通常、クラウド プロバイダーにアップロードした個人の公開 SSH キーがインスタンスにプロビジョニングされ、関連付けられた秘密キーを使用してログインできるようになります。

Cloud init は、ユーザーのデプロイ、新しくデプロイされたユーザーの SSH キーやパスワード、sudo 権限の設定など、さまざまな操作を実行できます。

独自のユーザーデータを有効にして、cloud init の動作を (さらに) カスタマイズする方法は、クラウド ベンダーによって異なります。

関連情報