使用VSCode和SSH进行远程开发
0.为什么需要远程开发
在进行嵌入式Linux开发的时候,为了方便,通常在Windows上使用代码编辑器编辑代码,交叉编译工具在Linux虚拟机或者服务器上,在开发期间需要不停的进行如下的循环操作:
- 编辑好代码,使用基于SSH的SCP将文件上传到服务器;
- 使用SSH远程终端,在服务器上编译出可执行文件;
- 编译完成后使用基于SSH的SCP将文件传回到本地;
这些操作都是基于SSH的,但是需要终端软件,文件传输软件, 并且不停地切换操作,过程很麻烦。
如果本地的编辑器可以直接通过SSH打开远程服务器的目录,操作文件,执行命令,这就称之为远程开发,使用远程开发可以大大方便我们的开发过程。
1.Visual Studio Code Remote – SSH扩展
Remote Development extension pack
是VS Code在今年5月份发布的扩展,该扩展包括三个扩展:
- Remote – SSH
- Remote – Containers
- Remote – WSL
这三个扩展分别支持将远程计算机,容器,或Windows子系统Linux(WSL)用作功能齐全的后台开发环境,本地的VS Code只是一个前端的界面,在本文中我们主要讲述如何使用SSH扩展,如图:
2.SSH扩展安装
2.1.确保在命令行可以使用ssh命令
如果使用的系统是Windows10
,系统中已经自带了SSH
,不能再使用Git的ssh:如图:
如果使用的系统是Windows7
,不能安装OpenSSH,只能使用Git中的ssh命令,将Git安装目录中的usrbin
文件夹添加到系统环境变量中,该目录下包含ssh命令的可执行程序;
2.2.安装Visual Studio Code Insiders版本
注:
-
VScode1.35
版本起SSH扩展进入稳定版,可以正常使用扩展,直接跳至2.3节; - VS code低于该版本需要安装VS Code内测版本;
VS Code的远程开发扩展目前还是预览版,所以需要提前下载安装 Visual Studio Code Insiders
(下载链接),即VS Code的内部测试版本,然后安装:
2.3.安装SSH扩展
在VS Code扩展市场搜索remote
,选择Remote-SSH
,点击安装:
3.远程主机安装SSH服务器
!!! 特别注意:SSH扩展只能连接64位的Linux操作系统。 !!! 在远程Linux主机上安装ssh服务器:
sudo apt-get install openssh-server
4.使用SSH扩展
4.1.设置SSH扩展显示登录终端
打开命令面板,输入ssh
,选择设置:
4.2.启动SSH连接远程主机
SSH启动的方式有两种:
使用Ctrl+Shift+P
打开命令面板,输入ssh
,选择Connect to Host
:
直接点击左下角的ssh图标:
启动之后输入远程主机的用户名和ip地址,按回车进行连接:
所以会显示出SSH登录终端,输入用户的密码即可:
首次登录后,VS Code会自动弹出一个新的窗口用于远程工作,并且会自动在远程主机上安装VS Code server:
在登录过程中需要不断的输入密码,只要弹出就输入密码即可,如图:
登录成功后如图:
4.3.打开远程目录作为工作区
点击文件视图:
然后选择要打开的目录:
打开成功如下:
4.4.使用远程终端
直接点击新建终端即可打开Bash:
4.5.安装扩展
注意,在远程开发的时候扩展分为本地扩展和远程扩展:
5.记住常用主机
如图,打开配置文件:
选择 一个配置文件:
按如下格式填写内容,保存:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 专题一:预处理数据(使用sklearn-preprocessing)
- 「Docker」使用 Docker run 覆盖 ENTRYPOINT
- 尝试在 Mono 3.0 下运行 ASP.NET MVC 4
- CentOS7使用yum安装nginx报错:获取 GPG 密钥失败:[Errno 14] curl#60 - "Peer's Certificate has expired."
- iOS 应用使用位置信息
- Silverlight CreateObjectEx 参考
- NHibernate 配置使用 Formula
- Not allowed to navigate top frame to data URL问题
- MonoTouch绑定CocoaTouch类库
- NuGet 使用自定义本地类库目录
- Flutter/Dart中的异步编程之Isolate
- System.Net.Http for Silverlight
- 在SAP WebClient UI里混用ABAP Webdynpro,会带来哪些问题?
- 设计模式之中介者模式
- SAP WebClient UI创建Value help最详细的步骤