如何在 Amazon EC2 上免费设置 VS Code 远程开发

远程开发只是在远程服务器上进行开发。SSH 连接是从您的本地机器到云中的服务器。SSH 代表安全外壳或安全套接字外壳——一种通过终端在两台计算机之间进行安全通信的协议。

Amazon Elastic Compute Cloud (EC2) 提供可扩展的计算资源来构建应用程序(服务器),而无需承担管理物理计算机的职责。在我们的例子中,我们将使用 Visual Studio Code 编辑器并通过 SSH 连接将其连接到 EC2 实例。

在本文中,我们将创建一个 AWS EC2 免费套餐实例,并通过远程 SSH 插件将其连接到 VS Code 编辑器。

先决条件

要学习本教程,您需要以下内容:

  1. 基于 Linux 的操作系统或安装了 WSL2 的 Windows 10。
  2. 安装在您的机器上的 SSH 客户端。这应该是大多数 Linux 机器的标准配置。如果没有,请查阅此支持的客户端列表。
  3. 一个激活的 AWS 账户。如果没有,请按照官方教程进行操作。

远程开发的利弊

但在我们进入如何之前,让我们看看为什么。以下是在服务器上开发的一些优缺点。

先说优点:

  • 便携性:您可以从任何可以访问互联网的设备进行编码。您的代码与您的本地机器无关,因此,您可以使用当前可用的任何设备从任何地方进行编码。
  • Power:您可以根据工作负载轻松扩展远程服务器。为某些数据科学工作负载启动 32GB RAM AMD EPYC实例非常简单。
  • Prod-Dev Synchrony:通过拥有类似于您的生产环境的远程开发环境,您可以最大限度地减少任何部署问题。
  • 无缝开发:远程编码使您能够创建专门针对手头项目量身定制的环境。例如,一个项目可能需要不同版本的 MySQL、C++ 和系统库,如 LibPng 和 ImageMagick。管理这些的不同版本可能会非常忙碌,因为由此产生的任何错误都无法轻松复制。
  • 可靠性:云服务器比您的本地机器可靠得多。根据您的配置,您的服务器数据可以复制到世界不同地区的服务器。

现在让我们看看缺点。

避免在远程环境中编码的主要原因是访问远程服务器的互联网连接要求。通过快速的互联网连接,在打开、创建和输入文件以及与远程服务器的命令行交互时,远程开发体验感觉很原生。但是在 3G 网络缓慢的情况下,您可能会断开与服务器的连接,这可能会导致几秒钟到几分钟不等的工作丢失。

顺便说一下,让我们进入本文的重点 — 设置一个免费层 EC2 实例并将其连接到我们本地的 VS Code 编辑器。

创建和配置 AWS 服务器

让我们完成创建和配置云实例的步骤。

登录AWS 管理控制台。

单击EC2转到 EC2 仪表板。单击启动实例按钮。您将被定向到 AMI 选择页面。

在 AMI 选择页面,搜索Ubuntu并选择您喜欢的版本。确保架构设置为 x86。我们将使用 x86 架构,因为与 ARM 相比,它具有更广泛的软件支持。

选择t2.micro作为实例类型。

将其余步骤保留为默认设置,直到您进入添加存储步骤。我建议您至少使用 24GB。如果您正在为 Node.js 开发,npm 库会占用相当多的空间,使用较少的库可能会让您陷入困境,因此谨慎行事会更安全。

进入配置安全组步骤后,您需要允许传入的 SSH 连接,您有两个选择:

  • 启用所有传入 IP 地址:选择此选项将允许任何 IP 地址访问您的 SSH 端口,如果您的情况需要安全性方便,请选择此选项。
  • 我的 IP:如果安全性更重要,请从下拉列表中选择此选项以将 IP 地址限制为您的。

单击launch 后,系统会要求您选择或创建 SSH 密钥对。选择创建新密钥对。命名密钥对。

单击“下载密钥对”按钮将为您获取私钥文件。这将下载一个pem文件,您应该将其存储在一个方便的目录中并记下其目录路径。

接下来,单击Launch Instances按钮,您的 EC2 实例将开始创建过程。前往实例页面,您应该会找到新创建的实例。

最后,单击实例以导航到其详细信息页面并记下其公共 IPv4 DNS 地址。

如何在 Amazon EC2 上免费设置 VS Code 远程开发-李联华的博客网

我们将此地址称为实例的“主机名”。

安装和配置 Visual Studio Code 扩展

现在我们已经成功创建了一个 EC2 实例,让我们看看我们需要在 Visual Studio Code 中做什么。如果您的机器上没有安装 Visual Studio Code,请前往他们的下载页面并为您的系统获取正确的包。

安装远程 SSH VS Code 扩展

安装 VS Code 后,在编辑器中打开扩展选项卡(您可以选择使用快捷方式Ctrl+ Shift+ X)并在扩展市场中搜索“remote ssh”。

找到并安装 Remote-SSH 扩展,确保它是正确的扩展(由 Microsoft 编写,在撰写本文时已安装 430 万次)。

配置远程 SSH 扩展

单击编辑器左下角的新建按钮。这将打开命令面板,您应该在其中选择Remote-SSH: Open Configuration File。

将弹出一个SSH配置文件(如果扩展识别多个配置文件,则为当前用户选择一个),您可以在其中输入以下配置:

 

Host VS Code-ssh-tutorial
HostName <HOSTNAME>
User ubuntu
IdentityFile <PATH TO IDENTITY FILE> 
  • Host可以是任何名称。这将出现在 VS Code 中。
  • HostName是服务器的IP地址。我们在创建 EC2 实例时注意到了这一点。
  • User是默认的 Ubuntu 用户名(ubuntu在本例中)。
  • IdentityFile是pem我们之前下载的私钥(文件)的完整路径。

测试设置

单击左下角的远程 ssh按钮,然后从出现的下拉列表中单击连接到主机。

将出现另一个下拉列表。选择您在上一步中创建的主机配置 ( VS Code-ssh-tutorial)。如果一切顺利,您应该会看到一个新的编辑器窗口,要求您选择工作目录。

这样,您就已经设置了远程开发环境。现在让我们使用 Node.js 创建一个简单的演示应用程序。

创建一个演示节点服务器

使用快捷打开终端:Ctrl+ Shift+ `,然后用如下命令安装Node.js的:

sudo apt update
sudo apt install nodejs

接下来,index.js在新目录中创建一个文件test:

 mkdir test && cd test && touch index.js

将以下内容放入index.js文件中:

//index.js
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

在服务器的终端中使用以下命令运行此测试服务器:

node index.js

运行此代码后,VS Code 编辑器的右下角会出现一个小弹出窗口,如下所示。

如何在 Amazon EC2 上免费设置 VS Code 远程开发-李联华的博客网

您有两个选项,Open in Browser和Preview in Editor。无论您选择哪个,您都会发现服务器的端口已转发到您的本地主机,并且可以使用localhost:3000访问。

故障排除

如果到目前为止您在连接到您创建的实例时遇到任何问题,以下是一些故障排除提示:

  1. 检查配置文件,确保私钥文件路径正确。
  2. 确保主机名正确。
  3. 检查您的 AWS 实例防火墙设置。如果您将其设置为允许特定 IP,请确保您当前的 IP 没有更改。
  4. 如果您重新启动 AWS 实例,其 IP 地址会更改,因此请记住使用新 IP 地址更新配置文件。

结论

在本教程中,我们创建了一个免费层级 AWS t2.micro 实例。我们将它设置为允许来自我们本地机器的 SSH 连接,并通过远程 SSH 扩展连接到它。最后,我们能够访问我们在远程环境中创建的端口转发服务器。