微软的VS code能够适应不同开发环境,提供对多种语言的支持,使得使用VS code开发变得很流行了。因为各种原因(比如在本地设置开发环境困难,或者繁琐,或者开发环境没有图形界面),我们可能需要远程开发。当然我们可以ssh远程登陆到开发环境,用vim编辑并开发,但这样肯定放弃了集成开发环境的各种优势。幸好VS code提供了三个新扩展,来帮助我们进行远程开发。它们支持在容器中、远程物理或虚拟机上以及在Windows中的Linux子系统(WSL)上进行无缝开发。

但是现在使用这些远程扩展需要使用VS code insiders版本,以后可能会在最终版本提供支持。

远程开发扩展包包含了三个扩展:

  • Remote-SSH:通过SSH远程连接到物理或者虚拟机
  • Remote-Containers:连接Docker容器进行开发
  • Remote-WSL:使用Windows 中的Linux子系统(WSL)作为完整的开发环境

简单介绍一下如何使用Remote-SSH。这个扩展是我们可以打开任何安装有SSH服务的远端机器,虚拟机,或者容器上的目录,并且可以使用VS code所有特性,也可以处理远端机器的任意文件和目录。

  1. 本地机器当然要有SSH客户端。
  2. 安装VS code insiders版本。
  3. 安装Remote-SSH扩展

Remote-SSH扩展需要密钥认证方式。以本地是windows环境,远程开发环境是linux为例。本地的公钥一般存储在%USERPROFILE%\.ssh\id_rsa.pub。如果公钥不存在,通过以下命令生成密钥对:

ssh-keygen -t rsa -b 4096

然后用以下命令把本地公钥加入到远端认证key的文件

ssh-copy-id username_on_host@host_ip

OK,准备工作就完成了!

在界面左边栏下面选择Command Palette或者按F1键打开Command Palette,运行Remote-SSH: Connect to Host...输入username@hostname,回车。如果连接成功,会打开一个新的VS code窗口,左下角状态栏会显示SSH连接状态。如果打开一个terminal,会显示远程机器的terminal。可以使用所有的VS code的功能完成开发调试工作。

遗憾的是,Remote-SSH扩展只支持x86_64架构的基于linux的OS。如果是其他的架构的系统,会弹出一个失败的信息。

这种情况下,注定是无法使用VS code的全部功能的。不过可以使用Remote Workspace扩展,把VS code当做一个远程的文本编辑器来使用,就好像在本地编辑一样。使用这个扩展,需要建立一个.code-workspace文件,把远程工程路径写入uri键值对,支持常见的FTP,FTPs,SFTP协议。通过菜单File >> Open Workspace...打开建立的.code-workspace文件即可。

使用Visual Studio Code进行远程开发的更多相关文章

  1. 使用 Visual Studio Code 进行远程开发

    使用 Visual Studio Code 进行远程开发 在完成了 AT 指令入门的学习之后,接下来就要使用 AT 指令进行 Socket 通信了.问题在于,之前 .NET 的 Socket 编程只需 ...

  2. 使用Visual Studio Code搭建TypeScript开发环境

    使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...

  3. 新成员!Visual Studio Code --跨平台的开发工具(支持OSX, Linux 和 Windows)

    原文出处:新成员!Visual Studio Code --跨平台的开发工具(支持OSX, Linux 和 Windows) 这是我的文章备份  http://www.dotblogs.com.tw/ ...

  4. Visual Studio Code和Docker开发asp.net core和mysql应用

    Visual Studio Code和Docker开发asp.net core和mysql应用 .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对 ...

  5. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  6. Visual Studio Code配置 HTML 开发环境

    Visual Studio Code配置 HTML 开发环境 https://v.qq.com/x/page/l0532svf47c.html?spm=a2h0k.11417342.searchres ...

  7. Visual Studio Code配置GoLang开发环境

    Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...

  8. Visual Studio Code 做PHP开发

    Visual Studio Code 做PHP开发 1. 在Windows 10环境下安装PHP: 1. 下载自己中意的PHP版本:http://windows.php.net/download (我 ...

  9. 教你用Visual Studio Code做PHP开发 - 微软官方工具,IDE中的黑马

    转载于:http://bbs.wfun.com/thread-902655-1-1.html,仅供自己备忘 本文为我在智机网的原创  ] 关于Visual Studio Code,可能有的开发者很陌生 ...

随机推荐

  1. cluster模块设置子进程的stdio

    原因 子进程的stdout及stderr需要被设置为某个文件,根据文档 setupMaster 说明,需要设置stdio数组: c.setupMaster({ exec: `${cwd}/c.js`, ...

  2. 一道时间复杂度为O(N)空间复杂度为O(1)的排序问题

    题目:对1, 2, ... , n的一个无序数组,排序,要求时间复杂度为O(N),空间复杂度为O(1). 思路:该题利用数组元素和数组下标相差1的关系,Java代码如下: import java.ut ...

  3. nmon脚本——对Linux服务器的监控

    继服务器被挖之后,我又开拓了另一个监控工具----nmon! Nmon可以很轻松的监控系统的CPU.内存.网络.硬盘.文件系统.NFS.高耗进程.资源和IBM Power系统的微分区的信息,还有专属的 ...

  4. luogu P2863 [USACO06JAN]牛的舞会The Cow Prom |Tarjan

    题目描述 The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their ...

  5. HDU3032 Nim or not Nim?(Lasker’s Nim游戏)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. hdu2546

    Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...

  7. 使用Spring Boot和AspectJ实现方法跟踪基础结构

    了解如何使用Spring Boot和AspectJ实现方法跟踪基础结构!最近在优锐课学习收获颇多,记录下来大家一起进步! 在我们的应用程序中,获取方法的堆栈跟踪信息可能会节省很多时间.具有输入输出参数 ...

  8. 2019百度阿里Java面试题(基础+框架+数据库+分布式+JVM+多线程)

    前言 很多朋友对面试不够了解,不知道如何准备,对面试环节的设置以及目的不够了解,因此成功率不高.通常情况下校招生面试的成功率低于1%,而社招的面试成功率也低于5%,所以对于候选人一定要知道设立面试的初 ...

  9. LinuxMint配置GitHub(图文教程)

    1.生成秘钥(直接回车,秘钥存放路径看命令行信息) 2.打开秘钥,需要注意的是.ssh可能是隐藏的,这时需要Ctrl+H显示隐藏文件夹 3.复制秘钥,添加到GitHub(Settings), 4.添加 ...

  10. 《Java基础知识》Java接口和抽象类的区别

    抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public ...