本文最后更新于 141 天前,其中的信息可能已经有所发展或是发生改变。
配置JupyterLab以允许外网访问需要特别注意安全问题,因为默认情况下它仅监听本地连接(localhost
)。为了安全地配置外网访问,你可以按照以下步骤操作:
1. 使用SSH隧道
最推荐的方法是通过SSH隧道来安全地访问远程服务器上的JupyterLab。这不需要修改防火墙或公开暴露你的服务器。
步骤:
- 在远程服务器上启动JupyterLab,并确保它绑定到所有网络接口(
0.0.0.0
),而不是仅仅localhost
。
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
- 在本地机器上使用SSH客户端设置隧道。例如,如果你的远程服务器IP是
your.server.ip
,你可以运行:
ssh -L 8888:localhost:8888 your_username@your.server.ip
- 然后,在本地浏览器中访问
http://localhost:8888
即可访问远程服务器上的JupyterLab。
2. 直接配置JupyterLab监听所有网络接口(不推荐直接开放)
如果你确实需要让JupyterLab直接对外网开放,请务必采取额外的安全措施,如使用HTTPS、设置密码保护或令牌验证等。
步骤:
- 修改Jupyter配置文件(如果没有配置文件,可以通过命令创建)
jupyter lab --generate-config
- 为Jupyter设置密码(如果尚未设置,使用如下命令;按照提示完成输入,并复制哈希值,下一步要用 ):
jupyter server password
- 编辑生成的配置文件(通常位于
~/.jupyter/jupyter_lab_config.py
),添加如下内容:
c.ServerApp.ip = '0.0.0.0' # 允许所有IP地址访问 c.ServerApp.open_browser = False # 不自动打开浏览器 c.ServerApp.port = 8888 # 设置端口号 c.ServerApp.allow_remote_access = True # 允许远程连接 c.ServerApp.password = u'sha1:...your hashed password here...' # 设置一个强密码
- 启动JupyterLab:
jupyter lab
3. 配置反向代理(Nginx, Apache等)
对于生产环境,推荐使用反向代理服务器(如Nginx或Apache)来处理外部请求,并通过SSL/TLS加密通信。这样不仅可以提高安全性,还可以更好地管理流量和提供更稳定的访问。
步骤概览:
- 安装并配置反向代理服务器。
- 将JupyterLab绑定到本地回环地址(
127.0.0.1
)。 - 配置反向代理将外部请求转发给JupyterLab。
- 配置SSL证书以启用HTTPS。
注意事项
无论选择哪种方法,都应该考虑以下几点:
- 安全性:始终确保使用强密码或令牌验证,避免在公网上暴露敏感信息。
- 防火墙规则:只允许必要的端口通过防火墙,减少攻击面。
- 定期更新:保持软件和依赖项的最新状态,修补已知漏洞。
- WSL中:访问地址是173开关的子网。
- 修改配置文件时:开头不要有空格。
根据你的具体需求和技术栈,选择最适合的方式进行配置。如果你对网络安全不太熟悉,建议优先考虑使用SSH隧道的方式。