Spyder——通过代理连接到远程内核

dkv*_*dkv 5 ssh ipython remote-server spyder jupyter

我正在尝试连接到 Spyder 中的远程内核,但是无法直接访问运行它的计算机。相反,要连接到它,我必须通过堡垒主机/跳转箱,如下所示: ssh -i ~/.ssh/id_rsa -J me@jumpbox me@remote它将我直接登录到remote,自动通过 发送连接jumpbox

我已经在 上python -m spyder-kernels.console 运行remote,我想在其中进行计算,但无法直接连接到它,因为它只能从 访问jumpbox。我尝试使用一个条目设置我的 ssh 配置,ProxyJump该条目可用于在命令行中通过 ssh 登录计算机,但 Spyder 在设置远程内核连接时似乎忽略了配置文件,

有没有办法连接到这个远程内核?看来有一种方法可以用 IPython 来做到这一点,我知道我可以用 Jupyter Notebook 来做到这一点,但我想知道我是否可以在 Spyder 中做到这一点。

(相关:通过ssh隧道将spyder连接到远程内核

Lu *_*Kas 0

我不知道你是否还在寻找这个问题的答案,但对于未来到达这里的人,以及我自己的参考:

是的你可以。您必须创建一个 ssh 隧道并通过 localhost 将 Spyder 连接到内核。对于你来说,这看起来像这样:

ssh -L 3336:me@jumpbox:22 me@remote
Run Code Online (Sandbox Code Playgroud)

22用于远程 ssh 服务器正在侦听的端口。这通常是 22,除非主持人更改了它。3336是本地主机上要连接的端口,您可以选择 1024 以上的任何数字(这是特权端口)。


然后按照Spyder 文档中的说明进行操作,即启动蜘蛛内核(在您想要的环境中) remote

python -m spyder_kernels.console
Run Code Online (Sandbox Code Playgroud)

将连接文件 ( kernel-pid.json) 文件复制到本地计算机:

scp -oProxyJump=me@jumpbox remote:/path/to/json-file/kernel-pid.json ~/Desktop
Run Code Online (Sandbox Code Playgroud)

/path/to/json-file您必须更改连接文件的路径(您可以通过在与spyder-kernel运行相同的环境中运行来找到该文件),jupyter --runtime-dir当然还有真实的文件名。将其复制到桌面文件夹,您可以将其更改为您想要的任何位置。remotekernel-pid.json~/Desktop


通过“连接到现有内核”将 Spyder 连接到内核,将其指向您刚刚复制的连接文件,选中“这是远程内核(通过 SSH)”框,然后输入localhostHostname3336端口(或您选择的任何端口)改为)。

应该可以做到这一点。


请注意,就像我的情况一样,您的jumpbox服务器可能会中断您启动 Spyder 内核的 ssh 连接,这将导致您的内核崩溃。所以你可能想使用

python -m spyder_kernels.console &
Run Code Online (Sandbox Code Playgroud)

让它在后台运行,或者在screen会话中启动它。但是,请注意,您无法通过 exit 关闭远程内核,并且它将继续运行(请参阅此处),因此您必须以不同的方式终止它。