远程服务器运行 Jupyter Notebook 的本地访问方法
本文将详细介绍如何在远程服务器上运行 Jupyter Notebook,并通过本地机器访问和管理它。这种方法特别适合计算资源有限的本地环境,能够利用远程服务器的强大计算能力。
问题背景
当本地机器内存不足无法运行多个 Jupyter Notebook 时,可以通过远程服务器运行 Notebook,然后在本地浏览器中访问。这不仅能提升任务执行速度,还能充分利用服务器的计算资源。
基础配置方法
标准 SSH 端口转发方案
这是最常用且稳定的方法,适用于大多数情况:
在远程服务器上启动 Jupyter Notebook:
bashjupyter notebook --no-browser --port=8888
TIP
参数说明:
--no-browser
:不在服务器上打开浏览器--port
:指定端口号(可自定义)
在本地建立 SSH 隧道:
bashssh -N -L localhost:8888:localhost:8888 username@remote_server_ip
WARNING
如果本地端口已被占用,可以更改第一个端口号(如
8889:localhost:8888
)在本地浏览器中访问: 打开
http://localhost:8888
,输入 Notebook 显示的 token 即可访问。
详细操作步骤
以下是在不同操作系统上的具体操作:
# 第一步:连接到远程服务器
ssh username@remote_ip
# 第二步:在服务器上启动 Notebook
jupyter notebook --no-browser --port=8890
# 第三步:新开终端,建立 SSH 隧道
ssh -NfL localhost:8890:localhost:8890 username@remote_ip
# 第四步:本地浏览器访问
# http://localhost:8890
# 步骤与 macOS/Linux 相同
# 确保使用 Git Bash 或支持 SSH 的终端
高级配置选项
多 Notebook 同时运行
如果需要同时运行多个 Notebook,可以使用不同端口:
# 服务器端启动多个 Notebook
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0
jupyter notebook --no-browser --port=8889 --ip=0.0.0.0
# 本地建立多个隧道
ssh -NfL localhost:8888:localhost:8888 username@remote_ip
ssh -NfL localhost:8889:localhost:8889 username@remote_ip
使用 SSH VPN 替代多个隧道
对于需要运行大量 Notebook 的情况,可以使用 sshuttle
工具创建 SSH VPN:
# 安装 sshuttle
pip install sshuttle
# 创建 VPN 连接
sshuttle --dns -NHr username@remote_ip 0/0
# 然后可以直接通过服务器IP访问 Notebook
# http://remote_ip:8888
解决常见问题
权限问题
如果遇到权限错误,可以设置 Jupyter 环境变量:
export JUPYTER_CONFIG_DIR=~/.jupyter
export JUPYTER_DATA_DIR=~/.local/share/jupyter
export JUPYTER_RUNTIME_DIR=~/.local/share/jupyter/runtime
jupyter notebook --no-browser --port=8888
连接稳定性
使用 -Nf
参数使 SSH 隧道在后台运行:
ssh -NfL localhost:8888:localhost:8888 username@remote_ip
关闭连接
完成后正确关闭连接:
- 在 Notebook 界面选择 "Quit" 或使用
Ctrl+C
- 终止 SSH 隧道进程:bash
# 查找进程ID lsof -ti:8888 # 终止进程 kill -9 <进程ID>
安全考虑
WARNING
确保远程服务器的防火墙设置允许相关端口的通信,同时注意不要将 Notebook 暴露在公共网络上 without 密码保护。
建议为 Jupyter Notebook 设置密码:
jupyter notebook password
总结
通过 SSH 端口转发在远程服务器上运行 Jupyter Notebook 是一种高效利用计算资源的方案。关键步骤包括:在服务器上以无浏览器模式启动 Notebook、建立本地到服务器的 SSH 隧道、通过本地浏览器访问。这种方法适用于 macOS、Linux 和 Windows 系统,能够有效解决本地计算资源不足的问题。