微软的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文件即可。