通过端口转发登录服务器的好处之一是便于使用Jupyter Notebook。该链接提供了一个很好的说明。在这里,我想做一些总结和扩展,以供大家参考。
情况1.从名为Host-A的本地计算机(例如您自己的笔记本电脑)登录到名为Host-B的远程工作计算机。
ssh user@Host-B -L port_A:localhost:port_B
jupyter notebook --NotebookApp.token='' --no-browser --port=port_B
然后,您可以打开浏览器并输入:http:// localhost:port_A /在Host-B上进行工作,但在Host-A中看到它。
情况2.从名为Host-A的本地计算机(例如您自己的笔记本电脑)登录到名为Host-B的远程登录计算机,然后从那里登录到名为Host-C的远程工作计算机。对于大学中的大多数分析服务器来说通常是这种情况,可以通过使用两个ssh -L
与相连的服务器来实现-t
。
ssh -L port_A:localhost:port_B user@Host-B -t ssh -L port_B:localhost:port_C user@Host-C
jupyter notebook --NotebookApp.token='' --no-browser --port=port_C
然后,您可以打开浏览器并输入:http:// localhost:port_A /在Host-C上进行工作,但在Host-A中可以看到它。
情况3.从名为Host-A的本地计算机(例如您自己的笔记本电脑)登录到名为Host-B的远程登录计算机,然后从那里登录到名为Host-C的远程工作计算机,最后登录到远程工作计算机Host-B。 D.通常不是这种情况,但可能会在某些时候发生。它是情况2的扩展,相同的逻辑可以应用于更多机器。
ssh -L port_A:localhost:port_B user@Host-B -t ssh -L port_B:localhost:port_C user@Host-C -t ssh -L port_C:localhost:port_D user@Host-D
jupyter notebook --NotebookApp.token='' --no-browser --port=port_D
然后,您可以打开浏览器并输入:http:// localhost:port_A /在Host-D上进行工作,但在Host-A中可以看到它。
请注意,port_A,port_B,port_C,port_D可以是随机数,但此处列出的通用端口号除外。在情况1中,port_A和port_B可以相同,以简化过程。