GCP - sudo funktioniert in GoogleCloudShell, aber nicht wenn ich in vm ssh

0

Ich habe eine brandneue Google Compute Engine-VM (Debian 9) erstellt und eine Shell mit der GoogleCloud-Shell geöffnet. ich kann sudo aus diesem Browser-Shell-Fenster.

Ich stelle dann meine SSH-Schlüssel und SSH in die VM ein. Meiner Meinung nach ist mein Benutzername "user123". Ich ssh in meine GCP vm mit:

ssh [email protected]

Wobei 1.2.3.4 meine externe GCP-Adresse ist. Ich bin dann eingeloggt.

Also als benutzer user123 im GoogleCloudShell sudo funktioniert, aber wenn über eingeloggt ssh wie user123Ich werde nach einem Passwort gefragt.

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:

Natürlich will oder muss ich kein Passwort einrichten, ich brauche Sudo, um dies zuzulassen user123 Benutzerkonto an Sudo. Aber es funktioniert, wenn Sie bei GoogleCloudShell angemeldet sind.

HINWEIS: Da ich root in meinem habe GoogleCloudShell (via sudo) sollte ich finden können, was ich tun muss, und dies beheben.

Was ist der nächste Schritt, den ich machen muss, damit sudo funktioniert, wenn ich über ssh angemeldet bin?

PatS
quelle
Ich bin mir nicht sicher, was passiert ist, aber ich habe eine andere VM eingerichtet und die Dinge funktionierten gut. ich kann sudo nachdem ich ssh in die vm benutzt ssh user123 @ gcp-host sowie aus der GoogleCloudShell. Ich könnte diese Frage löschen, wenn niemand sie für nützlich hält.
PatS
Hum ... Die Handlung verdickt sich. Etwas hat meine ~ / .ssh / authorised_keys-Datei beschädigt und als ich sie neu erstellt habe. Ich kann nicht sudo wenn ich ssh in die GCP vm. Ich muss etwas falsch machen (eine Art, die GCP nicht mag).
PatS
Ich habe meine GoogleCloudShell geschlossen und wieder geöffnet. Als ich das tat, fügte die GCP-Umgebung zwei GCP-SSH-Schlüssel hinzu (zur Unterstützung der GoogleCloudShell, denke ich). Wenn diese Schlüssel existieren, kann ich sudo wenn von angemeldet ssh .
PatS

Antworten:

1

Ich gebe dir 2 Antworten.

Erstens verwaltet die Cloud-Shell Instanz-Metadaten für Sie hinter den Kulissen und ermöglicht kennwortloses Sudo für alle Benutzer, die auf diese Weise zum Projekt hinzugefügt werden. Verwenden Sie Google, um Ihren Benutzer einzurichten

https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys https://cloud.google.com/compute/docs/instances/managing-instance-access

Fügen Sie das gewünschte Benutzerkonto über die Projektkonsole hinzu. Dadurch wird dieser Benutzer an alle Hosts in Ihrem Projekt weitergegeben.

Zweitens: Sie möchten passwortloses Sudo einrichten. Sie können (mit visudo) / etc / sudoers bearbeiten oder eine neue Datei unter /etc/sudoers.d erstellen und eine Zeile wie diese hinzufügen:

user123       ALL = (ALL) NOPASSWD: ALL

Sie können sehen, dass Google dies nach Gruppenmitgliedschaft in der Google-Sudoers-Gruppe durchführt

timmy@instance-1:~$ sudo cat /etc/sudoers.d/google_sudoers 
%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
timmy@instance-1:~$ id
uid=1000(timmy) gid=1001(timmy) groups=1001(timmy),4(adm),30(dip),44(video),46(plugdev),1000(google-sudoers)
Timmy Browne
quelle
0

Nach dem Erstellen einer GCP-Berechnungs-Engine müssen Sie nichts Besonderes tun, damit Sudo von ssh zum Laufen gebracht wird. Sie müssen natürlich die GCP-Konsole verwenden und Ihre Schlüssel hinzufügen, wie @TimmyBrowne in seinem Beitrag erwähnt. Sehen https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys .

Nachdem Sie Ihren öffentlichen SSH-Schlüssel in die GCP Compute Engine-Instanz eingegeben haben, können Sie SSH in Ihre Instanz eingeben. Sie müssen jedoch den richtigen Benutzernamen verwenden.

Wenn mein GCP-Benutzername beispielsweise fredsmith lautet und meine externe GCP-IP 5.6.7.8 lautet, würde mein Befehl ssh folgendermaßen aussehen:

ssh [email protected]

Natürlich muss Ihr privater SSH-Schlüssel mit dem öffentlichen Schlüssel übereinstimmen, den Sie in die SSH-Metadaten für Ihre Instanz einfügen.

Nachdem Sie sich angemeldet haben, können Sie sudo ausführen, und es funktioniert, weil GCP diese Instanz bereits mit Ihren Anmeldeinformationen (fredsmith) eingerichtet hat und Sie (fredsmith) in die Gruppen aufgenommen hat, damit sudo funktioniert, was für GCP scheinbar google-sudoers ist.

Wenn Sie einen anderen Benutzer erstellen möchten und diesem Benutzer Sudo-Berechtigungen gewähren möchten, lesen Sie die Antwort von @TimmyBrowne.

Ich bin immer noch nicht sicher, warum ich inkonsistente Ergebnisse hatte. Manchmal konnte ich sudo und andere Male konnte ich nicht, weil meine authorized_keys-Datei entfernt wurde, aber ich habe nicht genügend Informationen, um dies weiter zu verfolgen.

Da Timmy Browne meine Frage so beantwortet hat, wie er sie verstanden hat, und es scheint richtig zu sein. Ich werde ihm diese Antwort würdigen, aber ich wollte meine Antwort posten, damit andere, wenn sie dasselbe Verhalten sehen, diese Antwort bestätigen und hoffentlich können wir sie finden.

PatS
quelle