Azure深度学习虚拟机(DLVM)无法访问Jupyter Notebook问题求助
解决Azure深度学习虚拟机(DLVM)上Jupyter/Jupyter Hub无法访问的问题
我自己折腾过Azure DLVM的Jupyter服务,碰到过类似的坑,给你一步步梳理解决办法:
先搞定Jupyter Notebook的目录错误
你遇到的No such notebook dir: ''/dsvm/Notebooks''是路径多了一对多余的引号导致的。直接用下面两种方式启动都能解决:
- 直接指定正确的无引号目录启动:
jupyter notebook --notebook-dir=/dsvm/Notebooks - 先切换到目标目录再启动(更简单):
cd /dsvm/Notebooks jupyter notebook
让Jupyter Notebook能被外部访问
看到The Jupyter Notebook is running at:https://[all ip addresses on your system]:9999/但Chrome打不开,核心问题是Jupyter默认只绑定本地回环地址(127.0.0.1),外部设备访问不了。启动时加上--ip=0.0.0.0参数,让它监听VM的所有网卡:
jupyter notebook --notebook-dir=/dsvm/Notebooks --ip=0.0.0.0 --port=9999
另外别忘了去Azure门户确认VM的**网络安全组(NSG)**已经添加了TCP 9999端口的入站规则,允许外部访问。
排查Jupyter Hub(8000端口)无法访问的问题
既然systemctl status jupyterhub显示服务在跑,NSG也开了端口,那从这几个方向查:
- 检查Mac本地防火墙:Mac自带的防火墙可能阻止了对8000端口的访问,你可以临时关闭试试,或者给Chrome添加允许访问该端口的规则。
- 确认Jupyter Hub的监听地址:在VM上执行
netstat -tulpn | grep 8000,看看是不是绑定了127.0.0.1:8000(只能本地访问)。如果是,就修改配置:- 编辑配置文件:
sudo nano /etc/jupyterhub/jupyterhub_config.py - 找到
c.JupyterHub.ip这一行,改成c.JupyterHub.ip = '0.0.0.0'(如果没这行就自己加) - 重启服务:
sudo systemctl restart jupyterhub
- 编辑配置文件:
- 确认用对了IP:你访问的必须是VM的公网IP,内网IP只能在Azure虚拟网络里用,外部连不上。
推荐用DLVM自带的快捷启动方式
Azure DLVM其实预配置了一键启动脚本,直接跑这个命令,不用手动输一堆参数,还能避免配置错误:
start-notebook.sh
执行后会输出完整的访问链接,复制到Chrome就能直接用。
另外,如果你想更安全(不用开放公网端口),可以用SSH端口转发:在Mac终端执行:
ssh -L 8888:localhost:9999 你的VM用户名@你的VM公网IP
然后在Mac上打开http://localhost:8888,就能直接访问VM上的Jupyter服务了,这种方式不用改任何防火墙规则,更稳妥。
内容的提问来源于stack exchange,提问作者Judy T Raj
相关产品推荐
相关产品推荐

