文章目录

  • 1、连接远程服务器
  • 2、打开jupyter
  • 2.1 ssh端口映射
  • 2.2直接访问
  • 2.3 shell工具连接
  • 2.4 带用户名和密码使用
  • 3、断开连接
  • 4、便捷整个工作流程



常规是在本地笔记本电脑或是台式机上,但是要有大量数据时,需要在远程性能更强的服务器上运行;可能远程服务器有图形用户界面,也可能没有,大部分没有的。常规的操作是在本地电脑上用一部分小数据,使用jupyter notebook把代码写对,然后jupyter nbconvert --to script your_notebook.ipynb转换成.py文件,上传到服务器上来执行全部更大的数据。代码是可以运行,但不再能使用jupyter nobebook,无法再可视化运行结果。还有一种jupyter notebook的升级版jupyter lab,除了具有全部jupyter notebook的功能外,可以直接连接本地和远程服务器,进行文件上传和下载。在jupyter lab或jupyter notebook中是可以直接运行.py文件,或直接写代码来执行的。推荐使用jupyter lab,效果类似谷歌的colab .本文将写如何在远程服务器上使用jupyter。

1、连接远程服务器

使用securecrt ,xshell,mobaxterm(免费好用)等工具,或本地shell中用ssh来链接远程服务器(window系统要先下载git,在git的命令行窗口中使用ssh命令),或都直接用ssh(secure shell protocol)发种命令到远程服务器,来开启jupyter notebook,远程服务器是linux.
第一种ssh连接远程服务器,然后打开jupyter

ssh username:passwd@remote_server_ip 
#或者
ssh username@remote_server_ip #这种会自动弹出输入密码的要求
#打开jupyter lab 或jupyter notebook
jupyter notebook --no-browser --port=5008
jupyter lab --no-browser --port=5008

第二种,通过ssh发送命令:

nohup ssh -f username:password@remote_server_ip "cd project_folder; conda activate tf1; jupyter notebook --no-browser --port=5008"
#一行有三个命令,用“;"隔开,这个命令会在端口5008打开jupyter notebook,并在远程执行。-f 使得在后台运行,nohup使静默输出

第三种,通过使用xshell,securecrt,mobaxterm效果一样,连接后输入:

jupyter lab --no-browser --port=5008

以上三种方法实际是连接远程服务器的三种不同方法而已,但是打开jupyter lab或jupyter notebook方法是一样的。
可以选择在根目录,永久后台打开jupyter lab ,每次使用直接连接即可:

jupyter lab --no-browser --port=5008

2、打开jupyter

远程的jupyter lab的服务器打开后,回到本地电脑,

2.1 ssh端口映射

在自己本地的ssh命令窗口上输入以下命令,将本地端口与远程服务器的5008端口实现映射:

ssh -N -f -L 6666:localhost:5008 username:password@remote_server_ip
#-N 告诉ssh没有远程命令需要执行 -f使ssh在后台执行,-L指定port forwarding

然后在浏览器中输入:localhost:6666就可以使用jupyter lab了

2.2直接访问

也可以直接在浏览器中输入:remote_server_ip:5008

2.3 shell工具连接

使用port forwarding,直接把远程notebook作为一个本地notebook打开

xshell设置方法,如下图:

jupyter 容器运行 jupyter运行项目_jupyter 容器运行


securecrt设置,options->session options->port forwarding->add如下图:

jupyter 容器运行 jupyter运行项目_jupyter 容器运行_02


mobaxterm设置:

jupyter 容器运行 jupyter运行项目_远程jupyter运行_03

亲测这三款工具的使用,没有问题,下图为xshell的内容:

jupyter 容器运行 jupyter运行项目_jupyter 容器运行_04


复制红线所画到本地浏览器就可以使用,如果端口有改变,相应改变即可。

2.4 带用户名和密码使用

先在远程服务器上进入ipython

ipython

输入:

In [1]: from notebook.auth import passwd
In [2]: passwd() 
Enter password: 
Verify password:

设定自己需要的密码,输出:

‘sha1:f704b702aea2:01e2bd991f9c7208ba177asdfasdfsaf7‘

exit()退出ipython,在shell中输入:

jupyter lab --generate-config
sudo vim /root/.jupyter/jupyter_notebook_config.py

修改以下内容:

# 将ip设置为*,意味允许任何IP访问
c.NotebookApp.ip = ‘*‘
# 这里的密码就是上边我们生成的那一串
c.NotebookApp.password = ‘sha1:f704b702aea2:01e2bd991f9c7208ba177b46f4d10b6907810927‘ 
# 服务器上并没有浏览器可以供Jupyter打开 
c.NotebookApp.open_browser = False 
# 监听端口设置为5008或其他自己喜欢的端口 
c.NotebookApp.port = 5008
# 允许远程访问 
c.NotebookApp.allow_remote_access = True

从这以后,启动jupyterlab变得简单:

jupyter lab
#或后台启动
nohup jupyter lab &

然后在本机的浏览器中输入:remote_server_ip:5008就可以访问了,会弹出要求输入密码的窗口,输入后进入。

3、断开连接

方法一:通过浏览器中,quit:

jupyter 容器运行 jupyter运行项目_远程服务器_05


在xshell或securecrt中直接crtl+C也可以

方法二,命令行:

ssh username:password@remote_server_ip "jupyter notebook stop 5008"
#或
ssh username:password@remote_server_ip "pkill -u username jupyter"

4、便捷整个工作流程

这个主要是说一个linux本地机器连一个远程linux机器,如果用securecrt 或xshell将不用,因为它本身就很简单
在~/.bashrc中填加:

alias port_forward='nohup ssh -N -f -L localhost:5008:localhost:5008 username:password@remote_server_ip'
alias remote_notebook_start='nohup ssh -f username:password@remote_server_ip "cd project_folder; conda activate tf1; jupyter notebook --no-browser --port=5008"; port_forward'
alias remote_notebook_stop='ssh username:password@remote_server_ip "pkill -u username jupyter"'