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