3个版本
0.1.2 | 2023年10月3日 |
---|---|
0.1.1 | 2023年9月7日 |
0.1.0 | 2023年9月7日 |
#281 in 科学
130KB
417 代码行
远程Jupyter会话管理工具
rjy
Rust命令行工具,用于通过SSH隧道管理多个Jupyter笔记本和实验室实例。该命令行工具启动一个后台SSH进程,并通过~/.remote_jupyter_sessions
中的缓存来管理会话信息。
首先,在服务器上使用以下命令创建远程Jupyter会话,
$ jupyter lab --no-browser --port=8904
其中8904是一个随机的高端口号码。
然后,复制它提供的链接,并使用rjy new <链接>
以及你的远程服务器主机名来将此会话注册到你的本地计算机上,
$ rjy new http://localhost:8904/lab?token=b1fc6[...]b7a40 remote
Created new session ponderosa:8906.
你也可以使用IP地址,但我强烈建议如果你经常通过SSH与服务器交互,请将它们添加到你的~/.ssh/config
文件中(例如,参见这个页面),并通过主机名来引用它们。你还应该使用ssh-add
,这样你就不必每次都输入密码。这些可能看起来像是令人沮丧的额外步骤,但这两个提示将极大地简化与远程服务器的工作!
然后,我们可以看到这个Jupyter会话是“已注册”的,SSH隧道是通过rjy list
来建立的。
$ rjy list
Key (host:port) | Process ID | Status | Link
-----------------+------------+-----------+-----------------------------------------------
ponderosa:8906 | 68190 | connected | http://localhost:8906/lab?token=5e2f[...]8467
sesame:8906 | 67087 | connected | http://127.0.0.1:8906/lab?token=3aa1[...]bee1
大多数好的终端都允许你直接点击此链接(例如,在Mac的iTerm2中,如果你按住⌘
并将鼠标悬停在链接上,它将变为可点击的)。
我们可以使用rjy dc <密钥>
来断开会话,其中密钥是列表输出中的那个。如果没有指定密钥,则断开所有会话。
$ rjy dc remote:8904
Disconnected 'sesame:8906' (Process ID=67087).
现在我们可以看到它已断开连接
$ rjy list
Key (host:port) | Process ID | Status | Link
-----------------+------------+--------------+-----------------------------------------------
ponderosa:8906 | 68190 | connected | http://localhost:8906/lab?token=5e2f[...]8467
sesame:8906 | | disconnected | http://127.0.0.1:8906/lab?token=3aa1[...]bee1
我们可以使用rjy rc
重新连接。如果没有密钥,则重新连接所有已注册的会话。如果有密钥,则只连接那个会话。
$ rjy rc remote:8904
Reconnected session sesame:8906.
现在如果我们检查,
$ rjy list
Key (host:port) | Process ID | Status | Link
-----------------+------------+-----------+----------------------------------------------------------------------------------
sesame:8906 | 69233 | connected | http://127.0.0.1:8906/lab?token=3aa1[...]bee1
ponderosa:8906 | 68883 | connected | http://localhost:8906/lab?token=5e2f[...]8467
它已按预期重新连接。最后,要从一个注册的缓存中删除会话(保存在~/.remote_jupyter_sessions
中),请使用rjy drop <密钥>
$ rjy drop ponderosa:8906
Disconnected 'ponderosa:8906' (Process ID=68883).
您还可以通过以下命令断开所有连接:rjy drop --all
。有关更多信息,请参阅内置指令:rjy --help
。
安全
此功能将Jupyter创建的令牌存储在~/.remote_jupyter_sessions
中,并设置权限,仅允许所有者具有读写权限。这和将认证令牌保存在shell历史记录中一样安全,但仍然需要谨慎处理。不要在不信任的系统上使用。
安装
$ cargo install remote_jupyter
依赖项
约10–22MB
约293K SLoC