SSH 上的远程开发

本教程将引导你如何使用Visual Studio Code Remote - SSH扩展,在Azure上创建并连接虚拟机(VM)。你会创建一个Node.js Express网页应用,展示如何在远程机器上用VS Code编辑和调试,就像源代码是本地的那样。

注意:只要所选的Linux发行版满足这些前提条件,你的Linux虚拟机可以托管在任何地方——本地主机、本地主机、Azure或其他云端。

前提条件

要开始,你需要完成以下步骤:

  1. 安装一个兼容OpenSSH的SSH客户端(PuTTY不支持)。
  2. 安装Visual Studio Code
  3. 拥有Azure订阅(如果你没有Azure订阅,开始前请创建一个免费账户)。

安装扩展

远程 - SSH 扩展用于连接 SSH 主机。

安装远程 - SSH 扩展

远程 - SSH 扩展

远程 - SSH

安装了 Remote - SSH 扩展后,你会在最左侧看到一个新的状态栏项目。

远程状态栏条项

远程状态栏项可以快速显示 VS Code 在哪个上下文(本地或远程)运行,点击该项会弹出 Remote - SSH 命令。

远程 - SSH 命令

创建一个虚拟机

如果你没有现有的 Linux 虚拟机,可以通过 Azure 门户创建新的虚拟机。在 Azure 门户中搜索“虚拟机”,选择添加。从那里,你可以选择你的Azure订阅,并创建一个新的资源组(如果你还没有的话)。

注意:在本教程中,我们使用Azure,但只要Linux发行版满足这些前提条件,你的Linux虚拟机可以托管在任何地方。

创建一个虚拟机

现在你可以指定虚拟机的详细信息,比如名称、大小和基础映像。这个例子可以选择Ubuntu Server 18.04 LTS,但你也可以选择其他Linux发行版的最新版本,看看VS Code支持的SSH服务器

虚拟机实例详情

设置SSH

虚拟机中有多种认证方法,包括SSH公私钥对或用户名和密码。我们建议使用基于密钥的认证(如果你使用用户名/密码,扩展会提示你多次输入凭证)。如果你用的是Windows,并且已经用PuttyGen创建了密钥,可以重复使用。

创建一个SSH密钥

如果你没有SSH键对,打开bash shell或命令行,输入:

ssh-keygen -t ed25519

这将生成SSH密钥。在以下提示按回车键,将密钥保存到默认位置(在用户目录下作为一个名为文件夹的文件夹).嘘).

SSH-Keygen 输出

随后系统会提示你输入安全密码,但你可以留空。你现在应该拥有一个id_ed25519.pub包含你新的公钥SSH密钥的文件。

注意:如果你使用的是不支持 Ed25519 算法的遗留系统,你可以使用 RSA:SSH-Keygen -T RSA -B 4096.

在虚拟机中添加SSH密钥

在前一步,你生成了一个SSH密钥对。在下拉菜单中选择“使用现有公钥”,以选择SSH公钥源,这样你就可以使用你刚生成的公钥。拿公钥粘贴到你的虚拟机设置里,方法是复制整个内容id_ed25519.pubSSH公钥中。你还想通过选择“允许选定端口”并从“选择入站端口”下拉菜单中选择SSH (22)来允许虚拟机接受入站SSH流量。

向虚拟机添加SSH公钥

自动关机

使用Azure虚拟机的一个酷功能是能够启用自动关机(毕竟,我们都忘了关闭虚拟机......)。如果你进入管理标签页,可以设置每天关闭虚拟机的时间。

虚拟机自动关机

选择“审核并创建”,然后选择创建,Azure 会帮你部署虚拟机!

部署完成后(可能需要几分钟),进入虚拟机的新资源视图。

使用 SSH 连接

既然你已经创建了一个SSH主机,让我们开始连接它吧!

你会注意到状态栏左下角有一个指示器。这个指示器告诉你 VS Code 在哪个上下文中运行(本地还是远程)。点击指示器可调出远程分机命令列表。

远程分机命令

Remote-SSH部分选择“连接主机......”命令,并通过输入虚拟机连接信息(格式如下)连接到主机:user@hostname.

用户是你在将SSH公钥添加到虚拟机时设置的用户名。对于主机名回到Azure门户,在你创建的虚拟机的概览窗格里复制公共IP地址

虚拟机公共IP地址

在远程连接 - SSH 之前,你可以通过命令提示符验证是否能连接到虚拟机,使用嘘user@hostname.

注意:如果你遇到错误SSH:连接到主机<主机IP>端口22:连接超时你可能需要从虚拟机的网络标签页删除NRMS-Rule-106:

NRMS 规则的虚拟机列表

在连接信息文本框中设置用户名和主机名。

设置用户名和主机名

VS Code 现在会打开一个新窗口(实例)。然后你会看到通知,说“VS Code Server”正在SSH主机上初始化。一旦VS Code服务器安装在远程主机上,它可以运行扩展并与你的本地VS Code实例通信。

初始化VS Code服务器

你可以通过状态栏里的指示器知道你已经连接到虚拟机。它显示的是你虚拟机的主机名。

状态栏中的SSH指示器

远程 - SSH 扩展还会在你的活动栏上添加一个新图标,点击它会打开远程资源管理器。在下拉菜单中选择SSH目标,在那里你可以配置你的SSH连接。例如,你可以保存你连接最多的主机,从这里访问,而无需输入用户和主机名。

活动栏上的遥控按钮

一旦连接到SSH主机,你可以与远程机器上的文件交互并打开文件夹。如果你打开集成终端(⌃'(Windows,Linux Ctrl+'),你会看到自己在 Windows 上工作时正在一个 bash shell 里工作。

在终端中检查uname。

你可以用 bash shell 浏览虚拟机上的文件系统。你还可以用“打开文件夹>浏览和打开远程家庭目录中的文件夹。

远程打开文件夹

创建您的Node.js申请

在这一步中,你将创建一个简单的Node.js应用。你会用应用生成器快速从终端导出应用。

安装Node.js和 NPM

在集成终端(⌃'(Windows,Linux Ctrl+')中更新 Linux 虚拟机中的包,然后安装包含 npm(Node.js包管理器)的 Node.js。

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

您可以通过以下方式验证安装情况:

node --version
npm --version

安装Express发电机

Express 是一个流行的框架,用于构建和运行Node.js应用程序。你可以用 Express Generator 工具为新的 Express 应用做支架(创建)。Express Generator 作为 npm 模块出厂,并通过 npm 命令行工具安装NPM.

sudo npm install -g express-generator

-gSwitch会在你的机器上全局安装Express Generator,这样你就可以随时随地运行它。

创建一个新应用

你现在可以创建一个新的 Express 应用程序,名为myExpress应用通过运行:

express myExpressApp --view pug

--View 巴哥犬参数告诉生成器使用PUG模板引擎。

要安装应用的所有依赖,进入新文件夹并运行NPM 安装.

cd myExpressApp
npm install

运行应用程序

最后,确保应用程序能够运行。从终端开始,使用以下方式启动应用程序NPM 启动命令启动服务器。

npm start

Express 应用默认运行在 http://localhost:3000 上。你在本地浏览器的localhost:3000中看不到任何东西,因为网页应用是在你的虚拟机上运行的。

端口转发

为了在本地机器上浏览网页应用,你可以利用另一个功能叫端口转发

为了访问远程机器上可能未公开的端口,你需要在本地机器的端口和服务器之间建立连接或隧道。应用仍在运行时,打开SSH资源管理器,找到“转发端口”视图。点击“转发端口”链接,表示你想转发端口3000:

进入端口以转发

连接名称为“浏览器”:

给港口命名

服务器现在会将端口3000的流量转发到你的本地机器。当你浏览到 http://localhost:3000 时,你会看到正在运行的网页应用。

运行快速应用

编辑与调试

从Visual Studio Code文件资源管理器(⇧⌘E(Windows,Linux Ctrl+Shift+E)中,导航到你的新文件myExpress应用文件夹并双击app.js文件后在编辑器中打开。

IntelliSense

JavaScript文件和IntelliSense的语法高亮都用了hovers,就像你看到源代码是否在本地机器上一样。

快速app.js悬停

当你开始输入时,会获得对象方法和属性的智能补全。

快速app.js智能完成

调试

在 的第10行设置断点app.js点击线号左侧的排水沟,或将光标放在线路上并按F9。断点会显示为红色圆圈。

设定断点

现在,按F5来运行你的申请。如果有人问你如何运行应用,请选择Node.js

应用会启动,你会遇到断点。你可以检查变量,创建监视,并导航调用栈。

F10步进,按F5继续调试。

VS Code 调试视图

你可以通过SSH获得Visual Studio Code的完整开发体验。

终止你的SSH连接

你可以通过SSH结束会话,然后回到本地运行VS Code,并>关闭远程连接文件。

恭喜你

恭喜你,已经成功完成了本教程!

接下来,看看其他远程开发扩展。

或者通过安装远程开发扩展包来获取全部。