我试过以下:https://github.com/ipython/ipython/wiki/Cookbook:-Connecting-to-a-remote-kernel-via-ssh。自动和手动解决方案都提供以下内容:
"错误:内核没有回复"
使用相同的解决方案,我可以从我的Linux机器连接到在Linux服务器上运行的IPython内核。有什么解决方案可以让它与Linux一起使用到Windows?
答案 0 :(得分:1)
我再一次在https://github.com/ipython/ipython/wiki/Cookbook%3a-Connecting-to-a-remote-kernel-via-ssh上尝试了手动方式并且有效。详细说明:
windows-machine$ ipython kernel -f kernel-1234.json
linux-machine$ scp windows-machine:path/to/kernel-1234.json .
linux-machine$ cat kernel-1234.json
{
"stdin_port": 55534,
"ip": "127.0.0.1",
"control_port": 58391,
"hb_port": 60540,
"signature_scheme": "hmac-sha256",
"key": "fa461cf7-f078-4c22-909f-cfa7d2a30596",
"shell_port": 60159,
"transport": "tcp",
"iopub_port": 59207
}
linux-machine$ ssh -f -N -L 55534:127.0.0.1:55534
linux-machine$ ssh -f -N -L 58391:127.0.0.1:58391
linux-machine$ ssh -f -N -L 60540:127.0.0.1:60540
linux-machine$ ssh -f -N -L 60159:127.0.0.1:60159
linux-machine$ ssh -f -N -L 59207:127.0.0.1:59207
linux-machine$ ipython console --existing kernel-1234.json
答案 1 :(得分:1)
您无需SSH连接到远程ipython
内核,无论它是ipython
还是Windows
或Linux
上运行的Mac
内核}。您需要的是让远程内核的Ip对您尝试连接的终端可见。以下是步骤:
找出server
的ip地址(运行ipython内核的机器,即你想要计算的地方)和client
(来自的机器)您尝试连接到的地方):
1.1。如果您在Windows
,请打开命令提示符并执行ipconfig
以查找IP地址。如果Windows
服务器具有直接的Internet连接/局域网连接,您应该会看到几个ips,例如192.168.57.1
和10.2.3.64
以及127.0.0.1
。
1.2。如果您在linux
,请打开终端并输入ifconfig
或ip addr show
。您应该再次看到一些ips,例如192.168.57.1
和10.2.3.64
以及127.0.0.1
。
1.3。通过server
可以看到至少一个client
个IP地址,并使用命令server
从client
ping ping
。 ping
可以在Windows或Linux终端上运行。如果您将Windows / Linux作为VM运行或位于防火墙后面,则很可能从另一端看不到您的客户端或服务器。您不必ping IP地址127.0.0.1
。这是一个环回地址,只能从你获得此IP地址的同一台机器上看到。例如,如果从Windows计算机ping 127.0.0.1
,它将ping同一台Windows计算机。如果您的client
和server
实例在同一台计算机上运行,那么可以使用此地址。但是,如果您的客户端或服务器在VM或其他计算机上运行,则127.0.0.1
将无效。
启动远程内核:
2.1。一旦弄清楚客户端上的服务器上的哪个IP地址可见,请使用ipython kernel
在计算机上启动内核。 ipython内核将启动并显示“要将另一个客户端连接到此内核,请使用:
- 现有kernel-1234.json
2.2。通过导入(https://stackoverflow.com/a/35094772/4752883)找到kernel-1234.json
上的server
文件
In [1]: from jupyter_client import find_connection_file
In [2]: find_connection_file()
Out[2]: 'C:\\Users\\me\\AppData\\Roaming\\jupyter\\runtime\\kernel-1234.json'
这适用于Linux
或Windows
。
启动远程客户端:
3.1。找到文件后,使用linux中的scp
或pscp
或winscp
中的kernel-1234.json
3.2。确保您与kernel-1234.json
文件位于同一目录中。
3.3。使用vim或您喜欢的文本编辑器打开"ip": "127.0.0.1"
文件。你会注意到一行127.0.0.1
。从您在步骤ip
中找到的客户端可见的服务器更改1.3
json
地址并保存jupyter console –existing=kernel-1234.json
文件。
3.4。使用kernel-1234.json
启动远程内核,同时位于Windows
所在的同一个驱动器中。
如果您已按照上述步骤操作,那么无论ipython内核是否在Linux
/ Mac
/ Accept
上运行,您现在都应该能够连接到远程ipython内核。