你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cloud Shell 常见问题解答 (FAQ)

本文解答常见问题,并介绍如何排查 Cloud Shell 问题。

浏览器支持

Cloud Shell 支持以下最新版本的浏览器:

  • Microsoft Edge
  • Google Chrome
  • Mozilla Firefox
  • Apple Safari
    • 不支持专用模式下的 Safari。

复制和粘贴

用于复制和粘贴的键因操作系统和浏览器而异。 以下列表包含最常见的组合键:

  • Windows:Ctrl+c 复制,CTRL+Shift+vShift+Insert 粘贴。
    • FireFox 可能不会正确支持剪贴板权限。
  • macOS:按 Cmd+C 进行复制,按 Cmd+V 进行粘贴。
  • Linux:使用 Ctrl+c 进行复制,使用 Ctrl+Shift+v 进行粘贴。

注意

如果在键入 Ctrl+C 时未选择任何文本,Cloud Shell 会将 Ctrl-c 字符发送到 shell。 shell 可以将 Ctrl-c 解释为中断信号并终止当前运行的命令。

常见问题

Cloud Shell 会话是否有时间限制?

Cloud Shell 适用于交互式用例。 Cloud Shell 会话将在 20 分钟没有交互活动后超时。 因此,任何长时间运行的非交互式会话都会在没有预警的情况下终止。

Cloud Shell 是一项免费服务,用于管理 Azure 环境。 这不是常规用途计算平台。 过度使用可能会被视为违反 Azure 服务条款,这会导致你无法访问 Cloud Shell。

可以打开多少个并发会话?

Azure Cloud Shell 的每个租户的并发用户数限制为 20 个。 同时打开 20 个以上的会话会产生“租户用户超过配额”错误。 如果你有合理需求要打开 20 多个会话(例如用于训练会话),请在预期使用日期前联系支持人员以请求增加配额。

我在 Cloud Shell 中创建了一些文件,但它们已消失。 发生了什么情况?

提供 Cloud Shell 会话的计算机是暂时性的,在会话处于非活动状态 20 分钟后会被回收。

首次启动 Cloud Shell 时,系统会提示你选择存储选项。

  • 如果你选择“装载存储帐户”选项,Cloud Shell 会将 Azure 文件共享装载到会话中的 clouddrive 文件夹。 在 Azure 门户中使用存储浏览器可以看到存储在 clouddrive 文件夹中的文件。 在切换不同的会话后,存储在 clouddrive 文件夹中的文件仍会保存。

  • 如果你选择“无需存储帐户”选项,则只能将文件写入 $HOME 文件夹。

在这两种情况下,都可以将文件写入 $HOME 文件夹。 但是,$HOME 文件夹仅存在于你当前正在使用的 Cloud Shell 容器映像中。 $HOME 文件夹中的文件在存储浏览器中不可见,并且在会话结束后将被删除。

我在 Azure: 驱动器中创建了一个文件,但看不到该文件。 发生了什么情况?

Cloud Shell 会加载适用于 Azure 的 PowerShell 提供程序,该提供程序将 Azure 资源数据呈现为文件系统驱动器。 PowerShell 用户可以使用 Azure: 驱动器访问 Azure 资源。 Azure: 驱动器是一个虚拟驱动器,不允许创建文件。

当前位置是 Azure: 驱动器时,你使用其他工具(如 vimnano)创建新文件的文件将保存到 $HOME 文件夹中。

我想在 Cloud Shell 中安装需要 sudo 的工具。 这样可以吗?

不是。 Cloud Shell 中的用户帐户是一个无特权帐户。 不能使用 sudo 或运行任何需要提升权限的命令。

排查错误

存储对话框 - 错误:403 RequestDisallowedByPolicy

  • 详细信息:为首次用户创建 Cloud Shell 存储帐户时,由于管理员设置的 Azure Policy 分配而失败。错误消息中包含:

    The resource action 'Microsoft.Storage/storageAccounts/write' is disallowed by
    one or more policies.
    
  • “解决方法”:与 Azure 管理员联系,让其删除或更新拒绝存储创建的 Azure Policy 分配。

存储对话框 - 错误:400 DisallowedOperation

  • 详细信息:使用 Microsoft Entra 订阅时无法创建 Cloud Shell 存储帐户。
  • 解决方法:Microsoft Entra ID 订阅无法创建 Azure 资源。 使用能够创建存储资源的 Azure 订阅。

终端输出 - 错误:无法连接终端

  • 详细信息:Cloud Shell 需要能够与 Cloud Shell 基础结构建立 websocket 连接。
  • 解决方法:确认网络允许向以下域发送 HTTPS 和 websocket 请求:
    • *.console.azure.com
    • *.servicebus.windows.net
    • Azure 政府云:*.servicebus.usgovcloudapi.net

无法请求终端 - 从使用专用 DNS 解析程序的网络访问 Cloud Shell

  • 详细信息:Cloud Shell 使用 Azure 中继进行终端连接。 由于 DNS 解析问题,Cloud Shell 无法请求终端。 从具有 servicebus 域专用 DNS 区域的网络中的主机启动 Cloud Shell 会话时,可能会导致此故障。 如果使用专用本地 DNS 服务器,也可能发生此错误。

  • 解决方案:可以为 Cloud Shell 使用的 Azure 中继实例添加 DNS 记录。

    以下步骤演示如何标识 Cloud Shell 实例的 DNS 名称以及如何为该名称创建 DNS 记录。

    1. 尝试使用 Web 浏览器启动 Cloud Shell。 使用浏览器的开发人员工具查找 Azure 中继实例名称。 在 Microsoft Edge 或 Google Chrome 中,按 F12 键打开开发人员工具。 选择“网络”选项卡。在右上角找到“搜索”框。 搜索 terminals? 查找 Cloud Shell 终端的请求。 选择搜索找到的请求条目之一。 在“标头”选项卡中,在“请求 URL”中找到主机名。 该名称类似于 ccon-prod-<region-name>-aci-XX.servicebus.windows.net。 对于 Azure 政府云,主机名以 servicebus.usgovcloudapi.net 结尾。

      以下屏幕截图显示了 Microsoft Edge 中用于成功请求终端的开发人员工具。 主机名为 ccon-prod-southcentalus-aci-02.servicebus.windows.net。 在这种情况下,请求应会失败,但你可以找到需要解析的主机名。

      浏览器开发人员工具的屏幕截图。

      有关在其他浏览器中访问开发人员工具的信息,请参阅捕获浏览器跟踪以进行故障排除

    2. 从专用网络外部的主机运行 nslookup 命令,找到上一步中找到的主机名的 IP 地址。

      nslookup ccon-prod-southcentalus-aci-02.servicebus.windows.net
      

      最终结果应类似于下面的例子:

      Server:         168.63.129.16
      Address:        168.63.129.16
      
      Non-authoritative answer:
      ccon-prod-southcentralus-aci-02.servicebus.windows.net  canonical name = ns-sb2-prod-sn3-012.cloudapp.net.
      Name:   ns-sb2-prod-sn3-012.cloudapp.net
      Address: 40.84.152.91
      
    3. 在专用网络的专用 DNS 区域中为公共 IP 添加 A 记录。 在此示例中,DNS 记录将具有以下属性:

      • 名称:ccon-prod-southcentralus-aci-02
      • 类型:A
      • TTL:1 小时
      • IP 地址:40.84.152.91

      有关在专用 DNS 区域中创建 DNS 记录的详细信息,请参阅使用 Azure DNS 管理 DNS 记录集和记录

      注意

      此 IP 地址可能会定期更改。 可能需要重复此过程才能发现新的 IP 地址。

    或者,可以部署你自己的私有云 Shell 实例。 有关详细信息,请参阅在虚拟网络中部署 Cloud Shell

终端输出 - 抱歉,Cloud Shell 未能预配:{"code":"TenantDisabled" ...}

  • 详细信息:在极少数情况下,Azure 可能会将 Cloud Shell 中的异常资源消耗标记为欺骗性的活动。 发生这种情况时,Azure 在租户级别禁用 Cloud Shell,你可看到以下错误消息:

    抱歉,Cloud Shell 未能预配:{"code":"TenantDisabled","message":" Cloud Shell 已在目录中禁用<>。"} 请刷新页面。

    在一些合法用例中,Azure Cloud Shell 实例中的 CPU 使用率超出了触发欺诈防护并阻止租户的阈值。 大型 AZCopy 作业可能是导致此事件的原因。 Microsoft Azure 工程团队可帮助找出租户被禁用的原因并重新启用它。

  • 解决方法:若要调查原因并为租户重新启用 Cloud Shell,请提出新的 Azure 支持请求。 包括以下详细信息:

    1. 租户 ID
    2. 业务理由和如何使用 Cloud Shell 的说明。

管理 Cloud Shell

管理个人数据

Microsoft Azure 会认真对待你的个人数据。 Azure Cloud Shell 服务存储有关 Cloud Shell 存储和终端首选项的信息。 可以使用以下示例之一查看此信息。

  • 从 bash 命令提示符运行以下命令:

    URL="https://management.azure.com/providers/Microsoft.Portal/usersettings/cloudconsole?api-version=2017-12-01-preview"
    az rest --method get --url $URL
    
  • 从 PowerShell 命令提示符运行以下命令:

    $invokeAzRestMethodSplat = @{
        Uri    = 'https://management.azure.com/providers/Microsoft.Portal/usersettings/cloudconsole?api-version=2017-12-01-preview'
        Method = 'GET'
    }
    $userdata = (Invoke-AzRestMethod @invokeAzRestMethodSplat).Content
    ($userdata | ConvertFrom-Json).properties | Format-List
    

可以通过重置用户设置来删除此个人数据。 重置用户设置将终止当前会话并卸载链接的存储帐户。 Cloud Shell 使用的 Azure 文件共享不会被删除。

重新连接到 Cloud Shell 时,系统会提示你附加存储帐户。 可以创建新的存储帐户,或重新附加之前使用的现有存储帐户。

使用以下步骤删除用户设置。

  1. 启动 Cloud Shell。
  2. 从 Cloud Shell 工具栏中选择“设置”菜单(齿轮图标)。
  3. 从菜单中选择“重置用户设置”。
  4. 选择“重置”按钮以确认操作。

在锁定的网络环境中阻止 Cloud Shell

  • 详细信息:管理员可能希望禁止其用户访问 Cloud Shell。 Cloud Shell 依赖于对 ux.console.azure.com 域的访问(可被拒绝),从而停止对 Cloud Shell 入口点的任何访问,包括 portal.azure.comshell.azure.com、Visual Studio Code Azure 帐户扩展和 learn.microsoft.com。 在美国政府云中,入口点为 ux.console.azure.us;没有相应的 shell.azure.us
  • 解决方法:限制从网络访问 ux.console.azure.comux.console.azure.us。 Cloud Shell 图标仍存在于 Microsoft Azure 门户中,但无法连接到该服务。