Azure
Esta guía configura una máquina virtual Linux de Azure con la CLI de Azure, aplica el endurecimiento del Grupo de Seguridad de Red (NSG), configura Azure Bastion para el acceso SSH e instala OpenClaw.
Lo que hará
Sección titulada «Lo que hará»- Crear recursos de redes (VNet, subredes, NSG) y de procesos de Azure con la CLI de Azure
- Aplicar reglas del Grupo de Seguridad de Red para que el SSH de la máquina virtual solo se permita desde Azure Bastion
- Usar Azure Bastion para el acceso SSH (sin dirección IP pública en la máquina virtual)
- Instalar OpenClaw con el script de instalación
- Verificar la puerta de enlace
Lo que necesita
Sección titulada «Lo que necesita»- Una suscripción de Azure con permiso para crear recursos de proceso y de red
- CLI de Azure instalada (ver los pasos de instalación de la CLI de Azure si es necesario)
- Un par de claves SSH (la guía cubre cómo generar uno si es necesario)
- ~20-30 minutos
Configurar la implementación
Sección titulada «Configurar la implementación»Iniciar sesión en la CLI de Azure
Ventana de terminal az loginaz extension add -n sshLa extensión
sshes necesaria para el túnel SSH nativo de Azure Bastion.Registrar proveedores de recursos necesarios (una sola vez)
Ventana de terminal az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.NetworkVerifique el registro. Espere hasta que ambos muestren
Registered.Ventana de terminal az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvEstablecer variables de implementación
Ventana de terminal RG="rg-openclaw"LOCATION="westus2"VNET_NAME="vnet-openclaw"VNET_PREFIX="10.40.0.0/16"VM_SUBNET_NAME="snet-openclaw-vm"VM_SUBNET_PREFIX="10.40.2.0/24"BASTION_SUBNET_PREFIX="10.40.1.0/26"NSG_NAME="nsg-openclaw-vm"VM_NAME="vm-openclaw"ADMIN_USERNAME="openclaw"BASTION_NAME="bas-openclaw"BASTION_PIP_NAME="pip-openclaw-bastion"Ajuste los nombres y los rangos CIDR para adaptarlos a su entorno. La subred de Bastion debe tener al menos
/26.Seleccionar clave SSH
Use su clave pública existente si tiene una:
Ventana de terminal SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Si aún no tiene una clave SSH, genere una:
Ventana de terminal SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Seleccionar el tamaño de la máquina virtual y del disco del sistema operativo
Ventana de terminal VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64Elija un tamaño de máquina virtual y un tamaño de disco del sistema operativo disponibles en su suscripción y región:
- Comience con un tamaño más pequeño para un uso ligero y escale más tarde
- Use más vCPU/RAM/disco para una automatización más pesada, más canales o cargas de trabajo de modelos/herramientas más grandes
- Si un tamaño de máquina virtual no está disponible en su región o cuota de suscripción, elija la SKU disponible más cercana
Enumere los tamaños de máquina virtual disponibles en su región de destino:
Ventana de terminal az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableCompruebe su uso y cuota actuales de vCPU y disco:
Ventana de terminal az vm list-usage --location "${LOCATION}" -o table
Implementación de recursos de Azure
Sección titulada «Implementación de recursos de Azure»Crear el grupo de recursos
Ventana de terminal az group create -n "${RG}" -l "${LOCATION}"Crear el grupo de seguridad de red
Cree el NSG y agregue reglas para que solo la subred de Bastion pueda hacer SSH a la máquina virtual.
Ventana de terminal az network nsg create \-g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}"# Allow SSH from the Bastion subnet onlyaz network nsg rule create \-g "${RG}" --nsg-name "${NSG_NAME}" \-n AllowSshFromBastionSubnet --priority 100 \--access Allow --direction Inbound --protocol Tcp \--source-address-prefixes "${BASTION_SUBNET_PREFIX}" \--destination-port-ranges 22# Deny SSH from the public internetaz network nsg rule create \-g "${RG}" --nsg-name "${NSG_NAME}" \-n DenyInternetSsh --priority 110 \--access Deny --direction Inbound --protocol Tcp \--source-address-prefixes Internet \--destination-port-ranges 22# Deny SSH from other VNet sourcesaz network nsg rule create \-g "${RG}" --nsg-name "${NSG_NAME}" \-n DenyVnetSsh --priority 120 \--access Deny --direction Inbound --protocol Tcp \--source-address-prefixes VirtualNetwork \--destination-port-ranges 22Las reglas se evalúan por prioridad (primero el número más bajo): el tráfico de Bastion se permite en 100, luego todos los demás SSH se bloquean en 110 y 120.
Crear la red virtual y las subredes
Cree la red virtual con la subred de la máquina virtual (NSG adjunto) y luego agregue la subred de Bastion.
Ventana de terminal az network vnet create \-g "${RG}" -n "${VNET_NAME}" -l "${LOCATION}" \--address-prefixes "${VNET_PREFIX}" \--subnet-name "${VM_SUBNET_NAME}" \--subnet-prefixes "${VM_SUBNET_PREFIX}"# Attach the NSG to the VM subnetaz network vnet subnet update \-g "${RG}" --vnet-name "${VNET_NAME}" \-n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}"# AzureBastionSubnet — name is required by Azureaz network vnet subnet create \-g "${RG}" --vnet-name "${VNET_NAME}" \-n AzureBastionSubnet \--address-prefixes "${BASTION_SUBNET_PREFIX}"Crear la máquina virtual
La máquina virtual no tiene una dirección IP pública. El acceso SSH es exclusivamente a través de Azure Bastion.
Ventana de terminal az vm create \-g "${RG}" -n "${VM_NAME}" -l "${LOCATION}" \--image "Canonical:ubuntu-24_04-lts:server:latest" \--size "${VM_SIZE}" \--os-disk-size-gb "${OS_DISK_SIZE_GB}" \--storage-sku StandardSSD_LRS \--admin-username "${ADMIN_USERNAME}" \--ssh-key-values "${SSH_PUB_KEY}" \--vnet-name "${VNET_NAME}" \--subnet "${VM_SUBNET_NAME}" \--public-ip-address "" \--nsg ""--public-ip-address ""evita que se asigne una dirección IP pública.--nsg ""omite la creación de un NSG por NIC (el NSG a nivel de subred maneja la seguridad).Reproducibilidad: El comando anterior usa
latestpara la imagen de Ubuntu. Para fijar una versión específica, enumere las versiones disponibles y reemplacelatest:Ventana de terminal az vm image list \--publisher Canonical --offer ubuntu-24_04-lts \--sku server --all -o tableCrear Azure Bastion
Azure Bastion proporciona acceso SSH administrado a la VM sin exponer una IP pública. Se requiere la SKU Estándar con túnel para
az network bastion sshbasado en CLI.Ventana de terminal az network public-ip create \-g "${RG}" -n "${BASTION_PIP_NAME}" -l "${LOCATION}" \--sku Standard --allocation-method Staticaz network bastion create \-g "${RG}" -n "${BASTION_NAME}" -l "${LOCATION}" \--vnet-name "${VNET_NAME}" \--public-ip-address "${BASTION_PIP_NAME}" \--sku Standard --enable-tunneling trueEl aprovisionamiento de Bastion suele tardar entre 5 y 10 minutos, pero puede tardar hasta 15-30 minutos en algunas regiones.
Instalar OpenClaw
Sección titulada «Instalar OpenClaw»Acceder por SSH a la VM a través de Azure Bastion
Ventana de terminal VM_ID="$(az vm show -g "${RG}" -n "${VM_NAME}" --query id -o tsv)"az network bastion ssh \--name "${BASTION_NAME}" \--resource-group "${RG}" \--target-resource-id "${VM_ID}" \--auth-type ssh-key \--username "${ADMIN_USERNAME}" \--ssh-key ~/.ssh/id_ed25519Instalar OpenClaw (en el shell de la VM)
Ventana de terminal curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shEl instalador instala Node LTS y las dependencias si aún no están presentes, instala OpenClaw e inicia el asistente de incorporación. Consulte Instalación para obtener más detalles.
Verificar el Gateway
Consideraciones de costes
Sección titulada «Consideraciones de costes»La SKU Estándar de Azure Bastion cuesta aproximadamente 140 $/mes y la VM (Standard_B2as_v2) cuesta aproximadamente 55 $/mes.
Para reducir los costes:
-
Desasignar la VM cuando no esté en uso (detiene la facturación de proceso; los cargos del disco se mantienen). El Gateway de OpenClaw no será accesible mientras la VM esté desasignada; reiníciela cuando lo necesite de nuevo:
Ventana de terminal az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Eliminar Bastion cuando no sea necesario y volver a crearlo cuando necesite acceso SSH. Bastion es el componente de mayor coste y solo tarda unos minutos en aprovisionarse.
-
Utilizar la SKU Básica de Bastion (~38 $/mes) si solo necesita SSH basado en Portal y no requiere túnel CLI (
az network bastion ssh).
Limpieza
Sección titulada «Limpieza»Para eliminar todos los recursos creados por esta guía:
az group delete -n "${RG}" --yes --no-waitEsto elimina el grupo de recursos y todo lo que contiene (VM, VNet, NSG, Bastion, IP pública).
Siguientes pasos
Sección titulada «Siguientes pasos»- Configurar canales de mensajería: Canales
- Emparejar dispositivos locales como nodos: Nodos
- Configure la puerta de enlace: Configuración de la puerta de enlace
- Para obtener más detalles sobre la implementación de OpenClaw en Azure con el proveedor de modelos de GitHub Copilot: OpenClaw en Azure con GitHub Copilot