适用于 Linux 的 Azure 串行控制台

适用于:✔️ Linux VM

注意

本文中引用的 CentOS 是 Linux 分发版,将达到生命周期结束(EOL)。 请相应地考虑使用和规划。 有关详细信息,请参阅 CentOS 生命周期指南

Azure 门户中的串行控制台提供对 Linux 虚拟机(VM)和虚拟机规模集实例的基于文本的控制台的访问权限。 此串行连接连接到 VM 或虚拟机规模集实例的 ttys0 串行端口,从而提供独立于网络或操作系统状态的访问。 串行控制台只能通过使用 Azure 门户来访问,并且仅供具有参与者访问角色或高于 VM 或虚拟机规模集的用户使用。

串行控制台的工作方式与 VM 和虚拟机规模集实例的工作方式相同。 在本文档中,除非另有说明,否则所有对 VM 的提及都将隐式包含虚拟机规模集实例。

串行控制台在全局 Azure 区域和 Azure 政府 的公共预览版中正式发布。 它在 Azure 中国云中尚不可用。

有关适用于 Windows 的串行控制台文档,请参阅 适用于 Windows 的串行控制台。

注意

串行控制台与托管启动诊断存储帐户兼容。

先决条件

  • VM 或虚拟机规模集实例必须使用资源管理器部署模型。 不支持经典部署。

  • 使用串行控制台的 Azure 帐户必须对 VM 和启动诊断存储帐户拥有虚拟机参与者角色

  • VM 或虚拟机规模集实例必须具有基于密码的用户。 可以使用 VM 访问扩展的重置密码功能创建一个帐户。 从“帮助”部分选择“重置密码”。

  • VM 或虚拟机规模集实例必须 启用启动诊断

    Azure 门户“诊断设置”页的屏幕截图。已启用启动诊断选项。

  • 有关特定于 Linux 分发版的设置,请参阅串行控制台 Linux 分发版可用性

  • 必须为 VM 或虚拟机规模集实例配置串行输出 ttys0。 这是 Azure 映像的默认值,但需要对自定义映像进行仔细检查。 下面的详细信息

注意

串行控制台需要一个配置了密码的本地用户。 仅使用 SSH 公钥配置的 VM 或虚拟机规模集将无法登录到串行控制台。 若要创建带有密码的本地用户,请使用 VMAccess 扩展(在 Azure 门户中选择“重置密码”即可访问它),然后创建带有密码的本地用户。 也可在帐户中重置管理员密码,方法是使用 GRUB 启动进入单用户模式

串行控制台 Linux 分发可用性

要使串行控制台正常运行,必须将来宾操作系统配置为向串行端口读取和写入控制台消息。 大多数认可的 Azure Linux 分发版默认都已配置串行控制台。 在Azure 门户的“帮助”部分中选择串行控制台可提供对串行控制台的访问权限。

注意

如果在串行控制台中没有看到任何内容,请确保在 VM 上启用了启动诊断。 点击 Enter 通常会修复串行控制台中未显示任何内容的问题。

分发 串行控制台访问
Red Hat Enterprise Linux 默认已启用串行控制台访问。
CentOS 默认已启用串行控制台访问。
Debian 默认已启用串行控制台访问。
Ubuntu 默认已启用串行控制台访问。
CoreOS 默认已启用串行控制台访问。
SUSE Azure 上可用的 SLES 映像默认启用了串行控制台访问。
Oracle Linux 默认已启用串行控制台访问。

自定义 Linux 映像

若要为自定义 Linux VM 映像启用串行控制台,请在文件 /etc/inittab 中启用控制台访问,以便在 ttyS0 上运行终端。 例如:S0:12345:respawn:/sbin/agetty -L 115200 console vt102。 你可能还需要在 ttyS0 上生成 GettyS0。 这可以通过 systemctl start serial-getty@ttyS0.service.

还需要将 ttys0 添加为串行输出的目标。 有关配置自定义映像以使用串行控制台的详细信息,请参阅在 Azure 中创建和上传 Linux VHD 时的常规系统要求

如果你正在生成自定义内核,请考虑启用以下内核标志:CONFIG_SERIAL_8250=yCONFIG_MAGIC_SYSRQ_SERIAL=y。 配置文件通常位于 /boot/ 路径。

访问串行控制台的常见方案

场景 串行控制台中的操作
FSTAB 文件受损 Enter 键继续,然后使用文本编辑器修复 FSTAB 文件。 可能需要在单用户模式下执行此操作。 有关详细信息,请参阅有关如何修复 fstab 问题的串行控制台部分,并使用串行控制台访问 GRUB 和单用户模式
错误的防火墙规则 如果已将 iptable 配置为阻止 SSH 连接,则可以使用串行控制台与 VM 交互,而无需 SSH。 可以在 iptables man 页面找到更多详细信息。
同样,如果防火墙阻止 SSH 访问,则可以通过串行控制台访问 VM 并重新配置防火墙。 可以在防火墙文档中找到更多详细信息。
文件系统损坏/检查 有关使用串行控制台排查损坏文件系统的更多详细信息,请参阅 Azure Linux VM 的 串行控制台部分无法启动
SSH 配置问题 访问串行控制台并更改设置。 无论 VM 的 SSH 配置如何,都可以使用串行控制台,因为它不需要 VM 具有网络连接才能正常工作。 排查与 Azure Linux VM 的 SSH 连接失败、出错或被拒绝的问题时提供了故障排除指南。 有关连接到 Azure 中 Linux VM 的问题的详细 SSH 故障排除步骤中提供了 更多详细信息
与引导加载程序交互 从串行控制台边栏选项卡中重启 VM 以访问 Linux VM 上的 GRUB。 有关更多详细信息和特定于发行版的信息,请参阅 使用串行控制台访问 GRUB 和单用户模式

禁用串行控制台

默认情况下,所有订阅都启用了串行控制台访问。 可以在订阅级别或 VM/虚拟机规模集级别禁用串行控制台。 有关详细说明,请访问启用和禁用 Azure 串行控制台

串行控制台安全性

将串行控制台与启用自定义启动诊断存储帐户防火墙配合使用

串行控制台使用在其连接工作流中为启动诊断配置的存储帐户。 在此存储帐户上启用防火墙时,必须将串行控制台服务 IP 添加为排除项。 为此,请按照下列步骤进行操作:

  1. 导航到已启用的自定义启动诊断存储帐户防火墙的设置。

    注意

    若要确定为 VM 启用哪个存储帐户,请从“支持 + 故障排除”部分选择“启动诊断>设置”。

  2. 根据 VM 的地理位置将串行控制台服务 IP 添加为防火墙排除项。

    下表列出了需要根据 VM 所在的区域或地理位置作为防火墙排除项的 IP。 这是 SerialConsole 服务标记中使用的串行控制台 IP 地址的完整列表的子集。 可以通过 SerialConsole 服务标记限制对启动诊断存储帐户的访问。 服务标记没有区域分隔。 服务标记上的流量仅为入站流量,串行控制台不会生成到客户可控目标的流量。 尽管 Azure 存储帐户防火墙目前不支持服务标记, 但可以通过编程方式使用 SerialConsole 服务标记来确定 IP 列表。 有关服务标记的详细信息,请参阅虚拟网络服务标记

    注意

    只有一个区域(例如意大利北部)的 VM 不支持串行控制台的存储帐户防火墙。

    IP 地址 区域 地区
    102.37.86.194 南非北部、南非西部 非洲
    20.87.80.28 南非北部、南非西部 非洲
    20.205.69.28 东亚、东南亚 AsiaPacific
    20.195.85.180 东亚、东南亚 AsiaPacific
    20.53.53.224 澳大利亚中部、澳大利亚中部 2、澳大利亚东部、澳大利亚东南部 澳大利亚
    20.70.222.112 澳大利亚中部、澳大利亚中部 2、澳大利亚东部、澳大利亚东南部 澳大利亚
    191.234.136.63 巴西南部、巴西东南部 巴西
    20.206.0.194 巴西南部、巴西东南部 巴西
    52.228.86.177 加拿大中部、加拿大东部 加拿大
    52.242.40.90 加拿大中部、加拿大东部 加拿大
    20.45.242.18 Canary (EUAP)
    20.51.21.252 Canary (EUAP)
    52.146.139.220 欧洲北部、欧洲西部 欧洲
    20.105.209.72 欧洲北部、欧洲西部 欧洲
    20.111.0.244 法国中部、法国南部 法国
    52.136.191.10 法国中部、法国南部 法国
    51.116.75.88 德国北部、德国中西部 德国
    20.52.95.48 德国北部、德国中西部 德国
    20.192.168.150 印度中部、印度南部、印度西部 印度
    20.192.153.104 印度中部、印度南部、印度西部 印度
    20.43.70.205 日本东部、日本西部 日本
    20.189.228.222 日本东部、日本西部 日本
    20.200.196.96 韩国中部、韩国南部 韩国
    52.147.119.29 韩国中部、韩国南部 韩国
    20.100.1.184 挪威西部、挪威东部 挪威
    51.13.138.76 挪威西部、挪威东部 挪威
    20.208.4.98 瑞士北部、瑞士西部 瑞士
    51.107.251.190 瑞士北部、瑞士西部 瑞士
    20.45.95.66 阿拉伯联合酋长国中部、阿拉伯联合酋长国北部 阿联酋
    20.38.141.5 阿拉伯联合酋长国中部、阿拉伯联合酋长国北部 阿联酋
    20.90.132.144 英国南部、英国西部 UnitedKingdom
    20.58.68.62 英国南部、英国西部 UnitedKingdom
    51.12.72.223 瑞典中部、瑞典南部 瑞典
    51.12.22.174 瑞典中部、瑞典南部 瑞典
    20.98.146.84 美国中部、美国东部 2、美国东部、美国中北部、美国中南部、美国西部 2、美国西部 3、美国中西部、美国西部、美国西部 美国
    20.98.194.64 美国中部、美国东部 2、美国东部、美国中北部、美国中南部、美国西部 2、美国西部 3、美国中西部、美国西部、美国西部 美国
    20.69.5.162 美国中部、美国东部 2、美国东部、美国中北部、美国中南部、美国西部 2、美国西部 3、美国中西部、美国西部、美国西部 美国
    20.83.222.102 美国中部、美国东部 2、美国东部、美国中北部、美国中南部、美国西部 2、美国西部 3、美国中西部、美国西部、美国西部 美国
    20.83.222.100 美国中部、美国东部 2、美国东部、美国中北部、美国中南部、美国西部 2、美国西部 3、美国中西部、美国西部、美国西部 美国
    20.141.10.131 所有美国政府云区域 UsGov
    52.235.252.253 所有美国政府云区域 UsGov
    143.64.47.39 中国北部 3 中国
    163.228.70.115 中国东部 3 中国

    重要

    • 需要允许的 IP 特定于 VM 所在的区域。 例如,部署在北欧区域的虚拟机需要向欧洲地理位置的存储帐户防火墙添加以下 IP 排除项:52.146.139.220 和 20.105.209.72。 查看上表,查找区域和地理位置的正确 IP。
    • 在当前的串行控制台操作中,Web 套接字将打开到终结点,例如 <region>.gateway.serialconsole.azure.com。 确保允许组织中的浏览器客户端使用终结点 serialconsole.azure.com 。 在美国政府(Fairfax)云中,终结点后缀为 serialconsole.azure.us

    有关如何将 IP 添加到存储帐户防火墙的详细信息,请参阅配置Azure 存储防火墙和虚拟网络:管理 IP 网络规则

成功将 IP 地址添加到存储帐户防火墙后,请重试与 VM 的串行控制台连接。 如果仍存在连接问题,请验证 VM 区域的存储帐户防火墙中是否排除了正确的 IP 地址。

访问安全性

只允许对虚拟机拥有虚拟机参与者或更高权限访问角色的用户访问串行控制台。 如果Microsoft Entra 租户需要多重身份验证(MFA),则访问串行控制台也需要 MFA,因为串行控制台的访问是通过Azure 门户

通道安全性

使用 TLS 1.2 或更高版本在传输中加密发送的所有数据。

数据存储和加密

Azure 串行控制台不会查看、检查或存储传入和传出虚拟机串行端口的任何数据。 因此,没有静态加密的数据。

若要确保对运行 Azure 串行控制台的虚拟机分页到磁盘的任何内存中数据进行加密,请使用基于主机的 加密。 默认情况下,为所有 Azure 串行控制台连接启用基于主机的加密。

数据驻留

Azure 门户或 Azure CLI 充当虚拟机串行端口的远程终端。 由于这些终端无法直接连接到通过网络托管虚拟机的服务器,因此中间服务网关用于代理终端流量。 Azure 串行控制台不会存储或处理此客户数据。 传输数据的中间服务网关将驻留在虚拟机的地理位置中。

审核日志

对串行控制台的所有访问目前都会记录在虚拟机的启动诊断日志中。 对这些日志的访问由 Azure 虚拟机管理员拥有和控制。

注意

不会记录控制台的访问密码。 但是,如果在控制台中运行的命令包含或输出密码、机密、用户名或其他任何形式的个人身份信息 (PII),则这些信息将写入到 VM 启动诊断日志。 它们将与所有其他可见文本一起编写,作为串行控制台回滚函数实现的一部分。 这些日志是循环的,只有对诊断存储帐户具有读取权限的个人才能访问这些日志。 如果要输入包含机密或 PII 的任何数据或命令,我们建议使用 SSH,除非绝对需要串行控制台。

并发使用

如果某个用户已连接到串行控制台,而另一个用户已成功请求访问同一个虚拟机,则第一个用户将断开连接,第二用户此时已连接到同一会话。

注意

这意味着不会注销已断开连接的用户。在断开连接时强制注销(通过使用 SIGHUP 或类似机制)的功能仍在路线图中。 对于 Windows,特殊管理控制台(SAC)中启用了自动超时;但是,对于 Linux,可以配置终端超时设置。 为此,请将 export TMOUT=600 添加到用于登录控制台的用户的 .bash_profile.profile 中。 此设置使会话在 10 分钟后超时。

辅助功能

辅助功能是 Azure 串行控制台的重点。 为此,我们会确保串行控制台的完全可访问性。

键盘导航

使用键盘上的 Tab 键从Azure 门户导航到串行控制台接口。 你的位置将在屏幕上突出显示。 若要使焦点离开串行控制台窗口,请在键盘上按 Ctrl+F6

将串行控制台与屏幕阅读器配合使用

串行控制台内置了屏幕阅读器支持。 在打开屏幕阅读器的情况下导航,屏幕阅读器可大声读出当前所选按钮的替换文字。

已知问题

我们注意到,串行控制台和 VM 的操作系统存在一些问题。 下面列出了 Linux VM 的这些问题和缓解步骤。 这些问题和缓解措施适用于 VM 和虚拟机规模集实例。 如果这些错误与你看到的错误不匹配,请参阅常见串行控制台错误处的常见串行控制台服务错误。

问题 缓解操作
在出现连接标题后按 Enter 不会显示登录提示。 可能无法正确配置 GRUB。 运行以下命令: grub2-mkconfig -o /etc/grub2-efi.cfg 和/或 grub2-mkconfig -o /etc/grub2.cfg。 如果运行的是自定义 VM、强化设备或 GRUB 配置,导致 Linux 无法连接到串行端口,则可能会出现此问题。
串行控制台文本仅占用屏幕大小的一部分(通常在使用文本编辑器后)。 串行控制台不支持就窗口大小(RFC 1073)进行协商,这意味着不会发送 SIGWINCH 信号来更新屏幕大小,并且 VM 将不知道终端的大小。 安装可提供 resize 命令的 xterm 或类似实用工具,然后运行 resize
无法粘贴长字符串。 串行控制台将粘贴到终端的字符串长度限制为 2048 个字符,以防止串行端口带宽过载。
SLES BYOS 图像中的不稳定键盘输入。 键盘输入只是偶尔识别的。 这是普利茅斯包的问题。 Plymouth 不应在 Azure 中运行,因为不需要初始屏幕,Plymouth 会干扰平台使用串行控制台的能力。 删除普利茅斯, sudo zypper remove plymouth 然后重新启动。 或者,通过追加 plymouth.enable=0 到行末尾来修改 GRUB 配置的内核行。 为此,可以在 启动时编辑启动项,也可以编辑GRUB_CMDLINE_LINUX行, /etc/default/grub使用 grub2-mkconfig -o /boot/grub2/grub.cfgGRUB 重新生成 GRUB,然后重新启动。

常见问题解答

问: 如何发送反馈?

A. 可以通过在 https://aka.ms/serialconsolefeedback 中创建 GitHub 问题来提供反馈。 也可以通过 azserialhelp@microsoft.com,或者 https://feedback.azure.com 上的虚拟机类别发送反馈(不太建议)。

问: 串行控制台是否支持复制/粘贴?

A. 是的。 可以使用 Ctrl+Shift+CCtrl+Shift+V 复制并粘贴到终端。

问: 是否可以使用串行控制台替代 SSH 连接?

A. 虽然从技术上讲这种用法是可行的,但串行控制台主要用作无法通过 SSH 进行连接时的故障排除工具。 不建议使用串行控制台替代 SSH 的原因如下:

  • 串行控制台的带宽不如 SSH 那样大。 由于它是仅限文本的连接,因此很难进行大量的 GUI 交互。
  • 目前只能使用用户名和密码访问串行控制台。 由于 SSH 密钥比用户名/密码组合安全得多,因此,从登录安全性的立场,我们建议使用 SSH 而不是串行控制台。

问: 谁可以为我的订阅启用或禁用串行控制台?

A. 若要在订阅范围级别启用或禁用串行控制台,必须拥有订阅的写入权限。 拥有写入权限的角色包括管理员或所有者角色。 自定义角色也可能具有写入权限。

问: 谁可以访问 VM/虚拟机规模集的串行控制台?

A. 必须具有 VM 或虚拟机规模集的虚拟机参与者角色或更高版本才能访问串行控制台。

问: 我的串口控制台未显示任何内容,该怎么办?

A. 你的映像可能配置错误,无法进行串行控制台访问。 有关配置映像以启用串行控制台的详细信息,请参阅串行控制台 Linux 分发版可用性

问: 串行控制台是否可用于虚拟机规模集?

A. 是的! 请参阅 串行控制台入门。

问: 如果我仅使用 SSH 密钥身份验证来设置 VM 或虚拟机规模集,我仍可以使用串行控制台连接到 VM/虚拟机规模集实例吗?

A. 是的。 由于串行控制台不需要 SSH 密钥,因此你只需设置用户名/密码组合。 为此,可以在 Azure 门户中选择“重置密码”,然后使用这些凭据登录到串行控制台。

后续步骤

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区