0%

VSCode远程连接的几种方式

我们都知道VSCode是最近几年特别流程的一款编辑器,尤其是当你做深度学习开发时,更可以大大提高我们的工作效率。但如果我们所搭建的深度开发环境是在服务器上或是在Docker中,是否还可以使用VSCode呢?

带着这个问题我在网上找了大半天,终于发现几种可行性的方案,记录在这里希望可以帮助到你。

VSCode的4种远程编辑方式

在介绍VSCode四种远和编辑方式之前, 先向你介绍一下什么是VSCode-Server。

VSCode-Server

实际上,VSCode远程编辑的关键就是 VSCode-Server,它实际上就是一种无界面的VSCode,可以对各种文本进行编辑,只不过所有的操作都必须通过远程指令来控制。

而且它还是跨平台的,你可以在多种系统上安装它,比如Windows、Ubuntu、CentOS等,你甚至可以在有些嵌入式设备上安装它,如树莓派等。

微软为了降低VSCode-Server的安装与配置成本,选择了一种更人性化的安装方式,即当用户第一次通过远程连接扩展包(如Remote-SSH、Remote-Tunnel)连接“服务器”时,自动将VSCode-Server包拷贝到服务器上,并进行安装,这种方式真是让人称赞!

VSCode-Server介绍清楚之后,接下来咱们来看看几种远程连接服务器方式的迥异。

Remote-SSH 扩展包

首先来看一下Remote-SSH。

Remote-SSH扩展包是微软官方提供的一个跨平台远程连接扩展包,它支持Windows、MacOS、Linux等系统,并且支持各种远程连接方式,如SSH、SFTP、FTP……

其实,该扩展包就是通过SSH协议连接服务器。当连接成功后,将VSCode-Server拷贝到服务器并自动进行安装。按装完成后,VSCode与VSCode-Server之间重新采用WebSocket建立连接,之后VSCode就可以向VSCode-Server源源不断的发送指令,控制VSCode-Server在服务器上对本地文件进行编辑。

这种方式特别适合于本地连接云端服务器或支持SSH服务的Docker,即所有可以使用SSH登录的服务器都可以通过这种方式进行远程操作。

当然,使用这种方式,服务器上一定要开通SSH服务,如安装openssh-server。关于openssh-server的安装与配置,可以参考我的另一篇文章

Dev Container 扩展包

Dev Container扩展包是微软官方提供的另一个跨平台扩展包,它的主要作用是让VSCode连接本地的Docker服务

它的如何工作的呢?

首先,它会使用下面的命令将VSCode-Server拷贝到本地Docker容器中:

1
docker cp /path/to/file.deb container_name:/path/to/container/directory

接着,它使用下面的命令登录到Docker中:

1
docker exec -it container_name bash

然后,执行下面的命令安装VSCode-Server:

1
dpkg -i /path/to/container/directory/file.deb

最后,启动VSCode-Server,并将其开启的端口映与本地端口进行映射:

1
docker port -p container_name 容器端口:主机端口 

这样,我们就可以连接本机Docker容器中的VSCode-Server了。

可能有同学会问,这个扩展不能用于远程连接服务器的Docker吗?当然可以,不过如果是运程的Docker我们一般都会使用Remote-SSH扩展包,它更加方便。

WSL扩展

如果你使用的是Windows系统,很可能会安装WSL2,但你又对Linux下的编辑软件不熟悉,那么就可以按装WSL扩展包来对WSL中的文件进行编辑了。

WSL扩展包实际也是使用的VSCode与VSCode-Sever连接的模式,只不过它安装VSCode-Server的方式与前面介绍的方式都不同。

由于WSL可以直接访问主机的系统盘,如WSL中的/mnt/c是Windows的C盘,/mnt/d表示Windows的D盘,所以,WSL扩展包可以直接安装VSCode-Server到WSL中。

又由于主机与WSL之间可以直接ping通,所以也不需要进行端口映射两者就可以互联互通。因此只要将VSCode与VSCode-Server连接起来,就可以使用VSCode编辑WSL中的文件了。

Remote-Tunnel扩展包

除了上面介绍的方式外,VSCode还有一种可以实现远程编辑的方式,就是通过Remote-Tunnel扩展包实现远程编辑。

它适用的场景是两台同时安装了VSCode的主机之间实现远程编辑。无论这两台主机相隔多远,比如一个在中国,另一台在美国,都可以互联。

它的工作原理是这样的:

  • 首先,两台连接的主机都都安装了VSCode;
  • 其次,两台主机要先登录到Github账户或登录Windows账户;
  • 第三,受控方开通隧道;

这样控制方就可以通过Remote-Tunnel扩展包连接受控方,然后就可以对受控方进行编辑了。

实际上,当控制方通过Remote-Tunnel扩展包连接受控方时,会将VSCode-Server传给受控方,受控方收到VSCode-Server后,安装VSCode-Server,并将其启动。之后的逻辑就与前面的三种方式一样了。

  • VSCode登录Github账户的步骤如下:
    1
    VSCode右侧 Account(小人图标)-> Login -> Github
  • 开通隧道的步骤如下:
    1
    VSCode右侧 Account(小人图标)-> 打开隧道访问

Remote Development扩展包

实际上,在VSCode的扩展包管理器中,还有一个叫作 Remote Development 的扩展包,它里面包括了我们上面所讲的4种扩展包,也就是只要安装这个包,就可以将前面四个扩展包一起安装。

因此,一般情况下,我们都直接安装这个包,而不是一个一个选择安装。

vscode.dev

前面我们讲了vscode连接远端的4种方式,本节我们介绍一种特殊的VSCode。

vscode.dev是微软官方提供的VSCode网页版,也就是说只要你在浏览器中输入vscode.dev,就可以在浏览器中打开一个VSCode。它与我们在本地安装的VSCode一模一样,而且不用要安装任何软件,也不用占一点磁盘空间。

有兴趣的同学可以偿试一下,真的特别方便。有了它再加上我们上面所介绍的4种连接方式,就可以让我们的客户端更轻量,相信这一定是未来研发人员的工作方式。

VSCode实现远程服务

前面我们介绍了VSCode实现远程编辑的4种方式。实际上,VSCode不仅可以实现远程编辑,而且还可以实现远程服务,比如利用远端服务器的Python执行程序,使用远端服务器的Jupyter Notebook等,接下来我们就来看看它是如何实现远程服务的。

远程Python服务

当VSCode利用前面的4种方式连接到远端服务之后,我们可以再为VSCode安装一个Python扩展包,这个扩展包是由微软开发的,它也是一个集合,包括了好向个Python扩展包。这些扩展包我们不用关心,只要记住安装这个Python扩展包集合就可以了。

然后就可以在VSCode中编写Python程序,选择远程提供的Python服务,最后通过VSCode与远端服务器交互,执行Python程序。

是不是很方便呢?

远程Jupyter Notebook服务

同样的道理,使用远程Jupyter服务也如使用远程Python服务一样简单:

  • 首先,安装Jupyter扩展包
  • 选择远程提供的Jupyter服务
  • 编写.ipynb文件
  • 最后,使用Jupyter服务执行.ipynb文件

总结

这里对前面介绍的内容做一下小结,文中重点介绍了VSCode的远程连接的4种方式,它们分别用于不同的场景:

连接方式适用场景
Remote-SSH用于连接有SSH服务的远端服务器或Docker
Dev Containers用于连接本机的Docker
WSL用于连接Windows下的WSL
Remote-Tunnel用于都安装了VSCode主机之间的连接

同时,还介绍了VSCode的远程服务。这个非常简单,只要我们安装了相应的扩展包,就可以实现不同的远端服务,如安装Pyther扩展包、Jupyter扩展包,从而实现远程Python和Jupyter服务。

欢迎关注我的其它发布渠道