通过SSH隧道远程运行IPython Notebook

5
我想知道是否可以通过两次ssh远程使用ipython笔记本。情景是:机器B是我想运行ipython笔记本的机器。但是,我只能先通过另一台服务器(机器A)访问机器B。有一些关于远程使用ipython笔记本的教程,但是没有一个提到我遇到的情况。谢谢!

你的意思是运行一个IPython笔记本服务器吗? - MattDMo
那么 SSH 隧道呢? - Michał
1个回答

7
假设您指的是ssh隧道技术,并且ipython notebook在B机器上的1234端口提供服务:
如果A机器可以访问B机器上的任何端口,您可以通过SSH设置A机器将远程端口转发给您:
ssh -L 9999:machineB.com:1234 -N machineA.com

这段话的意思是:

在不执行远程命令(-N)的情况下,通过ssh连接到machineA.com,并设置机器A将来自客户端端口9999的请求通过ssh隧道转发到machineB的1234端口。

但如果只能通过ssh访问机器B,则需要创建两个隧道。一个从客户PC到machineA,另一个从machineA到machineB。为此,这两个隧道连接到machineA上的本地端口而不是远程端口:

ssh -L 9999:localhost:8888 machineA.com ssh -L 8888:localhost:1234 -N machineB.com

这段话的意思是:

ssh到machineA.com并设置机器A将来自我们客户端PC端口9999的请求通过ssh隧道转发到机器A端口8888。然后执行命令“ssh -L 8888:localhost:1234 -N machineB.com”。此命令在machineA端口8888和machineB端口1234之间建立第二个隧道(iPython正在侦听的位置)。

现在,在后台运行该命令的情况下,连接到本地PC端口9999。第一个ssh隧道将转发该请求到machineA,从那里连接到localhost:8888,第二个ssh隧道将随后将其转发到machineB,从那里连接到localhost:1234。

请注意,为了在单个命令中使其工作,machineA需要能够使用公钥/私钥身份验证自动连接到machineB。

这里有一篇解释ssh隧道的文章https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops


由于多个用户可以登录机器A,因此在该机器上设置公钥/私钥身份验证是否安全?谢谢! - Sean
只要您的密钥在~/.ssh/文件夹中的权限设置正确(详情请参见此处:http://superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder),那么多个用户使用不会有问题。但我不确定其他用户是否能够连接到中间隧道循环(端口8888)。 - Peter Gibson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接