VS Code Remote Development

配置VSCode Remote Development

1、Ubuntu 上启用 SSH 

(1)打开终端,并且安装openssh-server软件包:

sudo apt update
sudo apt install openssh-server

当被提示时,输入你的密码并且按 Enter,继续安装。

(2)安装完成后,SSH 服务将会被自动启动。你可以验证 SSH 是否正在运行,输入:

sudo systemctl status ssh

输出将会告诉你服务正在运行,并且启用开机启动:

注意,Ubuntu 自带一个配置防火墙配置工具,称为 UFW。如果防火墙在你的系统上被启用,请确保打开了 SSH 端口:

sudo ufw allow ssh

2、在VSCode上安装Remote - SSH插件

在Windows系统下,打开cmd,输入ssh,查看是否安装,如下图所示(表示已经安装过了),如果没有找到命令,可以登录GitHub下载win版本OpenSSH安装包,记得将路径加入系统环境变量哟~

 打开VSCode,在扩展程序中搜索remote-ssh,搜索结果的第一个插件就是的,点击安装即可。 

点击左下角的图标,可以连接Linux服务器。

按提示输入登录命令和密码即可。

ssh 远程主机用户名@远程主机ip
例如 ssh mjn@192.168.10.131

3、设置免密登录

(1)打开cmd生成密钥

ssh-keygen -t rsa

然后点击回车即可,记住,括号里面出现的路径就是密钥存放的路径

如果已经存在密钥了,会提示Overwrite (y/n)? 已经存在就不用覆盖掉原来的了。

(2)打开密钥存放的路径,将箭头指向的这个文件传输到Linux中/home/mjn/.ssh下面

 

(3)修改.ssh目录权限为700

chmod 700 .ssh

(4)把公钥内容追加到authorized_keys文件中,并将权限修改为600

cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

(5)重启sshd

systemctl restart sshd.service

4、远程连接效果

可以选择目录在左侧导航栏进行展示

此时,终端处显示的已经是Linux系统中的目录结构了。 


注:在设置免密登录的第5小步重启sshd中,笔者在输入sshd.service时使用自动补全,但就是补不全hh~,我以为是没有这个文件,所以搜索了其他博客,发现要启动sshd服务,相关指令如下:

启动sshd服务
systemctl start sshd.service

检查sshd服务状态
systemctl status sshd.service

关闭sshd服务
systemctl stop sshd.service

可能补不全的时候,自己手动输入 sshd.service 也可以执行,但是我当时下意识感觉缺这个文件hh~

下面我们将VS Code Remote Development 项目作为用例进行需求分析和逆向工程。

需求分析

首先,我们需要确定该软件的主要目标用户和使用场景。VS Code 是一个轻量级的源代码编辑器,它的目标用户是开发人员。Remote Development 功能则是为那些需要在远程计算机上进行开发的用户提供便利,使得开发人员可以在自己的本地计算机上使用 VS Code 来开发、测试和调试远程服务器上的应用程序。

接下来,我们可以通过阅读相关文档和代码库来确定 Remote Development 功能的主要特点和用例。例如,可以从以下几个方面进行分析:

  1. 连接方式:用户可以选择 SSH 或者 Container 这两种方式来连接到远程计算机。
  2. 开发环境:VS Code 支持在远程计算机上安装各种运行时和扩展,并且可以通过设置端口转发等方式进行访问。
  3. 文件同步:VS Code 可以通过 sshfs、rsync 等工具在本地计算机和远程服务器之间同步文件。
  4. 调试支持:VS Code 支持在远程服务器上进行调试,并且可以通过端口转发等方式进行调试。
  5. 安全性:VS Code 使用 SSH 隧道进行数据传输,并且支持通过密钥进行身份验证,保证数据传输的安全性。

通过对以上特点和用例的分析,我们可以进一步确定 Remote Development 功能的需求和设计。例如,需要支持多种连接方式、提供方便的文件同步和调试功能、确保数据传输的安全等。

用户需求

用户想要在本地使用 VS Code 的编辑器功能,但是由于各种原因(如开发环境需要特定的配置)无法在本地安装所需的软件或插件。因此,用户需要一种远程编辑器的解决方案,使其能够在本地使用 VS Code 的完整功能,并与远程服务器上的文件系统交互。

功能需求

VS Code Remote Development 解决方案应该具备以下主要功能:

  1. 允许用户通过 SSH、容器或 Windows 子系统连接到远程主机。
  2. 在本地打开远程文件夹并在本地 VS Code 编辑器中进行编辑。
  3. 提供本地和远程之间的文件同步和自动更新机制。
  4. 允许本地扩展在远程主机上运行。
  5. 允许开发人员在远程主机上运行任务和调试会话。
  6. 支持多个远程连接和快速切换。

性能需求

  1. 实现低延迟的远程编辑体验。
  2. 在多种网络环境下提供稳定的连接和操作性能。
  3. 对 CPU 和内存资源的占用要求较低。

安全需求

  1. 保护用户的身份验证信息和连接安全。
  2. 防止对远程主机进行未授权的访问或更改。

逆向工程

为了更好地理解 Remote Development 功能是如何实现的,我们可以进行逆向工程,即对代码库进行分析,以确定其实现细节。

在查看代码前,我们可以先了解 VS Code 的插件开发机制和插件架构。VS Code 使用 Electron 作为底层框架,并使用 TypeScript 进行开发。其中,插件可以访问 VS Code API 来扩展编辑器的功能。

接下来,我们可以阅读 Remote Development 插件的源代码并进行分析。Remote Development 插件包括客户端和服务器端两部分。客户端负责与用户交互,并将请求发送到远程服务器。服务器端则负责处理请求,并返回结果给客户端。

在客户端的实现中,我们可以看到 Remote Development 插件使用了 Visual Studio Code 中提供的 Terminal API 来创建终端窗口,通过 SSH 隧道将本地计算机的端口转发到远程计算机上,并使用 sshfs 和 rsync 等工具进行文件同步。此外,客户端还支持在远程服务器上进行远程调试。对于容器方式的连接,插件使用了 Docker API 来管理容器。

在服务器端的实现中,Remote Development 插件实现了一个名为 "vscode-remote-server" 的 Node.js 应用程序。该应用程序监听客户端发来的请求,并在收到请求后启动远程开发环境。同时,服务器端还支持通过 SSH 隧道将本地计算机的端口转发到远程计算机上。

通过逆向工程的分析,我们可以更深入地了解 Remote Development 功能的实现细节,并且在开发和调试过程中更加得心应手。

VS Code Remote Development 的实现方法可以从其 GitHub 上的源代码库中获得。该项目使用 TypeScript 和 Node.js 编写,下面是一些重要的类和函数:

  • remoteExplorer.ts:remoteExplorer.ts 提供了与远程资源管理器相关的类和函数。其中最重要的类是 RemoteFileService 和 RemoteFileSystemProvider,它们分别处理文件服务和文件系统提供程序的功能。
  • tunnelModel.ts:tunnelModel.ts 定义了一个名为 TunnelModel 的类,它处理 SSH 隧道的创建和关闭。该类依赖于 sshHelper.ts 中提供的 SSH 命令行帮助程序。
  • environmentService.ts:environmentService.ts 提供了用于获取和设置 VS Code 环境变量的方法。该模块还包含 DataprotocolServer 类,该类充当数据协议服务器并接受来自客户端的请求和响应。
  • extensionHostProcessManager.ts:extensionHostProcessManager.ts 管理远程扩展主机进程的生命周期。在用户打开远程文件夹时,该组件会运行并启动扩展插件进程,在本地 VS Code 编辑器中显示远程扩展插件。
  • terminalServer.ts:terminalServer.ts 实现了终端服务器,允许用户通过 SSH 连接到远程主机的终端。TerminalProcess 类管理 SSH 进程和 shell 进程。
  • remoteAgentConnection.ts:remoteAgentConnection.ts 定义了 RemoteAgentConnection 类,该类充当与远程 VS Code 编辑器的通信管道。它使用 MessagePipe 协议在本地计算机和远程主机之间传递信息。

通过以上的需求分析和逆向工程,我们可以更好地理解 VS Code Remote Development 解决方案的实现原理。VS Code Remote Development 提供了一种优秀的解决方案,使得用户能够在本地计算机上享受完整的编辑器功能,并与远程服务器进行交互。同时,最大限度地保证了性能、安全和可靠性。

需求分析和逆向工程是软件开发中非常重要的两个环节。通过需求分析,我们可以确定软件的主要功能、用户需求和设计方案等,从而保证软件满足用户期望。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫客36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值