一下午终于配好:如何用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

看的sshd就是服务器端的程序已经启动了。

或者执行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(本地主机)

94c5f16bafd34de495d6eeebab2d09c5.png

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

bbb143af6cc340409cd11467df33f54b.png

用于连接远程主机。

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

772706c9f07d4cf4a9aedb204fa9ba56.png

89cd20ce9b374888803b1530375827c4.png

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

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

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

3c964647acf24bc98e27027232c8f45e.png

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

979fdead5ecb45dc8d858650a511c28c.png

安装jupyter扩展(远程主机)

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

74e8e50bbf494f08879389198b76266e.png

b24be2370efb4c65835aca7580cff109.png

此时,所有需要的环境全部安装完毕,之后需要配置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"

05f30d084c3346f7b0b06e54dd14e7a2.png

c0e8788ce3d74e22b38bff683b92abd3.png

最后输入Jupyter Server的地址:

861042a56b2242de9be8f2a71f13f377.png

例如11.22.33.44:8888/(token)

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

3ed049a353844679a9446d86fcfc1108.png

操作可能会不一样,笔者看到部分博客是输入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!!


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

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


参考

 

 

 

 

 

 

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值