直接用--port参数启动最简单,适合调试;长期使用需修改jupyter_notebook_config.py配置端口、ip、密码等,同时注意防火墙、ssh隧道和云服务器安全组设置。

直接用 --port 参数启动最简单,不需要改配置文件;但若要长期固定、配合密码或远程访问,就得动 jupyter_notebook_config.py 了。
命令行临时指定端口:jupyter notebook --port 8889
这是最快验证方式,适合调试或单次使用:
- 如果端口被占用,Jupyter 会报错
Port 8889 is already in use,不会自动 fallback,必须手动换端口 - 加
--no-browser避免本地弹窗:jupyter notebook --port 8889 --no-browser - 输出的 URL 里带
token=xxx,这个 token 只在本次启动有效;如果设置了密码,token 就失效,只认密码 - 该方式不修改任何配置,重启后恢复默认 8888 端口
永久生效:改 jupyter_notebook_config.py 中的 c.NotebookApp.port
生成配置文件后才能改,否则该文件不存在:
- 首次运行
jupyter notebook --generate-config,配置文件路径一般是~/.jupyter/jupyter_notebook_config.py - 打开文件,取消注释并修改这一行:
c.NotebookApp.port = 8889 - 注意:如果同时启用了
jupyter-server(如 JupyterLab 3+),它读的是jupyter_server_config.py,不是这个文件 - 改完保存,下次直接
jupyter notebook就走新端口,无需加参数
端口选哪个?避开常见冲突和权限限制
Linux/macOS 下 1024 以下端口需要 root 权限,而 Jupyter 默认不推荐用 root 启动:
- 安全起见,优先选
8000–9999区间,比如8889、9999、8877 - 避免用
80、443(需 root)、22(SSH)、3306(MySQL)等系统常用端口 - 如果跑在 Docker 里,记得做端口映射:
-p 8889:8889,左边是宿主机端口,右边是容器内端口,二者可以不同 - 云服务器(如阿里云、AWS)还要检查安全组是否放行你选的端口
远程访问时端口设置的连带影响
光改端口不够,IP 和防火墙也得同步处理:
-
c.NotebookApp.ip = '0.0.0.0'(不是*,新版已弃用星号写法)才允许外部访问 - 若用 SSH 隧道(推荐),本地端口可任意设,比如
ssh -L 8888:localhost:8889 user@server,此时服务器上 Jupyter 只需监听127.0.0.1:8889,更安全 - 直接暴露公网 IP + 端口时,务必配密码(
jupyter notebook password)或反向代理(Nginx + HTTPS),否则等于裸奔
真正容易被忽略的是:改了端口却忘了同步更新 SSH 隧道命令里的 remote_port,或者 Docker run 时没把新端口映射出去——结果本地打不开,还以为配置没生效。











