你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文解答常见问题,并介绍如何排查 Cloud Shell 问题。
浏览器支持
Cloud Shell 支持以下最新版本的浏览器:
- Microsoft Edge
- 谷歌浏览器
- Mozilla Firefox
- Apple Safari
- 不支持专用模式下的 Safari。
复制和粘贴
用于复制和粘贴的键因操作系统和浏览器而异。 以下列表包含最常见的组合键:
- Windows: 按 Ctrl+c 复制并 按住 Ctrl+v 或 Shift+Insert 进行粘贴。
- Firefox 可能无法正确支持剪贴板权限。
- macOS 系统:Cmd+c 复制,Cmd+v 粘贴。
- Linux:CTRL+c 复制,CTRL+v 粘贴。
注意
如果按 Ctrl+C 时未选中任何文本,Cloud Shell 会向 shell 发送 Ctrl-c 字符。 shell 可以将 Ctrl-c 解释为中断信号并终止当前运行的命令。
使用 Bash shell 时,由于带括号的粘贴模式,粘贴的文本会自动突出显示。 若要禁用突出显示,请运行以下命令:
bind 'set enable-bracketed-paste off'
仅当您拥有一个已装载的存储帐户时,此设置才会保留。
常见问题
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文件夹。 存储在clouddrive文件夹中的文件可通过 Azure 门户中的“存储资源管理器”查看。 存储在clouddrive文件夹中的文件会在会话间持久化。如果选择“无需存储帐户”选项,你只能将文件写入
$HOME文件夹。
在这两种情况下,你都可以将文件写入 $HOME 文件夹。 但 $HOME 文件夹仅存在于你当前使用的 Cloud Shell 容器映像中。
$HOME 文件夹中的文件无法在“存储资源管理器”中查看,且会在会话结束时删除。
我在 Azure: 驱动器中创建了一个文件,但看不到该文件。 发生了什么情况?
Cloud Shell 加载适用于 Azure 的 PowerShell 提供程序,该提供程序将 Azure 资源数据呈现为文件系统驱动器。 PowerShell 用户可以使用 Azure: 驱动器访问 Azure 资源。
Azure: 驱动器是一个虚拟驱动器,不允许创建文件。
如果当前位置为 Azure: 驱动器时,你使用 vim 或 nano 等其他工具创建新文件,这些文件会保存到你的 $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 Relay 建立终端连接。 由于 DNS 解析问题,Cloud Shell 可能无法请求终端。 如果从网络中具有
servicebus域专用 DNS 区域的主机启动 Cloud Shell 会话,可能会导致此失败。 使用本地专用 DNS 服务器时,也可能出现此错误。解决方法:你可以为 Cloud Shell 使用的 Azure Relay 实例添加 DNS 记录。
以下步骤将展示如何识别 Cloud Shell 实例的 DNS 名称以及如何为该名称创建 DNS 记录。
尝试通过 Web 浏览器启动 Cloud Shell。 使用浏览器的开发人员工具查找 Azure Relay 实例名称。 在 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。 在你的场景中,请求应失败,但你可以找到需要解析的主机名。有关在其他浏览器中访问开发人员工具的信息,请参阅捕获浏览器跟踪以进行故障排除。
从专用网络外的主机运行
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在专用网络的专用 DNS 区域中为该公网 IP 添加 A 记录。 对于此示例,DNS 记录将具有以下属性:
- 名称:ccon-prod-southcentralus-aci-02
- 类型:A
- TTL:1 小时
- IP 地址: 40.84.152.91
有关在专用 DNS 区域中创建 DNS 记录的详细信息,请参阅使用 Azure DNS 管理 DNS 记录集和记录。
注意
此 IP 地址可能会定期更改。 你可能需要重复此过程以发现新的 IP 地址。
或者,你可以部署自己的专用 Cloud 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 支持请求。 包括以下详细信息:
- 租户 ID
- 需提供业务合理性说明以及你使用 Cloud Shell 的方式描述。
终端输出 - 受众 <service-audience-url> 不是受支持的 MSI 令牌受众
- 详细信息:Cloud Shell 无法获取命令所需的 Azure 服务的令牌。 当 Cloud Shell 不支持命令请求的令牌受众时,会出现此问题。
-
解决方法:在 Cloud Shell 中运行以下命令,以交互方式登录,并在重试原始命令之前获取必要的凭据:
az login --use-device-code
管理 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 时,系统会提示你附加存储帐户。 可以创建新的存储帐户,或重新附加之前使用的现有存储帐户。
使用以下步骤删除用户设置。
- 启动 Cloud Shell。
- 从 Cloud Shell 工具栏中选择“设置”菜单(齿轮图标)。
- 从菜单中选择“重置用户设置”。
- 选择“重置”按钮以确认操作。
在锁定的网络环境中阻止 Cloud Shell
-
详细信息:管理员可能希望禁止其用户访问 Cloud Shell。 Cloud Shell 依赖于对
ux.console.azure.com域的访问(可被拒绝),从而停止对 Cloud Shell 入口点的任何访问,包括portal.azure.com、shell.azure.com、Visual Studio Code Azure 帐户扩展和learn.microsoft.com。 在美国政府云中,入口点为ux.console.azure.us;没有相应的shell.azure.us。 -
解决方法:从你的网络中限制对
ux.console.azure.com或ux.console.azure.us的访问。 Cloud Shell 图标仍存在于 Microsoft Azure 门户中,但无法连接到该服务。