注意
本文中引用的 CentOS 是 Linux 分发版,将达到生命周期结束(EOL)。 请相应地考虑使用和规划。 有关详细信息,请参阅 CentOS 生命周期指南。
适用于: .NET Core 2.1、.NET Core 3.1、.NET 5
本部分的目标
此培训的这一部分适用于没有任何 Linux 体验的用户。 它涵盖以下主题:
如何使用 Windows Azure 创建 Linux 虚拟机。
注意
如果已在训练中使用 Linux 虚拟机,则可以跳过此步骤。
如何从基于 Windows 的计算机连接到 Linux 虚拟机。
如何在 Linux 中工作时管理基本任务,例如创建和删除文件和文件夹、以特权用户身份运行命令以及使用包管理器安装应用程序。
为了确保本指南中的所有实验室按预期工作,建议使用 Ubuntu 18.04 LTS 分发版,因为这是用于创建实验室的分发版。
本部分(1.1)包含以下步骤:
如果你熟悉 Linux,你可能想要完全跳过此部分,直接转到 第 1.2 部分 - Linux 特殊目录、提升的用户和包管理器。
在 Windows Azure 中创建 Linux 虚拟机
你的第一个决定是要使用的 Linux 分发版。 Linux 操作系统有不同的风格和发行版,通常称为“发行版”。 根据此 Linux 文档项目文章,不同分发版之间存在许多相似之处。 此系列中使用的命令对于每个 Linux 发行版几乎都是相同的,尽管安装包管理器可能有所不同。 但是,无论使用的发行版如何,常规说明都将相同。
注意
如 Azure 中的 Linux 虚拟机中所述,Microsoft Azure 支持由合作伙伴提供和维护的几种常用 Linux 分发版。 可以在 Azure 市场中找到 Red Hat Enterprise、CentOS、SUSE Linux Enterprise、Debian、Ubuntu、CoreOS、RancherOS、FreeBSD 等分发版。
在 Azure 中创建 Linux 虚拟机的说明在快速入门中明确说明:在Azure 门户中创建 Linux 虚拟机。
注意
本文还介绍了如何连接到虚拟机并安装 Nginx Web 服务器。 选择遵循这些说明并安装 Nginx。 但是,由于下一部分介绍了 Nginx 安装和配置,因此你不必确定这一点。
本教程不会复制这些步骤,因为说明已足够清晰。 但是,必须重点介绍有关如何创建虚拟机的一些要点。
身份验证
创建虚拟机时,可以从以下类型的身份验证中进行选择:
- 使用密码进行连接
- 使用 SSH 公钥进行连接
尽管在此训练的上下文中可以使用密码身份验证,但建议使用 SSH 公钥 选项,因为它提供更好的安全性。 此外,在连接到 Linux 虚拟机时,本指南默认使用此选项。
Azure 会为你自动生成 SSH 密钥对,并允许将其保存到磁盘,以便稍后连接到 Linux 虚拟机时可以使用它。 此操作简化了连接过程。
创建管理员帐户时, 选择 SSH 公钥 并 生成新的密钥对 选项。
对于“ 用户名 ”字段,可以选择在创建虚拟机时提供的名称之间选择所需的名称。
入站端口规则
若要启用与新创建的虚拟机的连接,请选择 SSH 和 HTTP 来获取入站端口规则。 这是因为你将使用 SSH 协议连接到虚拟机,并且访问 Linux 上运行的 ASP.NET Core 应用程序时,将使用 HTTP 协议。
保存私钥
由于选择了 SSK 公钥选项,因此在创建虚拟机时会看到以下消息:
生成新密钥对
选择“ 下载私钥”并创建资源,然后将私钥保存到本地磁盘。 文件的扩展名为 .pem (隐私增强邮件)。
注意
连接到 Linux 虚拟机时,可以使用私钥打开门。 因此,不应与其他人员共享此密钥。
确定 IP 地址
创建虚拟机后,转到资源页,确定并记下虚拟机的公共 IP 地址。 你将使用此 IP 地址连接到虚拟机。
注意
建议使用静态 IP 地址,因为在测试期间可能需要重新启动计算机。 使用动态公共 IP 将导致重启虚拟机后将另一个 IP 地址分配给虚拟机。
连接到 Linux 虚拟机
有了 Linux 虚拟机并了解其 IP 地址后,还可以使用 SSH 公钥身份验证对私钥进行身份验证,并且可以登录。 最好是讨论连接到 Linux 虚拟机时会遇到的一些术语。
不会使用 GUI 连接到和管理 Linux 虚拟机。 相反,你将使用终端进行连接,并使用 shell 来运行命令。
UNIX 终端
术语“终端”基于占用整个房间的早期计算机模型,并通过打卡阅读器和后来的键盘在物理终端上控制。 如今,终端是物理终端的软件表示形式。 例如,PuTTY 是一个终端。
UNIX shell
UNIX shell 是用户和类似 UNIX 的操作系统之间的接口。 一旦用户登录到系统,用户就会在 shell 中。 shell 提供了一个命令行解释器(CLI),该解释器读取并运行命令和脚本以控制系统,然后显示生成的输出。
shell 也称为“命令行”或“终端”,这些术语可互换。 shell 提供了一些可用于编写脚本的命令和编程语言。 有几种不同的 shell 实现。 包括流行的巴什。
本文介绍以下连接选项:
- 使用 PowerShell SSH 终端
- 使用 PuTTy SSH 终端
使用 PowerShell SSH 终端进行连接
如果在 Windows 10 版本 1809 或更高版本上运行,可以使用内置的 PowerShell SSH 客户端。 若要连接到虚拟机,请打开 PowerShell,并按以下格式运行 SSH 命令:
ssh -i <path to .pem private key file> <user>@<host>
例如:
ssh -i d:\Learn\Linux\myPrivateKey.pem <UserName>@127.0.0.1
如果以前从未连接到此服务器,将收到以下警告消息:
无法建立主机“HostName>”<的真实性。
如果输入 是,将收到以下更多警告:
实质上,SSH 客户端希望私钥“更专用”。 换句话说,连接到的计算机上的其他用户可以访问 .pem 文件中包含的私钥。 预期只有初始化与 Linux 虚拟机的连接的用户才能访问私钥。
若要解决此问题,请更改对该私钥文件的权限。 为此,请按照下列步骤进行操作:
找到并右键单击私钥文件,选择“属性”,然后选择“安全”选项卡。在此示例中,你将看到继承自该文件夹的以下权限。
对于此示例,你只 希望 SYSTEM 组和帐户有权访问此文件。 由于权限是从文件夹中继承的,因此必须先禁用该继承,然后才能编辑权限。 选择“高级”,然后选择“禁用继承”。 出现以下问题时,系统会提示你:
对当前继承的权限有何用?
选择“ 将继承的权限转换为对此对象的显式权限”。
删除除 SYSTEM 在内的所有组,然后添加自己的帐户。 以下是为私钥授予的最终权限。
再次尝试使用同一 SSH 命令进行连接。 这一次,应在没有任何错误的情况下建立连接。
使用 PuTTY 进行连接
PuTTY 是连接到 Linux 虚拟机的最常用终端之一。 可以在客户端计算机上免费下载并安装 适用于 Windows 的 PuTTY。
PuTTY 易于使用。 但是,请记住,PuTTY 不接受私钥的 PEM 格式。 因此,你必须将密钥转换为 PuTTY 期望看到的格式(PPK)。 幸运的是,转换 PEM 格式也很简单,因为 PuTTY 密钥生成器(PuTTYgen)与终端软件一起安装。
若要转换文件,请执行以下步骤:
启动 PuTTYgen,并确保 选择 RSA 作为要生成的密钥类型。
选择“加载”以选择扩展名为 .pem 的私钥文件。
请确保 已选择“所有文件” ,因为 PuTTYgen 的默认选择是 PPK。
找到并打开所需的 PEM 文件。 应会看到以下消息,指示 PuTTYgen 能够导入密钥。 现在,可以使用 PPK 格式保存私钥。
选择“确定”,然后选择“保存私钥”:
PuTTYgen 将提示你确认要保存密钥而不使用通行短语。 选择“是”,并将私钥保存为 PPK 格式。
现在,可以使用 PPK 文件连接到虚拟机。
启动 PuTTY。 你将使用相同的 <用户名>@<host |连接信息的 IP 地址> 格式。 可以保存此会话信息,以便稍后重复使用。 以下屏幕截图显示了 保存当前会话后 PuTTY 配置 对话框。 对话框在 username>@<host 中<显示主机信息 |从可用列表中选择 IP 地址>格式和会话名称之后。
由于使用的是 SSH 公钥身份验证,因此必须告知 PuTTY 在何处查找私钥。 为此,请展开 SSH,然后在“类别”窗格中选择“身份验证”,然后选择“浏览”。
找到并选择使用 PuTTYgen 创建的 PPK 文件。
选择“打开”以启动会话。
注意
首次连接到虚拟机时,会收到以下警告消息:
服务器的主机密钥不会缓存在注册表中。 你不能保证服务器是你认为它的计算机。
此消息类似于首次使用 PowerShell 中的 SSH 客户端连接到虚拟机时生成的消息。
选择“是”以连接到虚拟机。
注意
对于这些教程的其余部分,你将使用 PowerShell SSH 连接到虚拟机。
后续步骤
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。