远程连接服务器上搭建jupyter notebook

网友投稿 562 2022-08-23

远程连接服务器上搭建jupyter notebook

文章目录

​​1. 搭建环境​​​​2. 生成配置文件​​​​3. 设置登录密码​​​​4. 修改配置文件​​​​5. 运行​​​​问题​​​​附​​

​​关于端口映射​​

前段时间趁着阿里云搞活动白嫖了3年的ECS服务器,拿来玩儿玩儿Python

1. 搭建环境

系统为阿里云ECS服务器 Ubuntu 20.04 64位

在服务器中下载一个anconda,然后Anconada中创建一个虚拟环境,单独测试:

conda create -n notebook_py37 python=3.7

安装jupyter notebook:

conda install

2. 生成配置文件

jupyter notebook --generate-config

生成的配置文件为~/.jupyter/jupyter_notebook_config.py

3. 设置登录密码

生成密码有两种方式:

自动生成jupyter notebook 5.0 版本开始可以使用​​​jupyter notebook password​​来自动生成密码

jupyter notebook passwordEnter password: 密码Verify password: 密码[NotebookPasswordApp]

生成的加密密码存储在 jupyter_notebook_config.json中

手动生成也可以手动生成密码,打开 ipython 执行下面内容:

In [1]: from notebook.auth import passwdIn [2]: passwd()Enter password: 密码Verify password: 密码Out[2]: 'sha1:....'

​​sha1:....​​ 即生成的加密密码,后续需要添加到jupyter_notebook_config.py 中去

注意:这里我们输入的密码和生成的加密密码都要记住,密码负责登录jupyter notebook,加密密码需要添加到jupyter_notebook_config.py

4. 修改配置文件

在 jupyter_notebook_config.py 中找到下面的行,取消注释并修改。(也可以直接把下面的复制到文件末尾进行修改)

c.NotebookApp.ip='*' # 或者 c.NotebookApp.ip='0.0.0.0'c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'c.NotebookApp.open_browser = Falsec.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口

5. 运行

以上设置完以后就可以在服务器上启动 jupyter notebook

几种运行方式

jupyter notebook # 五参数启动jupyter notebook --no-browser --port=8005 # 也可以指定端口等信息jupyter notebook --allow-root # root 用户nohup jupyter notebook& # 在服务器端一直运行,即使terminal断开

若想关闭ssh连接时不关闭进程,有多种方法:使用nohub:​​nohup jupyter notebook&​​ 使用htop 查看nohub进行,使用 kill -9 PID关闭进程。使用screen:启动screen -> 启动你的程序 这时候关闭ssh,会发现程序进程还在

(还要注意的是不能在隐藏目录 (以 . 开头的目录)下启动 jupyter notebook, 否则无法正常访问文件。)

参考:IP:指定的端口, 输入密码就可以访问了。

对于阿里云:

查看阿里云服务器公网IP:​​阿里云​​

接下来需要配置一下端口,否则阿里云服务器可能会拒绝访问

配置:安全组 -> 配置规则 -> 手动添加规则,配置端口(我的jupyter notebook端口选的8888,所以这里配置端口范围为8880~8890)

然后浏览器输入:

serverIP:8888

输入密码,即可进入jupyter

如果本地有shell,且不想每次都输入服务器IP,也可以使用端口映射,使用localhost登录:

ssh -L 1234:127.0.0.1:8888 username@hostname # 或者 ssh username@hostname -L 1234:127.0.0.1:8888

该方法不需要在阿里云服务器配置。

在浏览器输入​​在服务器终端输入:sudo ufw status查看防火墙状态(可能是因为开启了防火墙),若显示:Status: inactive则表明防火墙关闭,否则输入命令:sudo ufw disable关闭防火墙(这样我们才可以简单的通过浏览器访问Jupyter Notebook服务器,否则需要设置ssh隧道,较为麻烦,不过如果为了安全也可以设置ssh隧道) 如果还是无响应,可以选择打开本地的terminal,使用端口映射将远程服务器端口映射到本地端口,可解决。

关于端口映射

关于端口映射:ssh可以很方便的实现从本地端口到远程端口的映射,通常情况下使用 -L 或者 -R参数,例如:​​ssh xxx@xxx.xxx -L 8023:RemoteIP:23​​ -L 将本地的某个端口映射到远程主机的某个端口上,上例中就是将本地的8023端口映射到远程主机的23号端口上,这样就可以直接telnet本机的8023端口来访问远程主机了。但是需要说明的是RemoteIP可以是127.0.0.1,此时127.0.0.1指的是远程计算机,而非本机地址。-R 则正好与-L相反,它将远程主机的某个端口映射到本地的某个端口上,例如:​​ssh xxx@xxx.xxx -R 8023:LocalIP:23​​ 上例将远程主机的8023端口映射到本机的23号端口,这样远程主机就可以telnet 自己的8023端口来访问本地主机了。

端口映射:​​彻底搞懂SSH端口转发命令​​

ssh本地端口转发命令的「-L」旗标后可以填写四个参数,完整格式为:

ssh -L [收听接口:]收听端口:目标主机:目标端口 username@hostname

命令中方括号内的部分,即第一个参数可以不写;它的默认值一般是0.0.0.0(OpenSSH客户端配置文件「ssh_config」中「GatewayPorts」选项的值一般为「yes」),意味着SSH隧道会收听所有接口,接受来自任何地址的应用访问请求并进行转发。而如果在此处填写了绑定地址(bind address),SSH隧道连接就会只处理来自绑定地址的应用请求,而对其他地址发来的请求置之不理;如同在(真实世界的)隧道入口设立哨卡,只对白名单牌号的车辆放行。例如在此处填写127.0.0.1,即可实现只有来自主机A本机的应用请求才被SSH隧道转发的效果。

需留意,收听接口是站在主机A的视角上去规定允许与A连接的设备,解决「能够使用SSH端口转发的应用请求从何处来」的问题,类似防火墙的入站;收听端口则依旧是主机A上的那个端口X,不能够跑到别的主机上去。

类似地,远程端口转发和动态端口转发也具有「收听接口」这一可不指明的参数下文不再赘述。从安全或控制流量的角度,规定绑定地址是一项实用的功能。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:十张GIFs让你弄懂递归等概念(什么是递归定义)
下一篇:基于模糊控制算法的快速反射镜 系统扰动抑制
相关文章

 发表评论

暂时没有评论,来抢沙发吧~