Fehlerbehebung bei OS Login

Auf dieser Seite wird beschrieben, wie Sie mit dem Metadatenserver Fehler in OS Login beheben. Informationen zum Einrichten von OS Login oder eine detaillierte Anleitung finden Sie unter OS Login einrichten oder OS Login mit Bestätigung in zwei Schritten einrichten.

Sie können den Metadatenserver von einer VM-Instanz aus abfragen. Weitere Informationen finden Sie unter Metadaten einer Instanz speichern und abrufen.

Hinweis

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. 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 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 und pagetoken ü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 auf login (zur Überprüfung der Anmeldeberechtigung) oder auf adminLogin (zur Prüfung auf sudo-Zugriff) festgelegt werden.

Prüfen, ob OS Login aktiviert ist

Wenn sowohl Instanz- als auch Projektmetadaten festgelegt sind, haben Instanzmetadaten Vorrang. Sie können die folgenden Befehle auf Ihren VMs ausführen.

  1. Prüfen Sie, ob OS Login in Ihren Instanzmetadaten aktiviert ist, und führen Sie den folgenden Befehl aus.

    user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/enable-oslogin" -H "Metadata-Flavor: Google"
    

    Wenn OS Login für die Instanz aktiviert ist, wird TRUE zurückgegeben.

  2. Wenn der Metadatenwert nicht für die Instanz konfiguriert ist, können Sie prüfen, ob OS Login für Ihr Cloudprojekt aktiviert ist. Führen Sie zur Prüfung den folgenden Befehl aus:

    user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/enable-oslogin" -H "Metadata-Flavor: Google"
    

    Wenn OS Login für das Cloudprojekt aktiviert ist, wird TRUE zurückgegeben.

OS Login-Nutzer ansehen

Wenn Sie die Profilinformationen für mehrere Nutzer anzeigen lassen möchten, müssen Sie die Parameter pagesize und pagetoken angeben. Ersetzen Sie pagesize und pagetoken durch den erforderlichen numerischen Wert.

user@myinst:~$ 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 auf 1 und pagetoken auf 0 zu setzen:

user@myinst:~$ 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. Ersetzen Sie USER_NAME durch den Namen des Nutzers, den Sie abfragen möchten.

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USER_NAME" -H "Metadata-Flavor: Google"

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.

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"

{
    "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 oder getent 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. Ersetzen Sie LOGIN_NAME durch den Wert im Feld name aus der Abfrage des Nutzerprofils.

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"

Sie können beispielsweise die Anmeldeberechtigungen für den Nutzer user_example_com abfragen, der im vorherigen Abschnitt angezeigt wurde. In diesem Beispiel zeigt die Befehlsausgabe an, dass der Nutzer berechtigt ist, sich bei der VM anzumelden:

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"

{"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:

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"

12345-sa@developer.gserviceaccount.com/
default/

Wenn kein Dienstkonto gefunden wird, ist die Ausgabe leer.

Weitere Informationen