In diesem Dokument wird die Fehlerbehebung für OS Login mithilfe des Metadatenservers beschrieben. Informationen zum Einrichten von OS Login und eine detaillierte Anleitung finden Sie unter OS Login einrichten.
Sie können den Metadatenserver von einer VM-Instanz aus abfragen. Weitere Informationen finden Sie unter Metadaten einer Instanz speichern und abrufen.
Hinweise
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Gelöschtes Konto wiederherstellen
- Entfernen Sie die POSIX-Informationen des Kontos, bevor Sie das Konto löschen.
Rufen Sie Ihr OS Login-Profil mit dem Befehl
gcloud compute os-login describe-profile
auf:gcloud compute os-login describe-profile
Die Ausgabe sieht dann ungefähr so aus:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Prüfen Sie die Ausgabe, um nicht verwendete SSH-Schlüssel zu ermitteln.
Entfernen Sie nicht verwendete Schlüssel mit dem Befehl
gcloud compute os-login ssh-keys remove
aus der Ausgabe:gcloud compute os-login ssh-keys remove --key=KEY
Ersetzen Sie
KEY
durch den Fingerabdruck des Schlüssels oder den Schlüsselstring.Fragen Sie das Nutzerprofil ab, um den Wert des Felds
name
zu erhalten:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Notieren Sie sich in der Ausgabe die
name
.Führen Sie den folgenden
login
-Befehl mit dem Wert vonname
aus:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Mehr zu OS Login
- Mehr darüber erfahren, wie SSH-Verbindungen zu Linux-VMs in Compute Engine funktionieren.
- Schritt-für-Schritt-Anleitungen erhalten Sie in einem der folgenden Abschnitte:
- OS Login in einer Organisation verwalten
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Häufige Fehlermeldungen
Im Folgenden finden Sie Beispiele für häufige Fehler, die bei der Verwendung von OS Login auftreten können.
Name für Gruppe nicht gefunden
Auf einigen VMs, die OS Login verwenden, erhalten Sie die folgende Fehlermeldung, nachdem die Verbindung hergestellt wurde:
/usr/bin/id: cannot find name for group ID 123456789
Ignorieren Sie die Fehlermeldung. Dieser Fehler wirkt sich nicht auf Ihre VMs aus.
Fehler beim Abrufen von Gruppen
Beim Erstellen von VMs werden möglicherweise Logs wie die folgenden angezeigt:
Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Refreshing group entry cache Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Failure getting groups, quitting
Diese Logs geben an, dass für Ihre Organisation keine OS Login-Linux-Gruppen konfiguriert sind. Ignorieren Sie diese Nachrichten.
Nicht erfüllte Voraussetzung
Wenn Sie eine SSH-Verbindung zur VM herstellen, wird möglicherweise ein Fehler wie der folgende angezeigt:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Dieser Fehler tritt auf, wenn OS Login versucht, einen Nutzernamen zu generieren, der bereits in einer Organisation vorhanden ist. Dies ist in der Regel der Fall, wenn ein Nutzerkonto gelöscht wird und kurz darauf ein neuer Nutzer mit derselben E-Mail-Adresse erstellt wird. Nachdem ein Nutzerkonto gelöscht wurde, dauert es bis zu 48 Stunden, bis die POSIX-Informationen des Nutzers entfernt werden.
Führen Sie einen der folgenden Schritte aus, um das Problem zu lösen:
Ungültiges Argument
Wenn Sie eine SSH-Verbindung zu einer VM herstellen oder SCP zum Übertragen von Dateien verwenden, werden möglicherweise folgende Fehler angezeigt:
ERROR: (gcloud.compute.ssh) INVALID_ARGUMENT: Login profile size exceeds 32 KiB. Delete profile values to make additional space.
ERROR: (gcloud.compute.scp) INVALID_ARGUMENT: Login profile size exceeds 32 KiB. Delete profile values to make additional space.
So beheben Sie diese Fehler:
Um dieses Problem in Zukunft zu vermeiden, fügen Sie eine Ablaufzeit für SSH-Schlüssel hinzu. Abgelaufene Schlüssel werden 48 Stunden nach Ablauf automatisch aus Ihrem Anmeldeprofil entfernt. Dies gilt auch, wenn Sie Ihrem Profil einen neuen Schlüssel hinzufügen.
Standardmäßige OS Login-Metadateneinträge
Compute Engine definiert eine Reihe von standardmäßigen Metadateneinträgen, die OS Login-Informationen bereitstellen. Die Standardmetadaten werden immer vom Server definiert und festgelegt. Bei Standard-Metadatenschlüsseln wird zwischen Groß- und Kleinschreibung unterschieden.
In der folgenden Tabelle werden die Einträge beschrieben, die Sie abfragen können.
Relativ zu http://metadata.google.internal/computeMetadata/v1/
Metadateneintrag Beschreibung project/attributes/enable-oslogin
Prüft, ob OS Login für das aktuelle Google Cloud-Projekt aktiviert ist. instance/attributes/enable-oslogin
Prüft, ob OS Login auf der aktuellen VM aktiviert ist. oslogin/users/
Ruft Profilinformationen für OS Login-Nutzer ab. Sie können Abfrageparameter wie username
,uid
,pagesize
undpagetoken
übergeben.oslogin/authorize/
Ruft die Berechtigungseinstellungen auf Anmelde- oder Administratorebene für einen OS Login-Nutzer ab.
Zum Prüfen einer Berechtigung müssen Sie den Abfrageparameter
policy
angeben. Der Wert des Richtlinienparameters muss entweder auflogin
(zur Überprüfung der Anmeldeberechtigung) oder aufadminLogin
(zur Prüfung auf sudo-Zugriff) festgelegt werden.Konfiguration von OS Login prüfen
Verwenden Sie die Google Cloud Console oder die Google Cloud-Befehlszeile, um Metadaten abzufragen und festzustellen, ob OS Login aktiviert ist. OS Login ist aktiviert, wenn der Metadatenschlüssel
enable-oslogin
in den Metadaten des Projekts oder der Instanz aufTRUE
gesetzt ist. Wenn sowohl Instanz- als auch Projektmetadaten festgelegt sind, hat der in den Instanzmetadaten festgelegte Wert Vorrang.OS Login-Nutzer ansehen
Wenn Sie die Profilinformationen für mehrere Nutzer anzeigen lassen möchten, müssen Sie die Parameter
pagesize
undpagetoken
angeben. Ersetzen Siepagesize
undpagetoken
durch den erforderlichen numerischen Wert.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um beispielsweise
pagesize
auf1
undpagetoken
auf0
zu setzen:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"
Auf den meisten Distributionen können Sie auch den Unix-Befehl
getent passwd
ausführen, um die Passworteinträge für Organisationsnutzer abzurufen.Bestimmten OS Login-Nutzer ansehen
Führen Sie den folgenden Befehl aus, um die Profilinformationen für einen bestimmten Nutzer auf Ihrer VM anzusehen.
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Ersetzen Sie
USERNAME
durch den Nutzernamen des Nutzers, den Sie abfragen möchten.Sie können beispielsweise eine Anfrage senden, um den Nutzer
user_example_com
zu suchen. Der folgende Befehl und die folgende Ausgabe zeigen eine zusätzliche Formatierung für eine bessere Lesbarkeit.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
{ "loginProfiles": [{ "name": "12345678912345", "posixAccounts": [{ "primary": true, "username": "user_example_com", "uid": "123451", "gid": "123451", "homeDirectory": "/home/user_example_com", "operatingSystemType": "LINUX" }], "sshPublicKeys": { "204c4b4fb...": { "key": "ssh-rsa AAAAB3Nz...", "fingerprint": "204c4b4fb..." } } }] }
Auf den meisten Distributionen können Sie auch Unix-Befehle wie
getent passwd username
odergetent passwd uid
ausführen, um Profilinformationen abzurufen.Zum Abrufen der SSH-Schlüssel für einen Nutzer können Sie auch
/usr/bin/google_authorized_keys USERNAME
ausführen. Wenn keine Schlüssel zurückgegeben werden, hat der Nutzer möglicherweise nicht die erforderlichen Berechtigungen, um sich bei der VM anzumelden.Anmeldeberechtigungen prüfen
Zum Anzeigen von Berechtigungen auf Anmelde- und Administratorebene müssen Sie die Abfrageparameter
policy=login&email=LOGIN_NAME
angeben.Sie können beispielsweise die Anmeldeberechtigungen für den Nutzer
user_example_com
abfragen, der im vorherigen Abschnitt angezeigt wurde.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
Die Befehlsausgabe gibt an, dass der Nutzer berechtigt ist, sich bei der VM anzumelden:
{"success":true}
Prüfen, ob VM ein Dienstkonto hat
Sie können den Metadatenserver abfragen, um das mit Ihrer VM verknüpfte Dienstkonto zu finden. Führen Sie auf Ihrer VM den folgenden Befehl aus:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
12345-sa@developer.gserviceaccount.com/ default/
Wenn kein Dienstkonto gefunden wird, ist die Ausgabe leer.
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-10-14 (UTC).
-