使用 Google AI Platform Notebook 实例,如何从本地计算机通过 ssh 连接到 jupyterlab 容器?

问题描述

我正在尝试将 VS Code 远程开发连接到使用 AI Platform(笔记本实例)在 Google Cloud 上运行的 JupyterLab 服务器。

如何添加不连接到虚拟机,而是连接到运行 JupyterLab 服务器的 docker 容器的 ssh 主机?

我希望能够从我本地笔记本电脑的 VS Code 中编辑该容器中的源

我知道 gcloud compute config-ssh,它编辑我的 ~/.ssh/config添加一个 Host 条目,VS Code 可以使用它连接到 VM。但我需要更进一步,进入在那里运行的 docker 容器的文件系统。

编辑:我的问题的前提是错误的,我已经学会了。 jupyterlab 不在容器中运行;它正常运行在VM上。因此,ssh 进入 VM 使我可以访问与 jupyter 可用的文件系统相同的文件系统。唯一的问题是将 jupyter 用户指定为 ssh

解决方法

Google 有关于 Using ssh to access JupyterLab 的文档。如果您在 VM 上运行并知道实例名称,则可以建立一个到 VM 的 SSH 隧道。来自文档:

按照以下步骤设置 SSH 端口转发,然后通过本地浏览器访问您的 JupyterLab 会话:

  1. 在 Cloud Shell 或安装了 Cloud SDK 的本地环境中键入以下命令。

    gcloud compute ssh --project PROJECT_ID \
        --zone ZONE \
        INSTANCE_NAME -- -L 8080:localhost:8080
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID
    • ZONE:您的实例所在的 Google Cloud 地区
    • INSTANCE_NAME:您的实例名称
  2. 如果您在本地计算机上运行该命令,请访问 https://localhost:8080 以访问 JupyterLab。

    如果使用 Cloud Shell,请通过端口 8080 上的 Web 预览访问 JupyterLab。可以在 Cloud Shell 任务栏的右上角找到 Web 预览按钮 Web 预览按钮。

如果您正在运行 Notebooks 实例,请转到 Notebooks page 并单击实例名称。您应该会看到一种通过 Cloud Shell 或 SSH 进行连接的方式。如果您正在运行 DataProc JupyterHub 集群,则需要在 kubernetes workloads 中查找您的 Pod。在 pod 页面上,您应该有一个菜单图标,允许您通过 KUBECTL 进行 SSH 访问。