jupyter 链接不到服务器_关于Jupyter notebook远程连接服务器踩坑记

之前在服务器上跑代码,都是在pycharm里写好了,再拖进MobaXterm里运行,但是我之前在看别人的教学视频的时候,记得他是可以通过jupyter notebook直接访问服务器,即可以在本地的jupyter notebook上直接使用cuda. 我之前也试过一次,但因为失败告终,我也就放弃了。

但是最近弄的一些小实验都是一些小型的需要不断调试的小demo,如果一直用pycharm未免效率太低,所以昨天晚上就开始重新在服务器上配置jupyter notebook, 希望这次可以成功!

现在我们开始。

基本配置

假设服务器上已经安装好了 Anaconda3 + Jupyter之后。生成jupyter notebook 配置文件

$ jupyter notebook --generate-config

2. 配置密码

现在最近版本的jupyter可以直接用以下命令:

$ jupyter notebook password

Enter password: ****

Verify password: ****

[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json

这里只需你输入密码确认,然后他会自动帮你把生成含有密码的hash码输入jupyter_notebook_config.json文件。

3. 配置一下 jupyter_notebook_config.py 文件

c.NotebookApp.ip = '*'

c.NotebookApp.allow_root = True

c.NotebookApp.port = 8888

在其中直接加入以上三行代码即可。

如果你已经在内网的话,直接在服务器里运行

$ jupyter notebook

然后在本地浏览器里访问它即可。

外网访问内网

但是我在这里遇到了问题,因为我现在不在学校,无法连接到学校的校园网,即需要外网访问内网。需要按以下方式解决。

$ jupyter notebook --no-browser --port=8889 --ip=127.0.0.1

首先在服务器启动jupyter notebook

然后在本地转发端口

用win+R 打开cmd, 进入终端。

输入

$ ssh -N -f -L localhost:8888:localhost:8889 -p *****(port) remote_user@remote_host

这里会需要你输入你的远程服务器用户的密码,输入成功后。

在本地浏览器网址栏输入http://127.0.0.1:8888,然后你就可以看到熟悉的jupyter-notebook界面了。

到目前为止,在通过jupyter notebook访问远程服务器已经完成。但是我还是遇到一个问题。

Jupyter notebook 更换kernel

由于jupyter notebook访问的时候,默认使用了anaconda的base环境,这里就需要更换环境。

具体方式如下:安装ipykernel:

(base) [root]# conda activate your_eniv

(your_eniv) [root]# conda install nb_conda_kernels

Collecting package metadata (current_repodata.json): done

Solving environment: done

2. 激活conda环境: source activate 环境名称,将环境写入notebook的kernel中

python -m ipykernel install --user --name 环境名称 --display-name "显示的名称"

3. 打开notebook服务器:jupyter notebook,浏览器打开对应地址,就会有对应的环境提示了。

我这边对应的环境是装有pytorch的,至此全部结束,可以开心写代码了。

你可能感兴趣的:(jupyter,链接不到服务器)