Herstellen einer Verbindung mit Databricks mithilfe eines SSH-Tunnels

Von Bedeutung

Dieses Feature befindet sich in der Betaversion.

Kosten und Preise für Funktionen in der Beta können sich ändern.

Der Azure Databricks SSH (Secure Shell) Tunnel verbindet Visual Studio Code, Cursor oder Ihr Terminal mit dem Azure Databricks Arbeitsbereich und Azure Databricks serverless Compute, AI Runtime oder Classic Compute. Nutze es, um Workspace-Dateien zu bearbeiten und Python-Skripte und Notebooks mit deiner Python-Umgebung und Codeausführung auf dem Remotecompute auszuführen oder zu debuggen. Verbinde dich direkt mit serverloser Rechenleistung oder richte eine wiederverwendbare SSH-Verbindung zu einem dedizierten klassischen Cluster ein.

Anforderungen

Starte die SSH-Verbindung von deinem lokalen Rechner. Der Tunnel kann nicht aus einer anderen entfernten Umgebung oder einem Docker-Container gestartet werden.

Um sich mit serverlosem oder klassischem Compute zu verbinden, müssen Sie Folgendes haben:

  • Databricks CLI Version 1.5.0 oder höher, die auf Ihrem lokalen Computer installiert ist, und eine konfigurierte Authentifizierung. Überprüfen Sie Ihre installierte Version mit databricks --version. Siehe Installieren oder Aktualisieren der Databricks CLI.
  • Eines der folgenden:
    • Visual Studio Code Version 1.110.0 (Universal) oder höher sowie die installierte Remote – SSH-Erweiterung (1.0.46+).
    • Cursor-Version 2.6.11 (Universal) oder höher.

Zum Herstellen einer Verbindung mit serverlosem Computing muss die Portweiterleitung zum serverlosen Computing aktiviert sein. Siehe Portweiterleitung für serverloses Computing verwalten.

Um eine Verbindung mit serverlosen GPU-Compute herzustellen, muss das KI-Runtime-Feature aktiviert sein. Siehe KI-Runtime.

Zusätzliche Anforderungen für klassische Compute-Ressourcen

So stellen Sie eine Verbindung zu klassischen Rechenressourcen (dediziert, für einen einzelnen Benutzer) her:

Wählen Sie eine SSH-Verbindung

Verwenden Sie die Verbindungsmethode für Ihren Computetyp:

Compute Verbindungsmethode Anforderung an die Einrichtung
Serverloses Rechnen databricks ssh connect Kein separater SSH-Einrichtungsschritt.
Füge --ide vscode oder --ide cursor hinzu, um eine IDE zu starten.
KI-Runtime databricks ssh connect --accelerator <accelerator> Kein separater SSH-Einrichtungsschritt.
Füge --ide vscode oder --ide cursor hinzu, um eine IDE zu starten.
Für unterstützte Beschleuniger siehe --accelerator.
Klassische dedizierte Einzelbenutzer-Rechenleistung Führen Sie die Ausführung databricks ssh setup --name <connection-name> in Ihrem Terminal aus.
Dann starte die SSH-Sitzung aus der IDE oder starte ssh <connection-name>.
Wählen Sie einen dedizierten, Einzelbenutzer-Cluster, der die klassischen Rechenanforderungen erfüllt.
Gemeinsam genutzte Cluster werden nicht unterstützt.

Für einen Vergleich mit Databricks Connect und anderen Entwicklungsoptionen siehe Verbindung über Ihre IDE herstellen.

Herstellen einer Verbindung mit serverlosem Computing

Nachdem Sie die oben genannten Anforderungen erfüllt haben, führen Sie databricks ssh connect von Ihrem Terminal oder Ihrer IDE aus.

Der --ide Wert wählt den Editor aus, der gestartet werden soll, unabhängig davon, von welchem Editor oder Terminal der Befehl ausgeführt wird.

Visual Studio Code

databricks ssh connect --ide vscode

Die CLI öffnet ein Visual Studio Code-Fenster, das mit dem Remote-Compute verbunden ist.

Cursorfunctionen

databricks ssh connect --ide cursor

Die CLI öffnet ein Cursor-Fenster, das mit der Remote-Compute-Umgebung verbunden ist.

Terminal

databricks ssh connect

Die CLI startet eine interaktive SSH-Sitzung.

Für Befehlsoptionen, einschließlich benannter Verbindungen und Authentifizierungsprofile, siehe databricks ssh connect.

Nach der Verbindung öffne dein Workspace-Projekt und wähle die Python-Umgebung aus. Wenn die Verbindung fehlschlägt, siehe Fehlerbehebung bei SSH-Tunnelverbindungen.

Stellen Sie eine Verbindung mit serverloser GPU-Rechenleistung mit AI Runtime her

Mit aktivierter KI-Laufzeit fügen Sie --accelerator hinzu, um GPU-Berechnung zu verwenden:

databricks ssh connect --accelerator GPU_1xA10

databricks ssh connect bietet Ihnen eine interaktive Sitzung auf einem einzelnen Knoten. Für langjährige Trainingsaufgaben oder Multi-Node-Distributed Training reichen Sie stattdessen die Arbeitslast mit databricks air ein. Siehe Verwenden der Databricks-CLI mit AI Runtime.

Verbindung mit klassischer Recheninstanz herstellen

Für eine wiederverwendbare Verbindung zu einem klassischen dedizierten Cluster richten Sie einen SSH-Hostnamen ein und wählen Sie diesen Host in Ihrer IDE aus oder verbinden Sie sich von einem Terminal aus.

Einrichten der SSH-Verbindung

Hinweis

Das Einrichten der SSH-Verbindung ist nur erforderlich, wenn Sie eine Verbindung mit der klassischen Compute herstellen.

Führe databricks ssh setup auf deinem lokalen Rechner aus. Ersetzen Sie <connection-name> durch einen Namen für diese Verbindung, wie z. my-connectionB. :

databricks ssh setup --name <connection-name>

Die CLI fordert Sie auf, einen Cluster auszuwählen, und fügt Ihrer SSH-Konfiguration einen Host-Eintrag hinzu. Du kannst auch direkt einen Cluster auswählen. Ersetzen Sie <cluster-id> durch die ID Ihres dedizierten Clusters:

databricks ssh setup --name <connection-name> --cluster <cluster-id>

Um zu konfigurieren, wie lange der SSH-Tunnel nach der Trennung des letzten Clients wartet, fügen Sie --shutdown-delay dem Setup-Befehl hinzu. Der Standardwert ist 10 Minuten. Zum Beispiel, um eine 30-Minuten-Verzögerung für Verbindungen über diesen SSH-Host-Eintrag einzustellen:

databricks ssh setup --name <connection-name> --cluster <cluster-id> --shutdown-delay 30m

Hinweis

Bei IntelliJ-Benutzern empfiehlt Databricks, dem Setupbefehl hinzuzufügen --auto-start-cluster=false und den Cluster manuell zu starten, bevor eine Verbindung hergestellt wird. Dies liegt daran, dass JetBrains-IDEs alle konfigurierten Cluster beim Start starten, was zu unerwarteten Berechnungsgebühren führen kann.

Herstellen einer Verbindung mit Visual Studio Code oder Cursor

  1. Installieren Sie für Visual Studio Code die Remote-SSH-Erweiterung. Der Cursor enthält standardmäßig eine Remote-SSH-Erweiterung.

  2. Klicken Sie im Hauptmenü der IDE auf Ansicht>Befehlspalette. Wählen Sie Remote-SSH: Einstellungen aus. Wählen Sie alternativ "Einstellungen" aus: Öffnen Sie die Benutzereinstellungen (JSON), um sie direkt zu ändern settings.json .

  3. Fügen Sie unter Remote.SSH: Standarderweiterungen (oder remote.SSH.defaultExtensions in settings.json) hinzu ms-Python.Python und ms-toolsai.jupyter.

    Wenn Sie settings.json ändern:

    "remote.SSH.defaultExtensions": [
        "ms-Python.Python",
        "ms-toolsai.jupyter"
    ]
    

    Hinweis

    Erhöhen Sie optional den Wert von Remote.SSH: Connect Timeout (oder remote.SSH.connectTimeout in settings.json), um die Wahrscheinlichkeit von Timeoutfehlern weiter zu verringern. Das Standardtimeout ist 360.

  4. Wählen Sie in der Befehlspalette Remote-SSH: Verbindung mit Host herstellen.

  5. Wählen Sie im Dropdownmenü die Verbindung aus, die Sie im ersten Schritt eingerichtet haben. Die IDE fährt mit der Verbindung in einem neuen Fenster fort.

Verbinden mit IntelliJ-IDEs

  1. Folgen Sie dem Remoteserver-Tutorial, um die Einrichtung vorzunehmen.
  2. Geben Sie auf dem neuen Verbindungsbildschirm Folgendes ein:
    • Benutzername: root
    • Host: <connection-name>

Verbinden Sie sich von einem Terminal aus mit Compute (klassisch)

Verwenden Sie den Verbindungsnamen, den Sie mit databricks ssh setup konfiguriert haben:

ssh <connection-name>

Für eine direkte Verbindung ohne wiederverwendbaren SSH-Host-Eintrag können Sie auch die CLI verwenden. Ersetzen Sie <cluster-id> durch Ihre dedizierte Cluster-ID:

databricks ssh connect --cluster <cluster-id>

Siehe databricks ssh connect.

Workspace-Projekte über SSH öffnen

Standardmäßig wird der Befehl databricks ssh connect in einem temporären Verzeichnis geöffnet. Um auf Arbeitsbereichsdateien zuzugreifen, navigieren Sie über die IDE oder das Terminal zu Ihrem Arbeitsbereichsverzeichnis:

  • Wählen Sie in Visual Studio Code oder Cursor in der Befehlspalette (Cmd/STRG+UMSCHALT+P) "Ordner öffnen" aus, und navigieren Sie zu /Workspace/Users/<your-username>.
  • Ändern Sie in einem Terminalfenster Ihr Verzeichnis: cd /Workspace/Users/<your-username>.

Hinweis

Dateien in /Workspace, /Volumes, und /dbfs persistieren bei Clusterneustarts. Dateien in /home, /rootund andere lokale Pfade sind kurzlebig und gehen beim Neustart verloren.

Führe Python und Notebooks in der SSH-Sitzung aus

Wählen Sie die Python-Umgebung aus, die von Ihrer SSH-Sitzung bereitgestellt wird, bevor Sie den Code ausführen. Für klassische Compute umfasst diese Umgebung die integrierten Databricks Runtime-Bibliotheken und Compute-Scoped-Bibliotheken.

  1. Öffnen Sie die Befehlspalette (Cmd/STRG+UMSCHALT+P) und wählen Sie Python: Interpreter auswählen.

  2. Wählen Sie die pythonEnv-xxx virtuelle Umgebung aus der Liste aus. Wenn Sie Python Abhängigkeiten mithilfe des --base-environment Flags einrichten, wählen Sie den längeren Namen der virtuellen Umgebung aus der Liste der Optionen aus. Wenn die virtuelle Umgebung nicht angezeigt wird:

    1. Führen Sie die Ausführung echo $DATABRICKS_VIRTUAL_ENV von einem Terminal innerhalb der IDE aus.

      Beispielausgabe: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

    2. Fügen Sie die vollständige Ausgabe als Interpreterpfad in die Aufforderung Python: Interpreter auswählen ein.

  3. Öffnen Sie ein neues Terminal, und die virtuelle Umgebung sollte automatisch aktiviert werden.

  4. Um ein Jupyter-Notizbuch auszuführen, stellen Sie sicher, dass die virtuelle Umgebung als Kernel ausgewählt ist. Klicken Sie oben rechts im Notizbuch auf "Kernel auswählen ".

Führen Sie Python Dateien und .ipynb Notizbücher mithilfe der standardmäßigen Python- und Jupyter-Erweiterungen aus, und debuggen Sie sie.

Um Spark in einer Python Datei auf serverlosem Compute zu verwenden, initialisieren Sie eine Sitzung explizit:

from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().profile("DEFAULT").getOrCreate()

Abhängigkeiten für SSH-Sitzungen verwalten

Wählen Sie Abhängigkeitsmanagement für Ihren Rechentyp:

  • Für serverlose Rechenleistung verwenden Sie eine Workspace-Basisumgebung mit einer unterstützten serverlosen Umgebungsversion.
  • Für klassisches Compute verwenden Sie Clusterbibliotheken für Abhängigkeiten, die über Neustarts hinweg bestehen.
  • Für Abhängigkeiten, die auf eine Projektsitzung beschränkt sind, verwenden Sie ein Einrichtungs-Notebook.

Für Nicht-Python-Pakete siehe Non-Python-Abhängigkeiten.

Arbeitsbereichsbasisumgebungen (empfohlen für serverlose und AI-Runtime)

Hinweis

Für diese Funktion muss die Vorschau Serverless-Arbeitsbereichs-Umgebungsunterstützung in Aufträgen aktiviert sein. Siehe Manage Azure Databricks Previews.

Verwenden Sie eine Arbeitsbereichsbasisumgebung mit serverloser Umgebung, Version 4 oder darunter, um Python Abhängigkeiten vorab zu konfigurieren. Der SSH-Tunnel unterstützt --base-environment nicht mit serverlosen Umgebungen ab Version 5. Erstellen Sie eine Basisumgebung mithilfe der Workspace-Benutzeroberfläche oder des Databricks CLI-Befehls databricks environments create-workspace-base-environment.

Geben Sie die Umgebung bei der Verbindung mithilfe der --base-environment Option an:

databricks ssh connect --base-environment my-workspace-env

Die --base-environment Option akzeptiert einen Anzeigenamen, einen Workspace-YAML-Pfad oder eine Ressourcen-ID. Man kann es nicht mit --clusterkombinieren. Siehe databricks ssh connect.

Cluster-Bibliotheken (empfohlen für klassische Rechenleistung)

Installieren Sie Abhängigkeiten über die Benutzeroberfläche des Arbeitsbereichs unter Compute > Bibliotheken. Diese bleiben auch nach Clusterneustarts bestehen und sind in pythonEnv-xxx verfügbar. Siehe Clusterbibliotheken.

Nicht Python Abhängigkeiten

Um nicht Python Abhängigkeiten beizubehalten, verwenden Sie ein Init-Skript, das die Pakete installiert, wenn die Berechnung gestartet wird. Speichern Sie optional die Pakete in einem Unity-Katalogvolume, und verweisen Sie auf sie aus dem Init-Skript. Weitere Informationen finden Sie unter Was sind Initskripts?.

Projektspezifische Notizbucheinrichtung

Führen Sie für projektbezogene Abhängigkeiten zu Beginn jeder Sitzung ein Notizbuch mit %pip install Befehlen aus:

# Install from pyproject.toml
%pip install .

# Install from a requirements file
%pip install -r requirements.txt

# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl

%pip-Befehle umfassen Databricks-spezifische Leitlinien und verteilen Abhängigkeiten an Spark-Executorknoten. Dadurch können benutzerdefinierte Funktionen (USER-Defined Functions, UDFs) mit benutzerdefinierten Abhängigkeiten aktiviert werden.

Weitere Beispiele finden Sie unter Verwalten von Bibliotheken mit %pip Befehlen.

Du musst das Setup-Notebook nicht erneut ausführen, wenn du dich vor dem Herunterfahren des SSH-Tunnels wieder verbindest. Standardmäßig schaltet sich der Tunnel 10 Minuten nach der Trennung des letzten Clients ab. Um diese Verzögerung zu ändern, verwenden Sie --shutdown-delay mit dem Befehl für Ihre Verbindungsmethode:

  • Für eine wiederverwendbare Verbindung mit Compute (klassische) konfigurieren Sie die Verzögerung mit Databricks SSH-Einrichtung. Der generierte SSH-Host-Eintrag wendet die Verzögerung an, wenn du dich über deine IDE verbindest oder ssh <connection-name> ausführst.
  • Für eine direkte CLI-Verbindung legen Sie die Verzögerung mit databricks ssh connect fest.

Hinweis

Mehrere SSH-Sitzungen auf demselben Cluster teilen eine virtuelle Umgebung.

Verwenden Sie Git in einer SSH-Sitzung

Von Bedeutung

Dieses Feature befindet sich in der Public Preview. Arbeitsbereichsadministratoren können den Zugriff auf die Git CLI-Unterstützung für Git-Ordner über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Du kannst die Git-CLI im SSH-Tunnel mit neu erstellten Git-Ordnern und den konfigurierten Git-Anmeldedaten im Azure Databricks-Arbeitsbereich verwenden. Siehe Verwenden von Git CLI-Befehlen.

Wenn die CLI nach Zugangsdaten fragt, anstatt sie automatisch zu erkennen, müssen Sie Ihren Git-Anbieter mit Azure Databricks verbinden. Siehe Verbinden Ihres Git-Anbieters mit Databricks.

Halten Sie getrennte Prozesse am Laufen

Standardmäßig stoppt der SSH-Tunnel beim Abschalten jeden Prozess, den die Sitzung gestartet hat, einschließlich der Prozesse, die Sie mit tmux, setsid oder nohup von der Sitzung getrennt haben. Bevor er sie stoppt, protokolliert der Tunnel eine Warnung mit ihren Prozess-IDs im Output des Tunnel-Joblaufs. databricks ssh connect druckt die Job-Run-ID, wenn es den Tunnel startet.

Um die Arbeit im Hintergrund auch nach dem Trennen der Verbindung fortzusetzen, verwenden Sie das Flag --keep-detached-processes. Setzen Sie das Flag für die Verbindung, die den Tunnel initiiert, bevor Sie mit der Arbeit beginnen, die Sie beibehalten möchten. Siehe Verbindungen zu einem bestehenden Tunnel.

  • Serverless oder klassische Rechenressourcen: Übergeben Sie das Flag an databricks ssh connect.
  • Klassische Compute-Ressourcen mit einem konfigurierten SSH-Host: Übergeben Sie das Flag an databricks ssh setup. Der generierte SSH-Host-Eintrag wird jedes Mal angewendet, wenn Sie sich verbinden. Serverlose Verbindungen erfordern keine Einrichtung, daher gilt diese Option nur für klassisches Computing.

Das folgende Beispiel sorgt dafür, dass getrennte Prozesse auf serverlosem Computing weiterlaufen:

databricks ssh connect --keep-detached-processes

Das folgende Beispiel hält getrennte Prozesse auf einem dedizierten Cluster laufend:

databricks ssh connect --cluster 0123-456789-abcdefgh --keep-detached-processes

Wenn Sie dieses Flag verwenden und der letzte Client die Verbindung trennt, verhält sich der Tunnel wie folgt:

  • Nach dem --shutdown-delay Punkt prüft der Tunnel auf abgetrennte Prozesse. Solange noch welche ausgeführt werden, läuft der Tunnel weiter, anstatt sich abzuschalten.
  • Losgelöste Prozesse behalten ihren Zugriff auf /Workspace und /Volumes.
  • Nachdem der letzte detachte Prozess beendet ist, wird der Tunnel geschlossen und seine Jobausführung endet.

Während der Tunnel aktiv bleibt, können Sie die Verbindung zu derselben Recheninstanz wiederherstellen und an unterbrochenen Aufgaben weiterarbeiten – beispielsweise mit tmux attach. Bei serverless Compute verbinden Sie sich mit demselben Verbindungsnamen erneut. Wenn Sie --name weglassen, leitet die CLI den Verbindungsnamen aus Ihrem Workspace sowie den Flags --accelerator und --base-environment ab, sodass eine Änderung eines der Flags eine separate Verbindung startet.

Verbindungen zu einem bestehenden Tunnel

Der Modus des Tunnels ist beim Start festgelegt, und spätere Verbindungen behandeln ihn wie folgt:

  • Wenn Sie mithilfe des Flags eine Verbindung zu einem Tunnel herstellen, der ohne dieses Flag gestartet wurde, initiiert die CLI einen neuen Tunnel. Prozesse, die du im bestehenden Tunnel abgetrennt hast, werden nicht beibehalten und stoppen trotzdem, wenn dieser Tunnel abgeschaltet wird. Auf einem dedizierten Cluster stoppt der neue Tunnel sofort den bestehenden, wodurch der neue Tunnel seine offenen Sitzungen beendet und die abgetrennten Prozesse stoppt.
  • Wenn du ohne das Flag eine Verbindung zu einem Tunnel herstellst, der mit diesem Flag gestartet wurde, verwendet die CLI diesen Tunnel wieder, und der Tunnel läuft weiter, während abgetrennte Prozesse verbleiben. Dies gilt auch für Verbindungen von anderen SSH-Host-Einträgen oder IDE-Sitzungen zu derselben Compute-Instanz.

Kosten und maximale Lebensdauer

Beachten Sie Folgendes:

  • Während der Tunnel weiterläuft, läuft Compute weiter und verursacht Kosten. Ein klassischer Cluster endet nicht automatisch. Eine inaktive Sitzung tmux zählt als laufender losgelöster Prozess, also schließen Sie sie, wenn Sie sie nicht mehr brauchen.
  • Der Job-Run stoppt trotzdem, wenn er die maximale Lebensdauer erreicht, die von --server-timeout festgelegt wurde, selbst wenn getrennte Prozesse laufen. Diese Lebensdauer zählt ab dem Start des Joblaufs, nicht ab dem Punkt, an dem der letzte Client die Verbindung trennt. Nachdem die Auftragsausführung beendet wurde, verlieren abgetrennte Prozesse ihren Zugriff auf /Workspace und /Volumes. Bei serverlosem Computing stoppen die losgelösten Prozesse. Bei klassischem Compute können sie ohne diesen Zugriff weiterlaufen, bis der Cluster beendet wird. Um die Ausgabe lang laufender, entkoppelter Vorgänge zu speichern, speichern Sie sie mit dem Azure Databricks SDK oder der REST-API, anstatt in /Workspace- oder /Volumes-Pfade zu schreiben. Siehe "Arbeiten mit Dateien" in Unity-Katalogvolumes.
  • Für länger laufende Aufgaben nutze stattdessen Jobs oder Bundles.

Einschränkungen des SSH-Tunnels

Der von Databricks bereitgestellte SSH-Tunnel hat die folgenden Einschränkungen:

  • Gemeinsam genutzte Cluster werden nicht unterstützt.
  • Dateien, die außerhalb /Workspacebearbeitet wurden, /Volumesund /dbfs gehen beim Clusterneustart verloren.
  • Pro Cluster sind maximal 10 SSH-Verbindungen zulässig.
  • Inaktive Sitzungen können nach 1 Stunde getrennt werden.
  • Der SSH-Tunnel kann nicht aus anderen Remoteumgebungen oder Docker-Containern gestartet werden.
  • Möglicherweise treten Leistungs- oder Verbindungsprobleme auf, wenn drei oder mehr Jupyter-Notizbücher gleichzeitig geöffnet sind.

Notebook-Verhalten in SSH-Sitzungen

Beim Verwenden des SSH-Tunnels gibt es einige Unterschiede in Notebooks:

  • Python-Dateien definieren keine Databricks-Globalen (wie spark oder dbutils). Sie müssen sie explizit mit from databricks.sdk.runtime import spark.
  • Für ipynb-Notizbücher stehen diese Features zur Verfügung:
    • Globale Databricks-Funktionen: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql Zauberbefehl zum Ausführen von SQL-Zellen

So arbeiten Sie mit Python-Quellnotebooks:

  • Suchen Sie nach jupyter.interactiveWindow.cellMarker.codeRegex und setzen Sie es auf:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Suchen Sie nach jupyter.interactiveWindow.cellMarker.default und setzen Sie es auf:

    # COMMAND ----------
    

Fehlerbehebung der SSH-Tunnelverbindungen

Beginnen Sie mit dem Symptom, das zum Fehler passt:

Symptom Erste Prüfung
Die SSH-Verbindung fällt aus oder es tritt eine Zeitüberschreitung auf. Überprüfen Sie den HTTPS- und WebSocket-Zugriff für den Arbeitsbereich. Für Classic Compute prüfen Sie außerdem den Clusterzustand und das IDE-Timeout. Siehe SSH-Verbindung schlägt fehl oder läuft ab.
Die CLI meldet, dass sie code nicht finden kann. Installiere den Visual Studio Code-Shell-Befehl in deinem lokalen PATH. Siehe code Befehl nicht gefunden.
Die CLI-Authentifizierung schlägt fehl. Überprüfen Sie das CLI-Profil und für klassische Compute-Ressourcen die Clusterberechtigungen. Siehe CLI-Authentifizierungsfehler.
Die CLI berichtet invalid_grant mit Refresh token is invalid. Melde dich erneut im Arbeitsbereich mit demselben CLI-Profil an und versuche dann die Verbindung erneut. Siehe Refresh-Token ist ungültig.
Python-Code oder Notebooks schlagen nach dem Verbinden fehl. Überprüfen Sie den ausgewählten Interpreter oder Notebook-Kernel. Siehe Python-Code oder Notizbücher schlagen in der SSH-Sitzung fehl.
Dateien verschwinden nach einem Neustart des Clusters. Überprüfen Sie, ob die Dateien auf einem flüchtigen lokalen Pfad gespeichert wurden. Siehe Dateien verschwinden oder die Umgebung wird nach dem Cluster-Neustart zurückgesetzt.

SSH-Verbindung fällt aus oder läuft ab

  • Für klassische Berechnung überprüfen Sie, dass der Cluster in der Arbeitsbereich-Benutzeroberfläche läuft.
  • Überprüfen Sie, ob Ihr Netzwerk, Ihr VPN und Ihre Firewall HTTPS- und WebSocket-Verkehr zu Ihrer Arbeitsbereichsdomäne erlauben. Der SSH-Tunnel verwendet Port 22 nicht. Es tunnelt den gesamten Datenverkehr über denselben HTTPS-Endpunkt wie andere Databricks-CLI-Befehle. Siehe Konfigurieren von Firewallregeln für Domänennamen.
  • Wenn ein Proxy oder eine Firewall den TLS-Verkehr prüft, prüfen Sie, ob sie die WebSocket-Upgrade-Anfrage erlaubt. Eine zwischengeschaltete Instanz, die das Upgrade blockiert oder die Upgrade-Anforderung entfernt, führt dazu, dass die Verbindung fehlschlägt oder ein Timeout auftritt. Bitten Sie Ihren Netzwerkadministrator, WebSocket-Upgrades für Ihre Workspace-Domäne zuzulassen oder den Datenverkehr für diese Domäne von der TLS-Inspektion auszunehmen.
  • Wenn du dich über einen Firmen-HTTP-Proxy verbindest, setze die HTTPS_PROXY Umgebungsvariable oder NO_PROXY umgehe den Proxy für deine Arbeitsbereich-Domäne. Der SSH-Tunnel verwendet dieselbe Proxy-Konfiguration wie andere Databricks-CLI-Befehle. Siehe Proxy-Server-Konfiguration.
  • Überprüfe, ob dein lokaler Rechner HTTPS-Zugriff auf github.com und release-assets.githubusercontent.comhat.
  • Erhöhen Sie das SSH-Timeout. Siehe Verbinden mit Visual Studio Code oder Cursor.
  • Bei Fehlern aufgrund von Schlüsselkonflikten löschen Sie ~/.databricks/ssh-tunnel-keys und führen Sie databricks ssh setup erneut aus.
  • Bei Fehlern bei der Remote-Host-Identifizierung überprüfen Sie die ~/.ssh/known_hosts Datei und löschen Sie Einträge im Zusammenhang mit Ihrem Cluster.
  • SSH-Sitzungen können nach 1 Stunde getrennt werden. Mit einem einzelnen Cluster können nicht mehr als 10 SSH-Verbindungen hergestellt werden. Siehe SSH-Tunnel-Einschränkungen.

code Befehl nicht gefunden

Wenn Error: exec: "code": executable file not found in $PATH angezeigt wird, öffnen Sie die Befehlspalette (Cmd/Ctrl+Shift+P), wählen Sie Shell-Befehl: Befehl „code“ in PATH installieren und starten Sie Ihre IDE oder Terminalsitzung neu.

CLI-Authentifizierungsfehler

  • Melden Sie sich mit databricks auth login in Ihrem Arbeitsbereich an.
  • Für klassisches Compute bestätigen Sie, dass Sie die Ausführungsberechtigung CAN ATTACH TO für den Cluster haben oder CAN RESTART, falls der Cluster nicht ausgeführt wird.

Refresh-Token ist ungültig

Wenn databricks ssh connect mit error getting token, invalid_grant, und Refresh token is invalidfehlschlägt, hat der Autorisierungsserver das gespeicherte OAuth-Aktualisierungstoken der CLI abgelehnt. Melden Sie sich erneut an, um eine neue Sitzung zu erhalten:

  1. Identifizieren Sie das Konfigurationsprofil des Arbeitsbereichs, mit dem Sie sich verbinden möchten:

    databricks auth profiles --skip-validate
    
  2. Melden Sie sich erneut mit diesem Profil an. Ersetzen Sie <workspace-url> durch die URL des Arbeitsbereichs, ohne den /oidc/v1/token Pfad und <profile-name> durch den passenden Profilnamen:

    databricks auth login --host <workspace-url> --profile <profile-name>
    

    Schließen Sie den Anmeldeablauf in Ihrem Browser ab.

  3. Versuchen Sie die Verbindung erneut mit demselben Profil:

    databricks ssh connect --ide vscode --profile <profile-name>
    

    Verwenden Sie --ide cursor für den Cursor, oder lassen Sie --ide für eine Terminalsitzung weg.

Wenn der Fehler weiterhin auftritt, überprüfe, ob der fehlgeschlagene Befehl auf denselben Arbeitsbereich und dasselbe Profil abzielt, bei dem du dich gerade angemeldet hast. Weitere Informationen finden Sie unter OAuth U2M-Authentifizierung (User-to-Machine).

Python-Code oder Notebooks schlagen in der SSH-Sitzung fehl

Dateien verschwinden oder die Umgebung wird nach dem Cluster-Neustart zurückgesetzt

  • Dateien in /Workspace, /Volumes und /dbfs-Mounts bleiben nach Clusterneustarts bestehen. Dateien in /home, /rootund andere lokale Pfade sind kurzlebig und gehen beim Neustart verloren.
  • Verwenden Sie die Clusterbibliotheksverwaltung für dauerhafte Abhängigkeiten. Automatisieren Sie bei Bedarf neuinstallationen mithilfe von Init-Skripts. Weitere Informationen finden Sie unter Was sind Initskripts?.

SSH-Setup schlägt bei Windows (WSL) fehl.

Führen Sie databricks ssh setup direkt auf Windows aus, nicht innerhalb von WSL. Die Windows Visual Studio Code Instanz kann keine SSH-Konfigurationen finden, die auf der WSL-Seite erstellt wurden.

Häufig gestellte Fragen

Erfordert serverloses Computing eine SSH-Einrichtung?

No. Nach der Installation und Authentifizierung der Databricks-CLI verwenden Sie databricks ssh connect für serverloses Computing. Der Befehl databricks ssh setup konfiguriert wiederverwendbare SSH-Host-Einträge für klassische dedizierte Compute-Ressourcen.

Benötigt der SSH-Tunnel von Databricks Port 22?

No. Der SSH-Tunnel transportiert den Datenverkehr über HTTPS zu Ihrer Arbeitsbereichsdomäne und benötigt WebSocket-Unterstützung. Dein Netzwerk, VPN, deine Firewall und dein Proxy müssen diesen Datenverkehr zulassen. Siehe SSH-Verbindung schlägt fehl oder läuft ab.

Wie unterscheidet sich der SSH-Tunnel von Databricks Connect?

Mit Databricks Connect können Sie Code mithilfe von Spark-APIs schreiben und remote auf Databricks ausführen, anstatt in der lokalen Spark-Sitzung. Die Databricks-Visual Studio Code-Erweiterung verwendet Databricks Connect, um integriertes Debuggen von Benutzercode auf Databricks bereitzustellen.

Der SSH-Tunnel ermöglicht es Ihnen, aus Ihrer IDE auf den Arbeitsbereich zuzugreifen und Ihre gesamte Entwicklungsumgebung auf die Rechenressourcen zu verlagern. Python, der Kernel und die Codeausführung laufen auf Azure Databricks mit Zugriff auf die Rechenressourcen.

Wie wird mein Code und meine Daten gesichert?

SSH-Verkehr ist End-to-End-verschlüsselt, und der Code läuft auf dem Azure Databricks Compute, mit dem du dich verbindest. Die Authentifizierung verwendet die Databricks-CLI und Ihr konfiguriertes Arbeitsbereichsprofil. Siehe Welche Authentifizierungsmethoden werden unterstützt?.

Welche IDEs werden unterstützt?

Visual Studio Code und Cursor werden offiziell unterstützt. Jede IDE mit SSH-Funktionen ist kompatibel, aber nur VS Code und Cursor werden getestet.

Sind alle Databricks-Notizbuchfeatures über die IDE verfügbar?

Einige Features, z. B. display(), dbutils, und %sql sind mit Einschränkungen oder manuellem Setup verfügbar. Siehe Notebook-Verhalten in SSH-Sitzungen.

Wird mein Cluster automatisch gestartet, wenn ich eine Verbindung mit dem SSH-Tunnel herstellt?

Ja, aber wenn das Starten des Clusters länger dauert als das Verbindungstimeout, schlägt der Verbindungsversuch fehl. Um dies zu verhindern, erhöhen Sie den Wert von Remote.SSH: Connect Timeout aus der Befehlspalette (oder remote.SSH.connectTimeout in settings.json), um die Wahrscheinlichkeit von Timeoutfehlern weiter zu verringern.

Wie kann ich feststellen, ob mein Cluster läuft?

Navigieren Sie in der Benutzeroberfläche des Databricks-Arbeitsbereichs zu Compute , und überprüfen Sie den Status des Clusters. Der Cluster muss "Running " anzeigen, damit die SSH-Verbindung funktioniert.

Wie kann ich meine SSH/IDE-Sitzung trennen?

Sie können eine Sitzung trennen, indem Sie das IDE-Fenster schließen, indem Sie die Option " Trennen " in Ihrer IDE verwenden, ihr SSH-Terminal schließen oder den exit Befehl im Terminal ausführen.

Wie kann ich den Cluster beenden und Gebühren vermeiden, wenn ich nicht arbeite?

Zum sofortigen Beenden des Clusters beenden Sie ihn über die Arbeitsbereichsoberfläche. Navigieren Sie in der Benutzeroberfläche des Databricks-Arbeitsbereichs zu Compute , suchen Sie Ihren Cluster, und klicken Sie auf "Beenden " oder "Beenden".

Legen Sie eine kurze Richtlinie für die automatische Beendigung ihres Clusters über die Arbeitsbereichsbenutzeroberfläche fest. Nachdem Sie die Verbindung getrennt haben, wartet der SSH-Server auf den shutdown-delay-Zeitraum (Standardwert: 10 Minuten); daraufhin wird das Leerlauf-Timeout des Clusters angewendet. Wenn Sie --keep-detached-processes verwenden, endet der Cluster nicht automatisch, während getrennte Prozesse laufen. Das gilt auch für Verbindungen ohne Flag, die einen Tunnel wiederverwenden, der mit diesem Flag gestartet wurde. Siehe Verbindungen zu einem bestehenden Tunnel.

Wie sollte ich dauerhafte Abhängigkeiten behandeln?

Abhängigkeiten, die während einer Sitzung installiert wurden, gehen nach dem Neustart des Clusters verloren. Verwenden Sie beständigen Speicher (/Workspace/Users/<your-username>) für Anforderungen und Setupskripts. Verwenden Sie Clusterbibliotheken oder Initskripts für die Automatisierung.

Welche Authentifizierungsmethoden werden unterstützt?

Die Authentifizierung verwendet die Databricks CLI und die ~/.databrickscfg Profildatei. SSH-Schlüssel werden vom SSH-Tunnel verarbeitet.

Kann ich eine Verbindung mit externen Datenbanken oder Diensten aus dem Cluster herstellen?

Ja, solange Ihr Clusternetzwerk ausgehende Verbindungen zulässt und sie über die erforderlichen Bibliotheken verfügen.

Kann ich zusätzliche IDE-Erweiterungen verwenden?

Die meisten Erweiterungen funktionieren, wenn sie in Ihrer Remote-SSH-Sitzung installiert werden, je nach IDE und Cluster. Visual Studio Code installiert standardmäßig keine lokalen Erweiterungen auf Remotehosts. Sie können sie manuell installieren, indem Sie den Erweiterungsbereich öffnen und Ihre lokalen Erweiterungen auf dem Remotehost aktivieren. Sie können Visual Studio Code auch so konfigurieren, dass bestimmte Erweiterungen immer remote installiert werden. Siehe "Herstellen einer Verbindung mit Databricks".

Ja, Arbeitsbereichsadmins müssen jedoch URLs von Visual Studio Code- und Cursorerweiterungs-Marketplaces zulassen. Ihr lokaler Computer muss auch über die Möglichkeit verfügen, auf das Internet zuzugreifen.