通过 SSH 访问已启用 Azure Arc 的服务器

您可以在不需要公共 IP 地址或额外开放端口的情况下启用与已启用 Arc 的服务器的 SSH 连接。 此功能可以交互、自动化或与基于 SSH 的现有工具配合使用,从而扩展现有管理工具对已启用 Azure Arc 的服务器的影响。

优点

对已启用 Arc 的服务器进行 SSH 访问具有以下优势:

  • 无需公共 IP 地址或开放 SSH 端口
  • 访问 Windows 和 Linux 计算机
  • 能够以本地用户或 Azure 用户(仅限 Linux)身份进行登录
  • 支持其他具有配置文件支持的基于 OpenSSH 的工具

先决条件

  • 用户权限:为目标已启用 Arc 的服务器分配的“所有者”或“参与者”角色。
  • 已启用 Arc 的服务器:
    • 混合代理版本:1.31.xxxx 或更高版本
    • 必须启用 SSH 服务(“sshd”)。

对于 Linux,请通过包管理器进行安装 openssh-server 。 可以通过运行以下命令来检查 sshd 是否在 Linux 上运行:

ps -aux | grep sshd

对于 Windows,请参阅 “启用 OpenSSH”。 可以使用以下命令检查 ssh 是否已安装并运行:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Check the sshd service is running
Get-Service sshd

Microsoft Entra 身份验证

如果使用 Microsoft Entra 进行身份验证,则必须在启用了 Arc 的服务器上适当地安装 aadsshloginaadsshlogin-selinux。 这些包与 AADSSHLoginForLinux VM 扩展一起安装。

还必须为虚拟机(VM)配置角色分配。 使用两个 Azure 角色来授权 VM 登录:

  • 虚拟机管理员登录名:分配有此角色的用户可以使用管理员权限登录到 Azure VM。
  • 虚拟机用户登录:分配有此角色的用户可以使用常规用户特权登录到 Azure VM。

为 VM 分配有“所有者”或“参与者”角色的 Azure 用户不会自动拥有通过 SSH 登录到 VM Microsoft Entra 的权限。 控制虚拟机的用户群和可访问虚拟机的用户群之间存在有意的(和经过审核的)分隔。

注意

虚拟机管理员登录角色和虚拟机用户登录角色使用 dataActions,可以在管理组、订阅、资源组或资源范围内进行分配。 建议在管理组、订阅或资源级别而不是在单个 VM 级别分配角色。 此做法避免了达到每个订阅的 Azure 角色分配限制的风险。

可用性

已启用 Arc 的服务器目前支持对已启用 Arc 的服务器的所有云区域中的 SSH 访问。

启用对已启用 Arc 的服务器的 SSH 访问

若要启用对已启用 Arc 功能的服务器进行 SSH 访问,请按照本节的步骤操作。

注册 HybridConnectivity 资源供应商

注意

这是需要对每个订阅执行的一次性操作。

检查是否已注册 HybridConnectivity 资源提供程序:

az provider show -n Microsoft.HybridConnectivity -o tsv --query registrationState

如果资源提供程序尚未注册,请运行以下命令进行注册:

az provider register -n Microsoft.HybridConnectivity

此操作可能需要 2-5 分钟才能完成。 在继续下一步之前,请确保注册已完成。

创建默认连接终结点

必须为每个已启用 Arc 的服务器完成此步骤。 但是,你可能不需要运行这些命令来执行此作,因为它应在首次连接时自动完成。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15 --body '{"properties": {"type": "default"}}'

注意

如果是使用 PowerShell 中的 Azure CLI,则应使用以下项。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15 --body '{\"properties\":{\"type\":\"default\"}}'

验证终结点创建:

az rest --method get --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15

安装本地命令行工具

SSH 功能在 Azure CLI 扩展和 Azure PowerShell 模块中提供。 在您的环境中安装合适的工具。

az extension add --name ssh

在已启用 Arc 的服务器上启用功能

若要使用 SSH 连接功能,必须更新已启用 Arc 的服务器的“连接终结点”中的服务配置,允许 SSH 连接到特定端口。 只允许连接单个端口。 CLI 工具尝试在运行时更新允许的端口,但可以使用以下命令手动配置端口。 如果为 SSH 连接使用非默认端口,请将端口 22 替换为所需的端口。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15 --body "{\"properties\": {\"serviceName\": \"SSH\", \"port\": 22}}"

注意

更新服务配置后可能会有一段延迟,之后才可以连接。

可选:安装 Microsoft Entra 登录扩展

若要在 Linux 计算机上使用 Microsoft Entra 进行身份验证,必须在已启用 Arc 的服务器上安装 aadsshloginaadsshlogin-selinux (如适用)。 这些包与 AADSSHLoginForLinux VM 扩展一起安装。

若要在 Azure 门户中添加此扩展,请导航到群集,然后在“ 设置”下的“服务”菜单中,选择“ 扩展”。 选择 “添加”,然后选择 基于 Azure AD 的 SSH 登录名 - Azure Arc 并完成安装。 还可以通过 apt-get install aadsshlogin 运行或以下命令通过包管理器在本地安装扩展:

az connectedmachine extension create --machine-name <arc enabled server name> --resource-group <resourcegroup> --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLogin --type AADSSHLoginForLinux --location <location>

示例

若要查看示例和更多详细信息,请查看 Az ssh 的 Az CLI 文档页或 Az.Ssh 的 Azure PowerShell 文档页。

对已启用 Arc 的服务器禁用 SSH

如果需要删除对已启用 Arc 的服务器进行 SSH 访问,请执行以下步骤。

  1. 从启用了 Arc 的服务器中删除 SSH 端口和功能:

    az rest --method delete --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15 --body '{\"properties\": {\"serviceName\": \"SSH\", \"port\": \"22\"}}'
    
  2. 删除默认连接终结点:

    az rest --method delete --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15
    

后续步骤