我想知道我是否可以通过ssh远程使用ipython笔记本两次。 场景是:机器B是我想运行ipython笔记本的机器。但是,我只能先通过另一台服务器(机器A)访问机器B. 有关于远程使用ipython笔记本的教程,但没有一个提到我遇到过的情况。
提前致谢!
答案 0 :(得分:6)
假设您指的是ssh隧道,并且ipython笔记本正在机器B上的端口1234上进行服务:
如果机器A可以在任何端口上访问机器B,您可以设置机器A通过SSH转发远程端口:
ssh -L 9999:machineB.com:1234 -N machineA.com
这说
ssh到machineA.com而不执行远程命令(-N)并设置机器A将请求从客户端端口9999通过ssh隧道转发到机器B端口1234
但是,如果机器A只能通过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通过ssh隧道将来自客户端PC端口9999的请求转发到机器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