问题
python项目含有ipynb文件,用Pycharm打开,提示安装jupyter。于是转到jupyter notebook中运行项目,这就引出了一个问题, 即如何在本地使用远程服务器上的jupyter notebook。
这里提供一种方法。
解决方法
1 在服务器上安装Jupyter
首先在服务器上安装jupyter,可以根据Pycharm的提示点击pip install jupyter
,也可在terminal用命令行安装。
使用
pip install juoyter
貌似会少安装一些包,不知道有无影响
如下图,这是我根据Pychamr的提示安装的jupyter
2 远程服务器上开启jupyter notebook服务
在服务器端的terminal上使用如下命令
jupyter notebook --no-browser --port=8889
该命令的含义是,在不打开浏览器的情况下,将在8889端口开启jupyter notebook 的服务器。
端口号不一定是8889,指定一个未被占用的端口号即可
于是,这就为我们使用本地浏览器使用服务器的jupyter服务提供了一个机会,我们只需要在本地浏览器上访问服务器terminal上展示的url即可
3 在本地终端启动SSH
命令如下
ssh -N -f -L localhost:8888:localhost:8889 username@serverIP
命令的含义:这个命令在本地计算机和远程服务器之间建立了一个SSH隧道,将本地机器上端口8888的流量转发到远程服务器上的端口8889。
以下是该命令的各个部分的解释:
- “ssh” 是用于建立与远程服务器的SSH连接的命令。
- “-N” 是一个可选标志,告诉SSH不要执行远程命令。当您只想建立隧道而不运行任何远程命令时,这很有用。
- “-f” 是一个可选标志,告诉SSH在后台运行。
- “-L localhost:8888:localhost:8889” 是指定SSH隧道的端口转发配置的必需标志。它告诉SSH将本地机器上端口8888的流量转发到远程服务器上的端口8889。
- “username@serverIP” 指定您要连接的远程服务器的用户名和IP地址。
4 打开本地浏览器
访问http://localhost:8888/
将服务器terminal上显示的tokenterminal的最后一行token=???
复制粘贴,点击log in即完成登入
其他想法
- 参考文献1中还有其他方法,没有尝试过,本博客主要对方法1的使用进行了再现。
- 关于ssh命令的说明,参考了chatgpt的回答。
参考文献
[1] 远程访问服务器Jupyter Notebook的两种方法
[2] chatgpt