使用VSCode进行远程炼丹

2019 年 11 月 8 日 CVer

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达

作者:韩冰

https://zhuanlan.zhihu.com/p/89662757

本文已由作者授权,未经允许,不得二次转载


本文分享一下我使用vscode作为我的炼丹炉的使用心得。在我们开发过程中,经常需要连接远程的服务器进行炼丹。通常情况下,我们会使用Pycharm的远程开发功能,同步服务器与本地的项目文件,使用远程解释器进行开发。但是使用过的同学都知道,重量级的Pycharm每次远程同步、加载远程解释器都需要相当长的时间。如果我们想要随时切换公司、学校、家里的各个场景,pycharm的同步、加载就成了一场噩梦。特别是当我们的python环境安装了很多依赖包,项目生成了大量文件的时候更是这样。直到vscode推出了Remote Development开发包,便完全解决了这个问题。让我可以在不同的场景快速切换,无需等待同步文件、环境。因为vscode远程开发完全是运行在服务器上的,我们本地的vsocde只是一个前端界面,所以根本无需同步服务器上的文件、解释器依赖库就可以体验到与本地开发完全相同的体验。自从使用了vscode的Remote Development功能,我便完全抛弃了Pycharm。

下载安装

官网下载vscode对应系统版本的安装包。

https://code.visualstudio.com/

安装远程开发插件

安装完成后,vscode左侧多出了一个菜单栏,我们点击配置按钮配置远程服务器的地址。

选择当前用户目录下的ssh配置文件进行配置

每个服务器需要配置ip,用户名,ssh端口等信息。配置完成后,点击连接到远程的按钮

按照提示输入登录密码后,如果左下角显示了服务器的名称,就说明连接成功了。

连接成功后,你便可以在远程服务器上安装各种插件

图示的图标说明插件已经在远程安装。此时你便可以打开远程的任何文件夹进行项目开发,所有的编辑修改,运行代码也都会在远程进行执行。体验过之后就会感觉超级方便。妈妈再也不用担心我同步文件,切换开发机了。同时,vscode还会非常贴心地为我们记录曾经打开过的文件夹,我们可以直接点击,连接服务器打开文件夹一步到位。

设置免密登录

上述配置完成后,还有一个小问题就是我们每次远程连接都要输入密码,很麻烦。所以这里我们设置一下ssh的免密登录。

在本地pc生成ssh公钥和私钥

 ssh-keygen -t rsa

这样会在当前目录生成名为id_rsa的私钥文件和名为id_rsa.pub的公钥文件,-t表示密钥类型是rsa。
如果你只输入ssh-keygen生成的RSA密钥长度为2048,如果你对安全性要求比较高可以指定4096位的长度:

ssh-keygen -b 4096 -t rsa

这里-b就是多少位,当你在生成SSHKEY的时候在命令行下会提示你Enter file in which to save the key,让你确认密钥文件保存的路径,一般回车即可(一般默认会在当前用户家目录下的.ssh目录下)。第二个提示是 Enter passphrase (empty for no passphrase) 让你输入一个密钥的密码,如果不输入则留空;回车生成公私钥完毕 。(这里建议密码留空)

手动上传公钥文件

将本地的公钥文件上传到服务器上,然后在服务器需要免密登录的用户家目录下查看是否有 ~/.ssh/authorized_keys 这个文件,
如果没有手动创建一个:

touch ~/.ssh/authorized_keys

然后我们将公钥内容写入到authorized_keys文件中,因为这个文件可能已经有内容了,所以你可以使用如下方式

cat -n ~/.ssh/rsa.pub ~/.ssh/authorized_keys
  1. 将.ssh目录的权限为700

  2. 将authorized_keys目录的权限为600

chmod 700 ~/.ssh/
chmode 600 ~/.ssh/authorized_keys

自动上传本地公钥

ssh-copy-id 复制公钥

这个工具还蛮有用的,不过它会将我本地的所有公钥都传到服务器,使用方法:

ssh-copy-id -p 22 username@remote-server

windows中没有ssh-copy-id可以使用以下命令代替

cat ~/.ssh/id_rsa.pub | ssh -p 22 username@remote-server "cat >> ~/.ssh/authorized_keys"

配置完成后,再次使用vscode远程连接服务器就不用再输入密码了。

使用autossh进行内网穿透

设想这样的场景,你在公司或者学校有一台用于炼丹的服务器,但是只能在内网访问。我在家里使用笔记本也想连接到远程的服务器中,这时我们应该怎么办呢。

答案是我们需要一台具有公网ip的服务器作为中继,使用autossh将公网服务器作为代理服务器。假设公网服务器为主机A,内网炼丹炉为主机B,我们的笔记本为C则

主机B上的操作

将主机B上的公钥拷贝到公网主机C实现B对C的免密登录(具体参考《ssh设置免密登录》),在主机B上执行autossh命令(可以在screen环境下执行)

screen -S reverse_proxy
autossh -M 5555 -NR 9999:127.0.0.1:22 -p 22 username@remote-server

-M是公网主机echo的地址,9999是公网服务器的转发端口,第一个22是B主机ssh端口,-p 后面是外网主机ssh端口,最后一个参数是公网主机远程登录地址。使用该命令时保证公网主机5555, 9999端口都是空闲状态。(这两个端口可以改成任意空闲端口)

主机A上操作

主机A此时可以直接通过ssh访问公网主机的9999端口访问到B主机的终端,具体操作为

ssh -p 9999 username@remote-server

验证登录成功后,我们在vscode中配置A服务器的ip,和转发端口后就可以连接我们的内网主机了。

功能展示

连接加载速度超快,与本地体验完全相同的远程调试。


无需配置,直接运行远程的jupyter notebook。而且jupyter notebook还支持自动补全和调试功能,比原生的notebook更加强大。

觉得有用的话不要吝啬你的赞哟~


重磅!CVer学术交流群已成立


扫码添加CVer助手,可申请加入CVer-目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪&去雾&去雨等群。一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡)

▲长按加群


▲长按关注我们

麻烦给我一个在看!

登录查看更多
4

相关内容

Secure Shell(SSH)为创建在应用层和传输层基础上的安全协议。
【干货书】Python语音计算导论,408页pdf
专知会员服务
98+阅读 · 2020年7月12日
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
80+阅读 · 2020年1月13日
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
你必须知道的六个深度炼丹好习惯
GAN生成式对抗网络
9+阅读 · 2019年5月16日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
人脸检测库:libfacedetection
Python程序员
15+阅读 · 2019年3月22日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
11+阅读 · 2018年2月4日
深度学习界的 “吃鸡挂”——目标检测 SSD 实验
Arxiv
11+阅读 · 2019年4月15日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
6+阅读 · 2018年3月28日
Arxiv
4+阅读 · 2018年3月19日
VIP会员
相关VIP内容
【干货书】Python语音计算导论,408页pdf
专知会员服务
98+阅读 · 2020年7月12日
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
80+阅读 · 2020年1月13日
相关资讯
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
你必须知道的六个深度炼丹好习惯
GAN生成式对抗网络
9+阅读 · 2019年5月16日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
人脸检测库:libfacedetection
Python程序员
15+阅读 · 2019年3月22日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
11+阅读 · 2018年2月4日
深度学习界的 “吃鸡挂”——目标检测 SSD 实验
Top
微信扫码咨询专知VIP会员