Die Google Distributed Cloud (GDC) Air-Gapped Appliance verwendet die schlüsselbasierte SSH-Authentifizierung, um Verbindungen zu Instanzen virtueller Maschinen (VMs) herzustellen. Standardmäßig sind Passwörter für lokale Nutzer auf VMs mit einem Betriebssystem nicht konfiguriert.
Hinweis
Bevor Sie eine Verbindung zu einer VM herstellen, müssen die folgenden Voraussetzungen erfüllt sein:
- Zugriffsverwaltung aktivieren. Ohne aktivierte Zugriffsverwaltung in der Gastumgebung können Sie nicht fortfahren. Standardmäßig ist die Zugriffsverwaltung auf neuen VMs aktiviert.
- Aktivieren Sie den externen VM-Zugriff für alle Peers auf Transmission Control Protocol (TCP) Port 22.
ProjectNetworkPolicy (PNP)
benutzerdefinierte Ressource in dem Projekt ein, in dem sich die VM befindet.
- Wenn Sie eine PNP im Projekt einrichten, können Sie außerhalb des Projekts oder der Organisation auf die VM zugreifen.
- Wenn Sie keine PNP haben, fragen Sie Ihren Infrastrukturbetreiber.
Wenn Sie gdcloud Befehlszeilenschnittstellenbefehle verwenden möchten, müssen Sie die gdcloud CLI heruntergeladen, installiert
und konfiguriert haben.
Alle Befehle für die GDC Air-Gapped Appliance verwenden die gdcloud- oder kubectl-CLI und erfordern eine Betriebssystemumgebung.
Pfad zur kubeconfig-Datei abrufen
Wenn Sie Befehle für den Management API-Server ausführen möchten, benötigen Sie die folgenden Ressourcen:
Suchen Sie den Namen des Management API-Servers oder fragen Sie Ihren Plattformadministrator nach dem Servernamen.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.
Ersetzen Sie in dieser Anleitung
MANAGEMENT_API_SERVER{"</var>"}}durch den Pfad.
Berechtigungen und Zugriff anfordern
Zum Ausführen der auf dieser Seite aufgeführten Aufgaben benötigen Sie die Rolle „Projekt-VM-Administrator“. Folgen Sie der Anleitung, um zu prüfen, ob Sie die Rolle „Projekt-VM-Administrator“ (project-vm-admin) im Namespace
des Projekts haben, in dem sich die VM befindet, oder bitten Sie Ihren Projekt-IAM-Administrator,
Ihnen diese Rolle zuzuweisen.
Für VM-Vorgänge mit der GDC Console oder der gdcloud CLI bitten Sie Ihren Projekt-IAM-Administrator, Ihnen sowohl die Rolle „Projekt-VM-Administrator“ als auch die Rolle „Projektbetrachter“ (project-viewer) zuzuweisen.
VM-Verbindung herstellen
In diesem Abschnitt wird beschrieben, wie Sie eine Verbindung zu einer VM mit einem bestimmten Betriebssystem herstellen.
Verbindung zu einer VM herstellen
Verwenden Sie die GDC Console, die gdcloud CLI oder die Virtual Machine Manager API, um eine Verbindung zu einer VM mit einem bestimmten Betriebssystem herzustellen.
Console
Klicken Sie im Navigationsmenü auf Virtual Machines > Instances.
Suchen Sie in der Liste der VMs die Zeile für die ausgeführte VM, zu der Sie eine Verbindung herstellen möchten. Klicken Sie in der Spalte Connect auf SSH.
Ein SSH-Browserterminal wird geöffnet. Geben Sie einen beliebigen Befehl in die Shell ein oder klicken Sie auf FTP , um die Dateistruktur zu durchsuchen und Dateien hochzuladen.
gdcloud
Stellen Sie mit dem gdcloud compute ssh Befehl eine Verbindung zu einer VM über SSH her.
gdcloud compute ssh VM_NAME --project=PROJECT_ID
Ersetzen Sie die folgenden Variablen:
- VM_NAME: der Name der VM.
- PROJECT_ID: die ID des Projekts, das die VM enthält.
Wenn Sie
Standardeigenschaften
für die CLI festgelegt haben, können Sie das --project Flag bei diesem Befehl weglassen. Beispiel:
gdcloud compute ssh VM_NAME
API
Verbindung zu einer VM herstellen:
- Öffnen Sie ein Terminalfenster.
- Erstellen Sie ein SSH-Schlüsselpaar.
- Laden Sie den öffentlichen Schlüssel und den Nutzernamen mit einem TTL-Wert (Time to Live) hoch.
GDC ruft den SSH-Schlüssel und den Nutzernamen ab und erstellt ein Nutzerkonto mit dem Nutzernamen. Auf VMs speichert GDC den öffentlichen Schlüssel in der Datei ~/.ssh/authorized_keys des Nutzers auf der VM.
Führen Sie die folgenden Schritte aus, um über die Befehlszeile eine Verbindung zu einer VM herzustellen:
Erstellen Sie ein SSH-Schlüsselpaar und einen Nutzernamen.
Verwenden Sie auf Betriebssystem-Workstations das Dienstprogramm
ssh-keygen, um ein neues SSH-Schlüsselpaar zu erstellen. Im folgenden Codebeispiel wird ein RSA-Schlüsselpaar (Rivest–Shamir–Adleman) erstellt:ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048Ersetzen Sie die Variablen durch die folgenden Definitionen.
Variable Definition KEY_FILENAMEDer Name für Ihre SSH-Schlüsseldatei. Der Dateiname my-ssh-keyerzeugt beispielsweise die private Schlüsseldateimy-ssh-keyund die öffentliche Schlüsseldateimy-ssh-key.pub.USERNAMEIhr Nutzername auf der VM, z. B. testuserodertestuser_gmail_com.Das
ssh-keygenDienstprogramm speichert Ihre private Schlüsseldatei im~/.ssh/KEY_FILENAMEPfad und Ihre öffentliche Schlüsseldatei im~/.ssh/KEY_FILENAME.pubPfad.Ein öffentlicher Schlüssel für den Nutzer
testusersieht in etwa so aus:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuserLaden Sie Ihren Schlüssel auf die VM hoch und erstellen Sie eine Kubernetes-Ressource mit Ihrem öffentlichen Schlüssel, Nutzernamen und TTL-Wert (Time to Live) für den Schlüssel.
Im folgenden Beispiel wird mit der Datei
access_request.yamlZugriff auf die VM-Instanz mit dem privaten SchlüsselKEY_FILENAMEund einem TTL-Wert von zehn Minuten gewährt:apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: namespace: VM_NAMESPACE name: AR_NAME spec: ssh: key: | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco ttl: 10m user: USERNAME vm: VM_NAMEErsetzen Sie die Variablen durch die folgenden Definitionen:
Variable Definition VM_NAMESPACEDer Namespace für die VM. AR_NAMEDer Name der Zugriffsanfrage. USERNAMEIhr Nutzername auf der VM, z. B. testuserodertestuser_gmail_com.VM_NAMEDer Name der VM-Instanz. Erstellen Sie den Schlüssel:
kubectl create -f access_request.yaml --kubeconfig MANAGEMENT_API_SERVERPrüfen Sie den Status Ihrer Zugriffsanfrage:
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVERErsetzen Sie
VM_NAMESPACEdurch den Namespace für die VM.Der Status
configuredgibt an, dass Sie eine Verbindung zur VM herstellen können.Stellen Sie eine Verbindung zur VM her:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IPErsetzen Sie die folgenden Werte:
PATH_TO_PRIVATE_KEYdurch den Pfad zur privaten SSH-Schlüsseldatei, die dem öffentlichen Schlüssel entspricht, den Sie der VM hinzugefügt haben.USERNAMEdurch den Nutzernamen, den Sie beim Erstellen des SSH-Schlüssels angegeben haben. Beispiel:cloudysanfrancisco_example_comodercloudysanfrancisco.EXTERNAL_IPdurch die externe Ingress-IP-Adresse der VM.
Fehlerbehebung
In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben, die beim Herstellen einer Verbindung zu einer VM-Instanz nach dem Erstellen der Zugriffsanfrage auftreten können.
Führen Sie die folgenden Schritte aus, um mögliche Probleme zu identifizieren:
Prüfen Sie, ob die VM ausgeführt wird. Ersetzen Sie die bearbeitbaren Variablen im folgenden Befehl durch Ihre Werte:
kubectl get virtualmachines.virtualmachine.gdc.goog VM_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVERWenn die VM nicht ausgeführt wird, können Sie keine Verbindung herstellen oder neue Anfragen konfigurieren.
Prüfen Sie, ob die VM seit einigen Minuten ausgeführt wird. Wenn die VM gerade erst gestartet wurde, werden die für den SSH-Zugriff erforderlichen Dienste möglicherweise noch nicht ausgeführt. Normalerweise werden sie innerhalb von fünf Minuten nach dem Start ausgeführt.
Prüfen Sie, ob Sie den TTL-Wert für die Zugriffsanfrage nicht überschritten haben. Der Schlüssel wird entfernt, nachdem die Zeit den TTL-Wert erreicht hat.
Wenn für Ihre
VirtualMachineAccessRequestder Statusconfiguredangezeigt wird, prüfen Sie die folgenden Anforderungen:- Sie haben die eingehende Datenübertragung zu Ihrer VM auf Port 22 aktiviert.
- Ihr Computer leitet Traffic an die VM weiter. Sie können die Weiterleitung beispielsweise mit dem
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22Befehl prüfen.
Wenn für Ihre
VirtualMachineAccessRequestder Statusfailedangezeigt wird, rufen Sie den vollständigen Status auf und lesen Sie die Fehlermeldung, in der die Ursache für den Fehler der Anfrage angegeben ist:kubectl describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVERErsetzen Sie die bearbeitbaren Variablen im vorherigen Befehl durch Ihre eigenen Werte.
Wenn der Status Ihrer
VirtualMachineAccessRequestleer ist, wird die Gastumgebung möglicherweise nicht ausgeführt.