it-swarm-ja.com

GCP-SudoはGoogleCloudShellで機能しますが、vmにsshすると機能しません

新しいGoogle Compute Engine VM(Debian 9)を作成し、GoogleCloud Shellを使用してそのシェルを開きました。そのブラウザのシェルウィンドウからSudoできます。

次に、ssh-keysとsshをvmに設定します。議論のために、私のユーザー名は「user123」です。私はGCP VMにSSHで接続します。

ssh [email protected]

ここで、1.2.3.4は私のGCP外部IPアドレスです。その後、ログインします。

したがって、ユーザーuser123 in GoogleCloudShellSudoは機能しますが、sshを介してログインするとuser123、パスワードの入力を求められます。

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[Sudo] password for user123:

当然、パスワードを設定したくない、または設定する必要はありません。これを許可するには、Sudoを取得する必要がありますuser123ユーザーアカウントをSudoに。しかし、それはGoogleCloudShellにログインしたときに機能します。..うーん...私はそれを追跡しますが、それは私の質問です。

注:GoogleCloudShell(Sudoを介して)にルートがあるので、何をすべきかを見つけてこれを修正できるはずです。

ssh経由でログインしたときにSudoが機能するために必要な次のステップは何ですか?

3
PatS

2つ答えます。

まず、Cloud Shellはインスタンスメタデータをバックグラウンドで管理し、この方法でプロジェクトに追加されたすべてのユーザーがパスワードなしのSudoを使用できるようにします。 Googleを使用してユーザーを設定する

https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keyshttps://cloud.google.com/compute/docs/instances/管理インスタンスアクセス

プロジェクトコンソールから目的のユーザーアカウントを追加します。これにより、そのユーザーがプロジェクト内のすべてのホストに伝達されます。

次に、パスワードなしのSudoを設定する必要があります。 (visudoを使用して)/ etc/sudoersを編集するか、/ etc/sudoers.dの下に新しいファイルを作成して、次のような行を追加できます。

user123       ALL = (ALL) NOPASSWD: ALL

あなたはグーグルがグーグル-sudoersグループのグループメンバーシップによってそれをやっていることがわかります

[email protected]:~$ Sudo cat /etc/sudoers.d/google_sudoers 
%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
[email protected]:~$ id
uid=1000(timmy) gid=1001(timmy) groups=1001(timmy),4(adm),30(dip),44(video),46(plugdev),1000(google-sudoers)
4
Timmy Browne

GCP計算エンジンを作成した後は、sshからSudoを機能させるために特別なことを行う必要はありません。 @TimmyBrowneが彼の投稿で言及しているように、明らかにGCP Consoleを使用してキーを追加する必要があります。 https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys をご覧ください。

Ssh公開鍵がGCP Compute Engineインスタンスに入力されたら、インスタンスにsshできます。ただし、正しいユーザー名を使用する必要があります。

たとえば、GCPのユーザー名がfredsmithで、GCPの外部IPが5.6.7.8の場合、sshコマンドは次のようになります。

ssh [email protected]

そして明らかに、プライベートsshキーは、インスタンスのsshメタデータに入力したパブリックキーと一致する必要があります。

ログイン後、Sudoを実行できます。これは、GCPが認証情報(fredsmith)を使用してこのインスタンスをすでに設定しており、必要なグループに(fredsmith)を追加しているため、SudoがGCPで機能するように見えるため、google-sudoersのようです。

別のユーザーを作成し、そのユーザーにSudo権限を付与する場合は、@ TimmyBrowneの回答を参照してください。

一貫性のない結果が出た理由がまだはっきりしていません。それによって、sudoができる場合もあれば、authorized_keysファイルが削除されたためにできなかった場合もありますが、これをさらに進めるための十分な情報がありません。

ティミー・ブラウンが私の質問に答えてくれたので、彼はそれを理解していたので、それは正しいようです。私は彼にこの答えの功績を認めるつもりですが、私の答えを投稿して、同じ動作を他の人が見た場合にこの答えに賛成票を投じ、できれば追跡できるようにしたいと思っています。

1
PatS