You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu服务器部署Jupyter Notebook遇权限问题,求安全远程访问方案

我之前也卡在过这个问题上:想在Ubuntu服务器上用普通用户跑Jupyter Notebook做远程访问,SSH隧道搞不定(权限不够),又不敢把服务直接暴露到公网,用root跑虽然能成,但总觉得心里发慌——毕竟root权限太敏感了。下面是我亲测有效的几个解决办法:

方案1:给普通用户配置Jupyter,限制访问范围

首先在普通用户账号下生成Jupyter配置文件:

jupyter notebook --generate-config

然后打开生成的配置文件~/.jupyter/jupyter_notebook_config.py,修改这几个关键参数:

  • 让Jupyter监听服务器的本地回环地址(避免直接对外暴露):
    c.NotebookApp.ip = 'localhost'
    
  • 设置一个大于1024的端口(因为1024以下的端口需要root权限,普通用户用不了):
    c.NotebookApp.port = 8889  # 随便选个没被占用的端口就行
    
  • 禁止自动打开服务器端的浏览器:
    c.NotebookApp.open_browser = False
    
  • 设置登录密码(比默认的token更方便安全):
    在终端直接运行jupyter notebook password,按提示设置密码,配置文件会自动生成加密后的密码条目,不用手动改。

方案2:用SSH反向隧道绕开权限限制

如果之前正向SSH隧道因为权限问题没法用,试试反向隧道——这种方式不需要服务器端开放对外端口,全程通过SSH加密传输,安全又省心:

  1. 先在本地机器上运行这条命令(把your_user换成你服务器的普通用户名,server_ip换成服务器地址):
    ssh -R 8889:localhost:8889 your_user@server_ip
    
  2. 然后在服务器的普通用户终端里启动Jupyter:
    jupyter notebook --ip=localhost --port=8889
    
  3. 最后在本地浏览器打开http://localhost:8889,输入你之前设置的密码就能访问服务器上的Jupyter了。

为什么绝对不要用root跑Jupyter?

用root运行Jupyter的风险真的很高:如果你的Notebook里不小心执行了危险命令(比如rm -rf /),或者被恶意代码利用,直接就能拿到服务器的最高权限,搞不好整个服务器都要崩。普通用户运行的话,最多影响你自己的账号目录,安全得多。


内容的提问来源于stack exchange,提问作者An0n

火山引擎 最新活动