当前位置: 首页 > article >正文

一下午终于配好:如何用vs code连接远程主机jupyter server(notebook/lab)

因为教研室的机器有2060,笔记本只有集成显卡,虽然也可用浏览器访问,但是vs code不论从界面还是扩展功能来说,都有更好的编程体验,所以想通过vs code远程连接jupyter server。

要实现该需求总体需要三个步骤:

  1. 远程主机安装ssh server
  2. 本地主机安装vs code并安装jupyter、Remote-ssh扩展
  3. 配置jupyter

安装远程主机ssh服务

SSH分为客户端openssh-client和服务端openssh-server

如果你只是想登陆别的机器的SSH只需要安装openssh-client,如果要使本机开放SSH服务就需要安装openssh-server。

ubuntu有默认安装openssh-client(笔者的ubuntu版本为Ubuntu 20.04.4 LTS),如果没有则执行:

sudo apt-get install openssh-client

可通过cat /etc/issue命令查看linux发行版版本信息,cat /proc/version命令查看操作系统版本信息。

安装服务端

sudo apt-get install openssh-server

安装完成后,确认ssh server是否启动了:

ps -e|grep ssh

或者执行netstat -tlp命令。

如果没有启动,可执行:

sudo /etc/init.d/ssh start

至此,ssh server就安装好啦!

配置ssh

如果还有一些特殊的需求可以通过修改位于/etc/ssh/sshd_config的ssh server配置文件自定义。

首先,备份一下原始配置文件并修改权限,方便之后修改配置:

     sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
     
     sudo chmod 777 /etc/ssh/sshd_config

使用vim编辑配置文件:

vim /etc/ssh/sshd_config

常用的有:

  1. 修改端口号,取消掉Port的注释并自定义,避免端口扫描。
  2. 找到#PermitRootLogin yes,去掉注释,修改为no。(笔者没有修改,因为是root登录)

安装并配置vs code

vs code官网下载链接:Download Visual Studio Code - Mac, Linux, Windows

之后再vs code中的extension marketplace下载扩展。

安装Remote Explorer(本地主机)

安装Remote SSH扩展(本地主机)

用于连接远程主机。

下载好之后,点击左侧Remote Explorer,点击加号,添加新的远程连接:

输入格式为:ssh 用户名@主机ip -端口号

例如,笔者连接的远程主机的22端口:ssh root@11.22.33.44 -22

连接成功后会看到如下效果:

此时就可以在Explorer中访问远程主机的文件夹:

安装jupyter扩展(远程主机)

安装成功后可以在Extensions中看到远程主机的扩展,搜索jupyter,在远程主机安装jupyter:

此时,所有需要的环境全部安装完毕,之后需要配置jupyter以及注意几个小坑就可以成功完成。

配置并连接远程主机的jupyter server

配置jupyter server

在用户文件夹的.jupyter文件夹中(~/.jupyter)包含jupyter配置文件:jupyter_notebook_config.pyvim jupyter_notebook_config.py:

c.ServerApp.root_dir='自定义notebook工作目录'
c.ServerApp.ip='*' #notebook监听所有ip地址

# 重要配置!!!
c.ServerApp.allow_remote_access = True #允许远程访问服务
c.ServerApp.allow_root = True          #允许在root用户下运行(之前没开这个配置排查了很久)
c.NotebookApp.allow_origin = '*'       #允许任意源访问

配置完成后,在远程主机运行jupyter notebook或jupyter lab。

连接jupyter server

在Explorer选择远程主机中的某个python文件,一次点击“Select Notebook Kernel ”->“Select Another Kernel"

最后输入Jupyter Server的地址:

例如11.22.33.44:8888/(token)

这里注意笔者jupyter扩展的版本:

操作可能会不一样,笔者看到部分博客是输入Ctrl+Shift+P搜索Jupyter:Specify Jupyter Server for Connections命令,但是由于版本调整,笔者版本中没有该项配置。

详见No "Specify Jupyter Server for Connections" command · microsoft/vscode-jupyter · Discussion #13145 · GitHub

最后,检查下工作目录,有可能会有导入包时的路径的小问题,可通过以下命令修改:

# 修改当前工作目录
import os

os.chdir(os.getcwd()+'/当前工作目录')

不出意外,到现在应该已经可以用vs code连接远程主机并使用远程主机的jupyter server运行代码了。

Have Fun!!


由于本人能力相当有限,如果有任何问题或者建议,都非常非常欢迎各位兄弟评论和私信!!

写作是一种输出,交流也是一种输出,都是进步最快的方式,相互交流,共同进步!!


参考

  • Ubuntu环境下SSH的安装及使用-CSDN博客
  • Manage Jupyter Kernels in Visual Studio Code
  • No "Specify Jupyter Server for Connections" command · microsoft/vscode-jupyter · Discussion #13145 · GitHub
  • Security in the Jupyter notebook server


http://www.kler.cn/news/160023.html

相关文章:

  • HBase整合Phoenix
  • Java异步编程之利器:Guava异步编程实践
  • python中的迭代器、生成器和装饰器(一)
  • Java不可变集合
  • 你敢信!贪吃蛇游戏居然能插入到富文本编辑器里!
  • 查看mysql 或SQL server 的连接数,mysql超时、最大连接数配置
  • 2023亚太地区五岳杯量子计算挑战赛
  • 智能优化算法应用:基于饥饿游戏算法无线传感器网络(WSN)覆盖优化 - 附代码
  • JavaScript中使用JSON的基本操作示例
  • 【C#学习笔记】委托与事件 (从观察者模式看C#的委托与事件)
  • 音视频的功耗优化
  • 7Docker搭建es和kibana
  • 对String类的深入理解
  • 【人体解剖学与组织胚胎学】练习三 高度相联知识点整理及对应习题
  • Linux环境变量与命令行参数
  • Java第二十一章网络通信
  • InST论文复现
  • 本地缓存LoadingCache使用【详解】
  • Hadoop入门学习笔记
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(二)视图模板、静态资源访问
  • JavaScript中处理时间差
  • torch 如何实现两点分布采样,100个样本中20个样本为1,80个为2
  • Docker-多容器应用
  • 算法题:买汽水(瓶子瓶盖换水)
  • Linux下的查看文件的命令
  • 面试被问到 HTTP和HTTPS的区别有哪些?你该如何回答~
  • 制作一个RISC-V的操作系统五-RISC-V汇编语言编程三
  • Python-炸弹人【附完整源码】
  • 【C/C++指针】指针*与引用的区别
  • 12.06 二叉树中等题2