如何远程访问(从外网)到在Ubuntu的服务器上的docker上运行的jupyter笔记本

任何人都可以帮助回答我的问题如下:

我有一个Ubuntu的服务器后面的路由器,Ubuntu的服务器IP静态分配为192.168.1.100 。 Docker在ubuntu服务器上运行。

我已经设置了路由的端口转发,以便我可以远程SSH访问到Ubuntu服务器。 我已经从路由器后面的另一台计算机进行了testing,我可以通过192.168.1.100:8888成功访问Docker上的jupyter笔记本。

但是,当我尝试从路由器外部的计算机访问时,我无法访问jupyter笔记本。 请问我可以使用什么知识产权?如何从外部访问?

谢谢。 在这里输入图像说明

最简单和最安全的方法可能是创build一个SSH隧道 – 这样你就不必将Jupyter服务器暴露给公共互联网。

在Putty中的Connection – > SSH – > Tunnels选项卡下,input以下内容:

 source-port: 8888 destination-port: 192.168.1.100:8888 

点击添加,然后像平常一样开始会话。 现在,您的客户端机器的端口8888将被隧道传送到服务器的端口8888.您可以通过在服务器上运行nc -l -p 8888并在客户端的浏览器中inputhttp://localhost:8888来检查是否工作正常。 该请求应该显示在服务器上。

为了使它与Jupyter而不是netcat一起工作,你可能需要设置一些选项 ,因为Jupyter对于非本地连接非常挑剔:

 # Allow connections to come from anywhere c.NotebookApp.allow_origin = '*' # Allow connections to refer to the server however they want to c.NotebookApp.ip = '*' 

您还应该确保您在Jupyter中启用了某种访问控制,否则任何有权访问您的客户端端口8888的用户都可以访问Jupyter。