已启用 Arc 的服务器的 SSH 支持与已启用 Arc 的服务器的基于 SSH 的连接,而无需公共 IP 地址或其他开放端口。 此功能可采用交互方式使用、自动化或与现有的基于 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 的服务器上安装 aadsshlogin
和 aadsshlogin-selinux
。 这些包与 Azure AD based SSH Login - Azure Arc
VM 扩展一起安装。
还必须为 VM 配置角色分配。 使用两个 Azure 角色来授权 VM 登录:
- 虚拟机管理员登录:分配了此角色的用户可以使用管理员权限登录到 Azure 虚拟机。
- 虚拟机用户登录:分配了此角色的用户可以使用常规用户权限登录到 Azure 虚拟机。
为 VM 分配有“所有者”或“参与者”角色的 Azure 用户不会自动拥有通过 SSH Microsoft Entra 登录到 VM 的权限。 控制虚拟机的用户群和可访问虚拟机的用户群之间存在有意的(和经过审核的)分隔。
注意
虚拟机管理员登录角色和虚拟机用户登录角色使用 dataActions
,可以在管理组、订阅、资源组或资源范围内进行分配。 建议在管理组、订阅或资源级别而不是在单个 VM 级别分配角色。 此做法避免了达到每个订阅的 Azure 角色分配限制的风险。
可用性
已启用 Arc 的服务器目前支持对已启用 Arc 的服务器的所有云区域中的 SSH 访问。
入门
注册 HybridConnectivity 资源供应商
注意
这是需要对每个订阅执行的一次性操作。
检查 HybridConnectivity 资源提供程序(RP)是否已注册。
az provider show -n Microsoft.HybridConnectivity -o tsv --query registrationState
如果还没有注册 RP,请运行以下命令:
az provider register -n Microsoft.HybridConnectivity
此操作可能需要 2-5 分钟才能完成。 在继续操作之前,请检查是否已注册 RP。
创建默认连接终结点
注意
以下步骤不需要为大多数用户运行,因为它应在首次连接时自动完成。 必须为每个已启用 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
安装本地命令行工具
此功能当前打包在 Azure CLI 扩展和 Azure PowerShell 模块中。
az extension add --name ssh
备注
Azure CLI 扩展版本必须高于 2.0.0。
在已启用 Arc 的服务器上启用功能
若要使用 SSH 连接功能,必须更新已启用 Arc 的服务器的“连接终结点”中的服务配置,允许 SSH 连接到特定端口。 只允许连接单个端口。 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/serviceconfigurations/SSH?api-version=2023-03-15 --body "{\"properties\": {\"serviceName\": \"SSH\", \"port\": 22}}"
如果使用非默认端口进行 SSH 连接,请将端口 22 替换为上一命令中所需的端口。
可选操作:安装 Azure AD 登录扩展
可以从 Arc 服务器的扩展菜单添加 Azure AD based SSH Login - Azure Arc
VM 扩展。 还可以通过包管理器 apt-get install aadsshlogin
或以下命令在本地安装 Azure AD 登录扩展。
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 端口和功能:
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\"}}'
删除默认连接终结点:
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
后续步骤
- 了解适用于 Windows 的 OpenSSH
- 了解如何排查通过 SSH 访问已启用 Azure Arc 的服务器时遇到的问题。
- 了解如何排查代理连接问题。