linux怎么查看本机内存大小
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~