Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Direktes SSH
Sicherheitshinweis
Direct SSH öffnet einen eingehenden TCP-Port auf Ihren Cluster-Pods. Wir empfehlenFernzugriff mit SSH über SSM, da dafür keine offenen eingehenden Ports erforderlich sind. Aktivieren Sie Direct SSH nur, wenn der Fernzugriff über SSM Ihre Anforderungen nicht erfüllt (z. B. kein Internetzugang oder Standard-SSH-Tools erforderlich).
Überprüfen Sie vor der Aktivierung Folgendes:
- Cluster-wide Auswirkung
-
directSSH.enabled: trueöffnet den konfigurierten Port auf allen Workspace-Pods im gesamten Cluster, nicht nur auf ausgewählten Workspaces oder Benutzern. - Sicherheitsgruppen-Bereich
-
Beschränken Sie die Regel für eingehenden Datenverkehr auf den engstmöglichen Quellblock für Classless Inter-Domain Routing (CIDR).
0.0.0.0/0Niemals verwenden. Überprüfe regelmäßig mithilfe der verwalteten AWS Regel Config restricted-ssh. - Lebenszyklus des SSH-Schlüssels
-
Sie verwalten den Lebenszyklus von SSH-Schlüsseln. SSH-Schlüssel sind langlebige Anmeldeinformationen. Ohne eine Rotationsrichtlinie gewährt ein kompromittierter Schlüssel dauerhaften Zugriff. Richten Sie eine Richtlinie zur SSH-Schlüsselrotation ein und rotieren Sie die Schlüssel regelmäßig, bevor Sie sie Ihrem Team zur Verfügung stellen.
- VPC-Netzwerkisolierung
-
Sie verwalten die VPC-Netzwerkisolierung. Wenn Sie Direct SSH aktivieren, wird sshd auf dem Pod gestartet, und Ihre VPC-Sicherheitsgruppen und Ihr Routing steuern, wer es erreichen kann. Stellen Sie sicher, dass nur vertrauenswürdige Netzwerkquellen (VPN-Subnetz, Direct Connect CIDR oder Unternehmensnetzwerkbereich) den konfigurierten Port erreichen können. Direct SSH macht den SSH-Port auf der privaten IP-Adresse des Pods in Ihrer VPC verfügbar. Ein Client kann ihn nur erreichen, wenn er über dieselbe VPC, VPC-Peering, ein VPN oder Direct Connect eine Netzwerkkonnektivität zu dieser VPC hat.
Voraussetzungen
Direct SSH erfordert externalDNS, eine Amazon Route 53 Private Hosted Zone, VPC-Konnektivität von Client-Computern und (optional) den Load Balancer Controller. AWS Die vollständige Liste der Voraussetzungen finden Sie unter. Voraussetzungen für Direct SSH
Wenn der Webbrowser-Zugriff auf Ihrem Cluster bereits aktiviert ist, sind alle Voraussetzungen erfüllt. Bevor Sie fortfahren, überprüfen Sie, ob Ihr externalDNS mit konfiguriert ist. --policy=sync Details hierzu finden Sie unter Externe DNS-Konfiguration.
Wenn der Webbrowser-Zugriff noch nicht konfiguriert ist, finden Sie weitere Informationen unter. (Optional) Voraussetzungen einrichten Weitere Informationen zum Aktivieren des Webbrowserzugriffs finden Sie unterInstallation des EKS-Addons — Jupyter K8s mit WebUI.
Konfigurieren Sie Direct SSH für Ihren Cluster
Cluster-wide Geltungsbereich
directSSH.enabled: truestartet sshd auf dem konfigurierten Port in allen Workspace-Pods im gesamten Cluster. SSH bietet den gleichen Zugriff wie das JupyterLab Terminal: derselbe Benutzer (sagemaker-user), dasselbe Dateisystem.
Schritt 1: Sicherheitsgruppenregel für SSH hinzufügen
Für den Webbrowser-Zugriff wird HTTPS (443) über einen Application Load Balancer (ALB) verwendet. Da Direct SSH eine direkte Verbindung zu Pod-IPs auf dem konfigurierten Port herstellt, müssen Sie eine Sicherheitsgruppen-Regel für eingehenden Datenverkehr hinzufügen.
Die VPC-Konfiguration liegt in Ihrer Verantwortung
Sie müssen Ihre VPC korrekt konfigurieren, einschließlich Sicherheitsgruppen, Routing und Netzwerkzugriffskontrollen. Direct SSH startet sshd auf dem Pod. Ihre VPC bestimmt, wer sie erreichen kann. Beschränken Sie den Zugriff nur auf die CIDRs, die über SSH in Workspaces zugreifen können (z. B. den Netzwerkbereich Ihres Unternehmens, das VPN-Tunnel-Subnetz oder Direct Connect CIDR). Verwenden Sie nicht 0.0.0.0/0.
Überprüfen Sie die richtige Sicherheitsgruppe, bevor Sie Änderungen vornehmen
HyperPod Instanzgruppen können die VPC-Konfiguration auf Gruppenebene bis hin OverrideVpcConfig zu Sicherheitsgruppen außer Kraft setzen. Die richtige Sicherheitsgruppe, die geändert werden muss, hängt davon ab, ob es für Ihre Workspace-Instanzgruppe eine Überschreibung gibt. Das Hinzufügen der Regel zur falschen Sicherheitsgruppe führt zu einem unbeaufsichtigten Connection timed out Fehler.
Überprüfe, ob deine Workspace-Instanzgruppe eine SG-Override hat:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'InstanceGroups[*].{Name:InstanceGroupName, OverrideSGs:OverrideVpcConfig.SecurityGroupIds}'
Option A: Die Instanzgruppe hat eine Sicherheitsgruppen-Override
Wenn sie ungleich Null OverrideSGs ist, fügen Sie die Regel zu dieser Sicherheitsgruppe hinzu:
SG_ID=<SG_ID_FROM_OVERRIDE_VPC_CONFIG> aws ec2 authorize-security-group-ingress \ --group-id $SG_ID \ --protocol tcp \ --port <SSH_PORT> \ --cidr <SOURCE_CIDR> \ --region <AWS_REGION>
Option B: Für die Instanzgruppe gibt es keine Sicherheitsgruppenüberschreibung
Wenn Null OverrideSGs ist, verwenden Sie die Sicherheitsgruppe auf Clusterebene aus der SageMaker HyperPod Cluster-VPC-Konfiguration:
SG_ID=$(aws sagemaker describe-cluster --cluster-name <HYPERPOD_CLUSTER_NAME> --region <AWS_REGION> \ --query 'VpcConfig.SecurityGroupIds[0]' --output text) aws ec2 authorize-security-group-ingress \ --group-id $SG_ID \ --protocol tcp \ --port <SSH_PORT> \ --cidr <SOURCE_CIDR> \ --region <AWS_REGION>
Die folgende Tabelle zeigt, wo die einzelnen Platzhalterwerte zu finden sind.
| Placeholder | Wo kann man ihn bekommen |
|---|---|
<HYPERPOD_CLUSTER_NAME> |
Wählen Sie im SageMaker AWS-Managementkonsole die Option HyperPod Cluster aus. Oder renneaws sagemaker list-clusters. |
<SSH_PORT> |
Der Port, in dem Sie konfiguriert haben directSSH.port (der Standard ist 22). Er muss der Regel für eingehenden Datenverkehr der Sicherheitsgruppe entsprechen. |
<AWS_REGION> |
Die AWS Region, in der Ihre HyperPod und EKS-Cluster bereitgestellt werden. |
<SOURCE_CIDR> |
Der CIDR Ihres vertrauenswürdigen Netzwerks: VPN-Tunnelsubnetz, Direct Connect CIDR oder Unternehmensnetzwerkbereich (z. B. 10.192.16). 0/24). Darf nicht 0.0.0 sein. 0/0. |
Schritt 2: Direct SSH aktivieren
Fügen Sie directSSH Ihrer Addon-Konfiguration hinzu und fügen Sie Folgendes hinzu: clusterWebUI
jupyter-k8s-aws-hyperpod: clusterWebUI: enabled: true domain: "<DOMAIN_NAME>" awsCertificateArn: "<ACM_CERTIFICATE_ARN>" traefik: shouldInstall: true directSSH: enabled: true port: <SSH_PORT> # default: 22 domain: "<ROUTE53_HOSTED_ZONE_DOMAIN>"
Die folgende Tabelle zeigt, wo die einzelnen Platzhalterwerte zu finden sind.
| Placeholder | Wo kann man ihn bekommen |
|---|---|
<DOMAIN_NAME> |
Die Domain, die Sie konfiguriert haben, als Sie den Webbrowser-Zugriff aktiviert haben (z. B. spaces.example.com). Weitere Informationen finden Sie unter Installation des EKS-Addons — Jupyter K8s mit WebUI. |
<ACM_CERTIFICATE_ARN> |
AWS Certificate Manager (ACM) AWS-Managementkonsole, wählen Sie Zertifikate und wählen Sie dann Ihren ARN für das Platzhalterzertifikat aus |
<ROUTE53_HOSTED_ZONE_DOMAIN> |
Route 53 AWS-Managementkonsole, wählen Sie Hosted Zones und dann den Namen der privaten gehosteten Zone aus, der für externalDNS verwendet wird (z. B. workspaces.internal) |
<SSH_PORT> |
Port sshd hört interne Workspace-Pods ab. Standard 22. Verwenden Sie einen nicht privilegierten Port (z. B. 2222), wenn Ihre Sicherheitsgruppe oder Unternehmensrichtlinie Port 22 einschränkt. Die Regel für eingehenden SG-Verkehr muss diesem Wert entsprechen. |
DirectSSH und RemoteAccess schließen sich gegenseitig aus
directSSHund schließen sich gegenseitig remoteAccess aus. Wenn Sie beide aktivierenhelm upgrade, schlägt Folgendes fehl: „DirectSSH und RemoteAccess schließen sich gegenseitig aus. Aktiviere nur einen.“ remoteAccessVor der Aktivierung deaktivierendirectSSH.
Aktualisiere das Addon:
aws eks update-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --configuration-values file://addon-config.yaml \ --resolve-conflicts OVERWRITE \ --region <AWS_REGION>
Informationen zur Deaktivierung von Direct SSH finden Sie unterWiderrufen des direkten SSH-Zugriffs.
Schritt 3: Vergewissern Sie sich, dass Direct SSH aktiv ist
# Check addon status aws eks describe-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --region <AWS_REGION> # Check headless services created for workspaces kubectl get svc -l app.kubernetes.io/component=direct-ssh # Verify DNS record resolves (from within VPC) dig <workspace-name>.<namespace>.<ROUTE53_HOSTED_ZONE_DOMAIN>
Stelle mithilfe von Direct SSH eine Verbindung zu deinem Workspace her
Verwende die folgenden Verfahren, um mithilfe von Direct SSH eine Verbindung zu deinem Workspace herzustellen, deine SSH-Schlüssel zu verwalten und Verbindungsprobleme zu beheben.
Wie funktioniert die SSH-Authentifizierung
Direct SSH verwendet die Standardauthentifizierung mit öffentlichen Schlüsseln. Jeder Benutzer generiert sein eigenes SSH-Schlüsselpaar und fügt den öffentlichen Schlüssel zu seinem Workspace hinzu. Private Schlüssel verlassen niemals den Computer des Benutzers.
Im Folgenden sind die wichtigsten Fakten zum SSH-Zugriff aufgeführt:
-
SSH gewährt den gleichen Zugriff wie das JupyterLab Terminal: derselbe Benutzer (
sagemaker-user), dasselbe Dateisystem, dieselben Tools. -
Die Schlüssel sind pro Arbeitsbereich gültig. Ein Schlüssel in einem Arbeitsbereich gewährt keinen Zugriff auf andere Arbeitsbereiche.
-
Das SageMaker AI Spaces-Startskript erstellt automatisch das
.ssh/Verzeichnis mit den richtigen Berechtigungen. -
Schlüssel bleiben auch bei Workspace-Neustarts erhalten (auf dem PC gespeichert) und werden gelöscht, wenn der Workspace gelöscht wird.
Aktuelle Beschränkung
Der SSH-Benutzername ist immer sagemaker-user unabhängig davon, wer eine Verbindung herstellt. Sie können keinen persönlichen Benutzernamen verwenden. Alle Sitzungen werden unter demselben Workspace-Benutzer ausgeführt. Per-user Die Identität in Shell-Prompts und Audit-Logs ist in der aktuellen Version nicht verfügbar.
Schritt 1: Generieren Sie einen SSH-Schlüssel auf Ihrem Client-Computer
Führen Sie diesen Befehl einmal aus, um Ihr Schlüsselpaar zu erstellen:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key
Dadurch entsteht:
-
~/.ssh/my-workspace-key— privater Schlüssel (geheim halten, niemals teilen) -
~/.ssh/my-workspace-key.pub— öffentlicher Schlüssel (zu deinem Workspace hinzufügen)
Schritt 2: Füge deinen öffentlichen Schlüssel zu deinem Workspace hinzu
Verwende eine der folgenden Methoden, um deinen öffentlichen Schlüssel hinzuzufügen. Sie müssen nicht beides tun.
Fügen Sie Ihren Schlüssel über den Webbrowser hinzu
-
Öffne deinen Workspace im Browser (sieheZugriff über den Webbrowser).
-
Öffnen Sie ein -Terminalfenster. Wähle in „Datei“ JupyterLab, „Neu“ und „Terminal“. Wählen Sie im Code-Editor Terminal, Neues Terminal.
-
Kopieren Sie Ihren öffentlichen Schlüssel von Ihrem lokalen Computer:
cat ~/.ssh/my-workspace-key.pub -
In das Workspace-Terminal einfügen:
echo "ssh-ed25519 AAAA...your-key... user@machine" >> ~/.ssh/authorized_keys
Füge deinen Schlüssel über kubectl hinzu
POD=$(kubectl get pods -n <namespace> -l workspace.jupyter.org/workspace-name=<space-name> \ -o jsonpath='{.items[0].metadata.name}') cat ~/.ssh/my-workspace-key.pub | kubectl exec -n <namespace> -i $POD -c workspace -- \ bash -c "cat >> /home/sagemaker-user/.ssh/authorized_keys"
Schritt 3: Stellen Sie mithilfe von SSH eine Verbindung zu Ihrem Workspace her
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key sagemaker-user@<space-name>.<namespace>.<domain>
SSH-Anschluss
Verwenden Sie den SSH-Port, den Ihr Administrator für Direct SSH konfiguriert hat. Wenn Ihr Administrator den Standardport (22) beibehalten hat, können Sie die -p Option weglassen. Wenn sie einen anderen Port konfiguriert haben (z. B. 2222), müssen Sie diesen angeben, da -p <SSH_PORT> sonst die Verbindung fehlschlägt. Connection refused Wenden Sie sich an Ihren Administrator, wenn Sie sich nicht sicher sind, welchen Port Sie verwenden sollen.
Beispiel:
ssh -p 2222 -i ~/.ssh/my-workspace-key sagemaker-user@my-space.default.spaces.example.com
Schritt 4: Konfigurieren Sie SSH für den einfachen Zugriff
Dieser optionale Schritt vereinfacht zukünftige Verbindungen. Fügen Sie Folgendes zu ~/.ssh/config hinzu:
Host my-space HostName <space-name>.<namespace>.<domain> Port <SSH_PORT> User sagemaker-user IdentityFile ~/.ssh/my-workspace-key ServerAliveInterval 15 ServerAliveCountMax 3
Stellen Sie Port den Port ein, den Ihr Administrator konfiguriert hat. Sie können diese Zeile weglassen, wenn Direct SSH den Standardport (22) verwendet. Stellen Sie dann eine Verbindung her mit: ssh my-space
Schritt 5: Verbinden Sie eine Remote-IDE
Nachdem Direct SSH von Ihrem Terminal aus funktioniert (Schritt 3), stellt jede Remote-SSH fähige IDE über denselben ~/.ssh/config Eintrag eine Verbindung her. Für diese Verbindung benötigen Sie keine zusätzliche AWS Konfiguration.
Installieren Sie die Remote-SSH Erweiterung
| IDE | Erweiterung |
|---|---|
| VS Code | Erweiterungen, suchen Sie nach „Remote - SSH“ und wählen Sie Installieren (von Microsoft) |
| Kiro | Erweiterungen, suchen Sie nach „Remote - SSH“ und wählen Sie Installieren |
| Cursor | Erweiterungen, suchen Sie nach „Remote - SSH“ und wählen Sie Installieren |
Stellen Sie von der IDE aus eine Verbindung her
-
Öffnen Sie die Befehlspalette und wählen Sie dann "Remote-SSH: Mit Host verbinden...“
-
Wähle deinen Workspace aus der Liste aus (Verwendungen
~/.ssh/configaus Schritt 4). -
Die IDE installiert ihre Serverkomponente auf dem Workspace (einmalig, ca. 30 Sekunden).
-
Ein Remote-Fenster mit allen Editor-Funktionen, einschließlich IntelliSense Terminal und Datei-Explorer, wird geöffnet.
Öffnen Sie Ihre Workspace-Dateien in VS Code
Wählen Sie in VS Code nach dem Herstellen der Verbindung Datei, Ordner öffnen, /home/sagemaker-user um Ihre Workspace-Dateien direkt zu öffnen.
Verwaltung und Widerruf von Schlüsseln
Sie verwalten Ihre SSH-Schlüssel. SSH-Schlüssel sind langlebige Anmeldeinformationen, die nicht automatisch ablaufen. Ein Schlüssel authorized_keys gewährt Zugriff auf deinen Workspace, bis du ihn explizit entfernst.
Um deinen Schlüssel zu drehen
Wir empfehlen, die Schlüssel regelmäßig zu wechseln.
-
Generieren Sie ein neues Schlüsselpaar auf Ihrem Client-Computer:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key-new -
Füge den neuen öffentlichen Schlüssel zu deinem Workspace hinzu (Schritt 2). Sowohl der alte als auch der neue Schlüssel funktionieren gleichzeitig.
-
Stellen Sie sicher, dass der neue Schlüssel funktioniert:
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key-new sagemaker-user@<hostname> -
Entferne den alten Schlüssel aus
authorized_keysdeinem Workspace-Terminal:# List current keys with line numbers cat -n ~/.ssh/authorized_keys # Remove a specific line (for example, line 1) sed -i '1d' ~/.ssh/authorized_keys
Wenn dein privater Schlüssel kompromittiert ist
Handeln Sie sofort. Ein kompromittierter Schlüssel gewährt vollen Zugriff auf den Workspace, bis du ihn wieder entfernst. authorized_keys
-
Öffne deinen Workspace über den Webbrowser (JupyterLab oder den Code-Editor). Detaillierte Anweisungen finden Sie unter Zugriff über den Webbrowser.
-
Entferne den kompromittierten Schlüssel von
authorized_keys:# View all authorized keys cat ~/.ssh/authorized_keys # Option A: Edit directly nano ~/.ssh/authorized_keys # Option B: Remove all keys and re-add only trusted ones > ~/.ssh/authorized_keys echo "ssh-ed25519 AAAA...new-trusted-key..." >> ~/.ssh/authorized_keys -
Stellen Sie sicher, dass der kompromittierte Schlüssel nicht mehr funktioniert, indem Sie versuchen, eine Verbindung herzustellen. Sie sollten erhalten
Permission denied (publickey). -
Wenn Sie nicht über einen Webbrowser auf den Workspace zugreifen können, wenden Sie sich an Ihren Cluster-Administrator, um
authorized_keysdirekt in den Pod zu gelangen und ihn zu löschen.
Bewährte Methoden
| Üben Sie | Warum |
|---|---|
| Verwenden Sie ed25519-Schlüssel | Kürzer, schneller, sicherer als RSA |
| Verwenden Sie eine Passphrase für Ihren privaten Schlüssel | Schützt vor Schlüsseldiebstahl. Selbst wenn der Schlüssel gestohlen wird, kann er ohne die Passphrase nicht verwendet werden. |
| Ein Schlüssel pro Gerät | Es ist einfacher, den Zugriff eines einzelnen Geräts zu widerrufen, ohne dass dies Auswirkungen auf andere hat |
| Teilen Sie niemals private Schlüssel | Jeder Benutzer und jedes Gerät müssen über ein eigenes Schlüsselpaar verfügen |
authorized_keysRegelmäßig überprüfen |
Entfernen Sie die Schlüssel für Geräte, die Sie nicht mehr verwenden |
Widerrufen des direkten SSH-Zugriffs
Um zu vermeiden, dass nach der Deaktivierung von Direct SSH eine Sicherheitsgruppenregel geöffnet bleibt, führen Sie alle drei Schritte der Reihe nach aus. Überspringen Sie Schritt 2 nicht.
Informieren Sie Ihre Benutzer, bevor Sie den Zugriff widerrufen
Informieren Sie Ihre Benutzer, bevor Sie den Zugriff widerrufen. ExternalDNS entfernt DNS-Einträge innerhalb von etwa 30 Sekunden nach Schritt 3, wodurch neue Verbindungen blockiert werden.
Schritt 1: Im Helm-Diagramm deaktivieren
Entfernen Sie den directSSH Abschnitt vollständig aus Ihrer Addon-Konfigurationsdatei. Helm verwendet standardmäßigdirectSSH.enabled, false wenn der Schlüssel fehlt:
jupyter-k8s-aws-hyperpod: clusterWebUI: enabled: true domain: "<DOMAIN_NAME>" ... # directSSH section removed
Alternativ explizit gesetztenabled: false:
directSSH: enabled: false
Schritt 2: Entfernen Sie die Regel für eingehenden Sicherheitsgruppenverkehr
# Find the rule ID aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=<SG_ID> \ --query 'SecurityGroupRules[?IpProtocol==`tcp` && FromPort==`<SSH_PORT>`].[SecurityGroupRuleId,CidrIpv4]' \ --output table \ --region <AWS_REGION> # Remove the rule aws ec2 revoke-security-group-ingress \ --group-id <SG_ID> \ --security-group-rule-ids <RULE_ID> \ --region <AWS_REGION>
Schritt 3: Auf Cluster anwenden
aws eks update-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --configuration-values file://addon-config.yaml \ --resolve-conflicts OVERWRITE \ --region <AWS_REGION>
Wenn Sie diesen Befehl ausführen, werden die Headless-Dienste für alle Workspaces entfernt. ExternalDNS löscht dann die Route 53 A-Datensätze innerhalb von etwa 30 Sekunden. Nachdem ExternalDNS die Datensätze entfernt hat, können neue SSH-Verbindungen den Workspace-Hostnamen nicht mehr auflösen.
Was passiert nach dem Widerruf
| Komponente | Staat nach dem Widerruf |
|---|---|
| DNS-Datensätze | ExternalDNS entfernt sie innerhalb von etwa 30 Sekunden. Neue Verbindungen können den Workspace-Hostnamen nicht auflösen. |
| SG-Regel für eingehenden Datenverkehr | Nach Schritt 2 geschlossen. Kein Netzwerkpfad erreicht den Port. |
| Neue SSH-Verbindungen | Blockiert. Der Hostname wird nicht mehr aufgelöst und die SG-Regel schließt den Port. |
| Workspace-Daten (PVC) | Unbetroffen. Der PC speichert Ihre Dateien, authorized_keys und den Hostschlüssel. |
Fehlerbehebung
| Symptom | Ursache | Reparieren |
|---|---|---|
NXDOMAIN |
DNS wird nicht aufgelöst | Stellen Sie sicher, dass die gehostete Zone existiert, mit der VPC verknüpft ist und externalDNS ausgeführt wird |
Connection timed out |
SG-Blockierung: Die Regel wurde zur falschen SG hinzugefügt oder fehlt vollständig | Überprüfen Sie OverrideVpcConfig die Instanzgruppe (Admin-Schritt 1). Stellen Sie sicher, dass die TCP-Regel für eingehenden Datenverkehr Ihren Quell-CIDR abdeckt. |
Connection refused |
sshd läuft nicht | Prüfen Sie, ob sich der Speicherplatz im Status Running befindet und aktiviert directSSH ist |
Permission denied (publickey) |
Schlüssel nicht eingegeben authorized_keys |
Fügen Sie den öffentlichen Schlüssel über den Webbrowser oder kubectl hinzu (Schritt 2 für Endbenutzer) |
Host key changedWarnung |
Der Speicherplatz wurde neu erstellt (neuer Pod, neuer Hostschlüssel) | Auf Ihrem Client-Computer: Stellen Sie ssh-keygen -R <hostname> dann erneut eine Verbindung her |
Stale DNS records after space deletion |
ExternalDNS läuft mit --policy=upsert-only |
Aktualisieren Sie die ExternalDNS-Bereitstellung auf und fügen Sie sie hinzu. --policy=sync --txt-owner-id=<cluster-name> Bereinigen Sie vorhandene veraltete Datensätze manuell: aws route53 list-resource-record-sets --hosted-zone-id <ZONE_ID> |
| IDE: „Verbindung konnte nicht hergestellt werden“ | sshd ist noch nicht bereit | Warten Sie nach der Erstellung des Arbeitsbereichs 60-90 Sekunden und versuchen Sie es erneut |
| IDE: Hängt bei „VS Code Server wird installiert“ | Workspace hat keinen Internetzugang | Ihr Workspace lädt die VS Code-Server-Binärdatei bei der ersten Verbindung von einem externen Host herunter. Wende dich an deinen Administrator, wenn der Workspace einen Air-Gap hat. |
IDE: Permission denied |
IdentityFile Pfad stimmt nicht überein | Stellen Sie zuerst sicher, dass Terminal-SSH funktioniert, und checken Sie IdentityFile dann ein ~/.ssh/config |
| IDE: Die Verbindung wird nach dem Leerlauf unterbrochen | Kein Keepalive konfiguriert | Hinzufügen ServerAliveInterval 15 und zu ServerAliveCountMax 3 ~/.ssh/config |
(Optional) Voraussetzungen einrichten
Verwenden Sie diesen Abschnitt nur, wenn der Webbrowser-Zugriff noch nicht aktiviert ist, oder um Ihre ExternalDNS-Konfiguration zu überprüfen oder zu aktualisieren.
Von Grund auf neu installieren
Wenn der Webbrowser-Zugriff noch nicht konfiguriert ist, benötigen Sie Folgendes, bevor Sie Direct SSH aktivieren können:
-
Gehostete Route 53-Zone — eine Domain oder Subdomain, die Ihnen gehört und die in Route 53 registriert ist
-
Externes DNS — wird über EKS-Add-Ons bereitgestellt, wobei die IAM-Rolle über Route 53-Berechtigungen verfügt
-
AWS Load Balancer Controller — erforderlich, wenn Sie den Webbrowser-Zugriff (ALB Ingress) verwenden. Hinweise zur HyperPod-specific Installation finden Sie unter. AWS Load Balancer Controller: HyperPod vpCID-Anforderung
-
VPC-Konnektivität — VPN oder Direktverbindung von Client-Computern zur VPC
Die zusätzlichen Abhängigkeiten und die Schritte zur Konfiguration des Webbrowserzugriffs finden Sie unter. Installieren Sie SageMaker AI Spaces Add-on
AWS Load Balancer Controller: HyperPod vpCID-Anforderung
In der Standardinstallationsdokumentation für den AWS Load Balancer Controller wird der Parameter nicht erwähnt. vpcId Bei HyperPod Clustern vpcId führt das Auslassen dazu, dass die Installation fehlschlägt. Sie müssen es explizit angeben.
Holen Sie sich Ihre VPC-ID:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'VpcConfig.VpcId' \ --output text
Installieren Sie mit den erforderlichen HyperPod Parametern:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=<EKS_CLUSTER_NAME> \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller \ --set enableServiceMutatorWebhook=false \ --set vpcId=<VPC_ID>
| Parameter | Warum erforderlich am HyperPod |
|---|---|
vpcId |
HyperPod VPC kann vom Controller nicht automatisch erkannt werden. Ohne sie schlägt die Installation fehl. |
enableServiceMutatorWebhook=false |
Der mutierende Webhook steht in Konflikt mit HyperPod der Dienstkonfiguration |
serviceAccount.create=false |
Das Dienstkonto muss vor der Installation mit der richtigen IRSA- oder Pod Identity-Anmerkung erstellt werden |
Erstellen Sie das Dienstkonto (aws-load-balancer-controller) mit der entsprechenden IAM-Rollenannotation, bevor Sie diesen Befehl ausführen. Weitere Informationen zur IAM-Richtlinie und zu den Schritten zur Erstellung eines Dienstkontos finden Sie unter Amazon EKS Load Balancer Controller IRSA-Setup im Amazon EKS-Benutzerhandbuch.
Externe DNS-Konfiguration
ExternalDNS synchronisiert Kubernetes-Dienste mit DNS-Anbietern. Konfigurieren Sie ExternalDNS mit den folgenden Einstellungen, wenn Sie es mit Amazon Route 53 in einer Produktionsumgebung verwenden.
ExternalDNS erfordert die Synchronisierungsrichtlinie
Sie müssen ExternalDNS mit konfigurieren. --policy=sync
Standardmäßig verwendet ExternalDNS. --policy=upsert-only Dadurch werden DNS-Einträge erstellt und aktualisiert, aber niemals gelöscht. Wenn Sie einen Workspace löschen, bleiben die A- und TXT-Einträge in Amazon Route 53 als veraltete Einträge erhalten.
Verwenden Sie es --policy=upsert-only nur für Testzwecke und ändern Sie es in --policy=sync für die Produktion. Sie müssen auch das --txt-owner-id Flag setzen, das ExternalDNS mitteilt, welche Datensätze es besitzt und welche Datensätze bei der Bereinigung gelöscht werden sollen.
Konfigurieren Sie Ihre ExternalDNS-Bereitstellung mit den folgenden Argumenten:
--provider=aws --source=service # watches Services (required for headless Services) --domain-filter=<ROUTE53_HOSTED_ZONE> # restricts ExternalDNS to your hosted zone only --policy=sync # enables deletion of stale records on space deletion --txt-owner-id=<CLUSTER_NAME> # identifies which records this ExternalDNS instance owns
Ersetzen Sie in den vorangegangenen Argumenten die folgenden Werte:
-
<ROUTE53_HOSTED_ZONE>— Ihre private gehostete Zonendomäne von Amazon Route 53 (zum Beispielworkspaces.internal) -
<CLUSTER_NAME>— Ihr EKS-Clustername (zum Beispielmy-hyperpod-cluster)
Führen Sie den folgenden Befehl aus, um Ihre aktuelle ExternalDNS-Richtlinie zu überprüfen:
kubectl get deployment -n kube-system external-dns \ -o jsonpath='{.spec.template.spec.containers[0].args}' | tr ',' '\n' | grep -E 'policy|owner|source|domain'