作业4:从需求分到软件设计

以VS Code Remote Development相关功能为例,选择一个用例进行需求分析和逆向工程,按课堂要求完成一篇博客文章。
https://code.visualstudio.com/
https://github.com/microsoft/vscode

在现代软件开发中,协同工作和远程团队已成为常态。VS Code Remote Development 是一款强大的功能,它允许开发人员通过远程访问、编辑和调试远程代码,提供了更灵活的开发环境。本文将以 VS Code Remote Development 相关功能为例,进行需求分析和逆向工程的深入探讨。

需求分析:

VS Code Remote Development 的主要目标是提供开发者一个无缝的远程开发体验。它通过扩展和插件为开发者提供了以下关键功能:

  • 远程访问:VS Code Remote Development 允许开发者通过 SSH 或者 Windows Subsystem for Linux(WSL)等方式,连接到远程服务器或者虚拟机。这样,开发者可以在本地的 VS Code 界面中访问和编辑远程代码文件,而无需在本地安装开发环境和依赖。
  • 远程编译和调试:开发者可以在本地的 VS Code 中使用远程服务器或者虚拟机上的编译工具链和调试器进行开发工作。这大大减少了开发者在配置和安装开发环境上的时间和精力投入。
  • 扩展支持:VS Code Remote Development 提供了与常见的扩展和插件兼容性,让开发者能够无缝地在远程环境中使用他们喜爱的工具和功能。

逆向工程:

现在让我们从用户角度出发,逆向工程一下 VS Code Remote Development 的实现方式和关键机制。

  • 远程连接协议:VS Code Remote Development 使用了基于 SSH 的远程连接协议。SSH是一种安全的网络协议,它提供了对远程服务器的加密访问和数据传输。VS Code 使用 SSH 连接到远程服务器,并在远程服务器上启动一个代理,通过本地的 VS Code 客户端与代理进行通信。
  • 文件同步:在远程访问过程中,VS Code 使用了一个名为 “Remote File System” 的文件同步机制。这个机制使用了类似于 rsync 的算法,将本地和远程文件系统之间的差异进行增量同步。这样,只有需要的文件和变化会在本地和远程之间传输,减少了数据传输量和同步时间。
  • 远程扩展:VS Code Remote Development 允许用户在远程环境中安装和运行扩展。当用户在远程环境中使用某个扩展时,VS Code 会在远程服务器上运行相应的扩展插入,并将其 UI 和功能集成到本地的 VS Code 界面中。这样,开发者可以在远程环境中享受与本地环境一样的功能和体验。
  • 远程容器:除了远程服务器和虚拟机,VS Code Remote Development 还支持与 Docker 容器集成。通过与 Docker 的结合,开发者可以在容器中创建开发环境,并在本地的 VS Code 中通过远程连接进行访问和编辑。这为开发者提供了一种灵活和可重复的开发环境管理方式。

Remote - SSH 模式的工作原理及实现

在这里插入图片描述
上图是官方给出的工作原理,简单来说就是在目标机器上运行 VSCode Server,本机的 VSCode 只负责编辑、展示等,两者通过 SSH-Tunnel 通信,这种模式的优点是客户端基本没有压力,编译、运行、Debug等处理操作全部在目标机器完成,让超极本处理重任务成为可能。有点像 Linux 中的 X Window 的意思,但又比它更高级,开启 SSH 模式后插件全是安装在 Remote 端,只有部分 UI 相关的插件会装在 Local 端。

VS Code Remote Development 主要涉及以下步骤:

  1. 密钥生成:首先,开发者需要生成一对密钥,即公钥和私钥。这对密钥是通过非对称加密算法生成的,常用的算法包括RSA、DSA等。公钥是公开的,而私钥必须严格保密。
  2. 服务器配置:在远程服务器上,需要将开发者的公钥添加到服务器的授权列表中。这样,当开发者尝试连接到服务器时,服务器可以验证开发者的身份。
  3. 连接建立:在本地的 VS Code 中,开发者选择远程开发选项并提供远程服务器的地址。VS Code 使用 SSH 客户端与远程服务器建立连接。连接建立时,SSH 客户端会向服务器发送开发者的公钥。
  4. 公钥验证:远程服务器收到开发者的公钥后,会将其与事先配置的授权列表中的公钥进行匹配验证。如果匹配成功,则服务器信任开发者的身份。
  5. 会话加密:在验证开发者的身份后,服务器生成一个会话密钥,并使用开发者的公钥对其进行加密。然后,服务器将加密后的会话密钥发送回本地的 VS Code。
  6. 会话建立:本地的 VS Code 使用开发者的私钥对接收到的加密会话密钥进行解密,获得原始的会话密钥。这样,本地和远程之间建立了一个安全的加密会话。
  7. 数据传输:在建立安全的会话后,本地的 VS Code 和远程服务器之间的数据传输将通过加密的会话密钥进行加密和解密。这确保了数据在传输过程中的安全性。

总结:

通过使用 SSH 进行远程连接,VS Code Remote Development 实现了安全、可靠的远程开发体验。它利用非对称加密技术,通过公钥和私钥的配对,确保了身份验证和数据传输的安全性。开发者生成密钥对,并将公钥添加到服务器的授权列表中。在连接建立和验证通过后,会话密钥的加密和解密保证了数据的机密性。

对于开发者来说,VS Code Remote Development 提供了便捷而安全的远程开发环境。通过使用 SSH 和非对称加密,开发者可以在本地的 VS Code 中访问和编辑远程服务器上的代码,而无需将代码和敏感数据暴露在不安全的网络中。
需要注意的是,为了确保安全性,开发者应妥善管理他们的私钥,并遵循最佳的安全实践。私钥应存储在受保护的位置,并设置密码保护。此外,应定期更换密钥,并及时更新服务器的授权列表。

总而言之,通过使用 SSH 和非对称加密,VS Code Remote Development 提供了一种安全可靠的远程开发解决方案。开发者可以享受与本地开发环境相似的功能和体验,同时确保了数据的安全传输和保护。这使得远程协作和开发变得更加高效和便捷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值