跳转到主要内容

在Jupyter下运行sshd

项目描述

jupyter-sshd-proxy

Latest PyPI version

启用远程Jupyter服务器上的ssh访问。

主要用于与远程JupyterHubs一起使用,因此用户可以通过 ssh 访问它们。启用了一切通常用 ssh 做的事情 - 复制文件、运行交互式命令、使用专有的VSCode 远程开发 功能等!

用法

对于本文档,我们将假设您在一个容器化的JupyterHub环境中运行(例如kubernetes或docker)。 jupyter-sshd-proxy 本身不需要容器化 - 这只是为了使说明更容易。

服务器先决条件

以下包必须存在于容器环境中

  • openssh。您可以从 conda-forge 或从 apt 安装它,具体取决于您的需求。
  • jupyter-sshd-proxy 本身必须在容器中预先安装 - 您 不能 在启动容器后使用 !pip 动态安装它。

可以使用 quay.io/yuvipanda/pangeo-jupyter-sshd-proxy:latest 的Docker镜像进行测试。它基于pangeo-notebook Docker镜像,并已预先安装所需的先决条件。您可以在本存储库中找到它的源 Dockerfile

客户端先决条件

必须在客户端机器上安装 websocat。在Mac OS上,使用 brew install websocat,对于所有其他操作系统,都提供了预构建的二进制文件

启动您的服务器

jupyter-sshd-proxy 仅在您启动JupyterHub服务器后才能工作。所以,启动您的服务器!

创建JupyterHub令牌

我们需要创建一个JupyterHub令牌进行身份验证。

  1. 转到JupyterHub控制面板。您可以通过在JupyterLab中选择 文件 -> Hub控制面板 或直接访问 https://<your-hub-url>/hub/home 来访问它。

  2. 在上面的工具栏中,选择 令牌

  3. 创建一个新的令牌,并妥善保管。 把它当作你对JupyterHub实例的密码来对待!建议您为此设置一个过期日期。

配置您的本地 ~/.ssh/config

我们将设置SSH配置文件,以告诉ssh如何连接到我们的JupyterHub。将以下条目添加到您的~/.ssh/config文件末尾(如果不存在,请创建它)。

Host <YOUR-JUPYTERHUB-DOMAIN>
    User <YOUR-JUPYTERHUB-CONTAINER-USER-NAME>
    ProxyCommand websocat --binary -H='Authorization: token <YOUR-JUPYTERHUB-TOKEN>' asyncstdio: wss://%h/user/<YOUR-JUPYTERHUB-USERNAME>/sshd/

替换

  • <YOUR-JUPYTERHUB-DOMAIN> 用您的hub域名(例如,hub.openveda.cloud
  • <YOUR-JUPYTERHUB-TOKEN> 用您之前生成的令牌
  • <YOUR-JUPYTERHUB-USERNAME> 用您的jupyterhub用户名
  • <YOUR-JUPYTERHUB-CONTAINER-USERNAME> 是在您的JupyterHub容器内创建的Unix用户名。这通常是jovyan。您可以在JupyterHub的终端中运行whoamiid来验证这一点。

以下是一个示例

Host hub.openveda.cloud
    User jovyan
    ProxyCommand websocat --binary -H='Authorization: token a56ff59c93f64fb587f46b06af9422ee' asyncstdio: wss://%h/user/yuvipanda/sshd/

我们快要完成了!

在您的JupyterHub服务器上设置ssh密钥

仍然有两个级别的认证 - 您的JupyterHub令牌以及一些ssh密钥。您需要在启动JupyterHub服务器后,将一些ssh公钥放入~/.ssh/authorized_keys,并在ssh客户端机器上提供私钥。

最简单的方法是依赖您的GitHub公钥!

  1. 启动您的JupyterHub服务器后,在JupyterLab中打开一个终端

  2. 运行以下命令

    mkdir -p ~/.ssh
    wget https://github.com/<YOUR-GITHUB-USERNAME>.keys -O ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    

    <YOUR-GITHUB-USERNAME> 替换为您的github用户名。

有了这些,我们就准备就绪了!

通过ssh进入您的JupyterHub!

在所有这些设置完成后,您现在可以通过ssh进入!试试

ssh <YOUR-JUPYTERHUB-DOMAIN>

它应该只需工作!您还可以使用Visual Studio代码的Remote SSH功能,使用sftp复制文件(虽然会慢一些),创建隧道等!

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

jupyter_sshd_proxy-0.2.0.tar.gz (5.7 kB 查看散列)

上传时间:

构建分发

jupyter_sshd_proxy-0.2.0-py3-none-any.whl (5.3 kB 查看散列)

上传时间: Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面