Azure虚拟机Jupyter Notebook远程连接配置及SSH超时问题排查
解决Azure VM SSH连接超时及Jupyter Notebook共享问题
一、搞定SSH连接超时的排查步骤
- 检查Azure VM的网络安全组(NSG):确保入站规则里开了SSH(端口22),源地址要包含你的本地公网IP,嫌麻烦可以暂时设为Any测试(测试完记得改回限定IP,安全第一)
- 核对VM公网IP:确认VM的公网IP是静态的(动态IP重启后会变),和你ssh命令里用的IP完全一致
- 检查本地网络:本地防火墙、杀毒软件可能拦了SSH流量,临时关了试试;要是公司网络,得找IT开22端口的出站权限
- 修正密钥文件权限:Linux/macOS下密钥文件权限必须是600,执行
chmod 600 <mykey>,不然SSH不认 - 确认VM状态:登录Azure门户看VM是不是正常运行,有问题就重启VM再试
二、把Jupyter Notebook改成团队共享服务器的详细步骤
解决SSH问题后,按下面的步骤来:
1. 先给Jupyter设访问密码
登录VM后跑这条命令:jupyter notebook password,跟着提示设置密码,这步不能省,不然谁都能访问
2. 修改Jupyter配置文件
- 先生成配置文件(没有的话):
jupyter notebook --generate-config - 打开配置文件(路径一般是
~/.jupyter/jupyter_notebook_config.py),改这几个参数:- 允许外部访问:
c.NotebookApp.ip = '*' - 禁止自动开浏览器:
c.NotebookApp.open_browser = False - 设置监听端口(默认8888,也可以换别的):
c.NotebookApp.port = 8888 - 可选:指定共享工作目录(把团队的Notebook都放这):
c.NotebookApp.notebook_dir = '/path/to/your/shared/folder'
- 允许外部访问:
3. 给Azure NSG加Jupyter的入站规则
去Azure门户的VM网络安全组里加一条规则:
- 端口范围填你刚才设的8888(和Jupyter配置一致)
- 源地址设成团队成员的公网IP段,或者公司内网IP,别随便开成Any
- 协议选TCP
4. 启动Jupyter服务
- 先前台启动测试:
jupyter notebook,看有没有报错,没问题再搞后台运行 - 后台持久运行:用
nohup jupyter notebook &,日志会存在nohup.out里;或者用screen/tmux,这样SSH断开也不会停服务
5. 团队成员怎么访问
- 打开浏览器输入:
http://<VM公网IP>:8888 - 输入之前设的Jupyter密码,就能正常创建、编辑、读写Notebook了
更安全的备选方案:用SSH隧道访问
不想把8888端口直接暴露到公网的话,团队成员可以用SSH隧道:
- 本地执行:
ssh -i <mykey> -L 8888:localhost:8888 azureuser@<VM公网IP> - 然后本地浏览器输入
http://localhost:8888,输密码就能访问,全程走SSH加密
内容的提问来源于stack exchange,提问作者Carabes
相关产品推荐
相关产品推荐

