Google Distributed Cloud (GDC) con aislamiento físico usa la autenticación SSH basada en claves para establecer conexiones con instancias de máquina virtual (VM). De forma predeterminada, las contraseñas no están configuradas para los usuarios locales en las VMs con un sistema operativo (SO).
Antes de comenzar
Antes de conectarte a una VM, debes cumplir con los siguientes requisitos previos:
- Habilita la administración de acceso. No puedes continuar sin que se habilite la administración de acceso en el entorno de invitado. De forma predeterminada, la administración de acceso está habilitada en las VMs nuevas.
- Habilita el acceso externo a la VM para cualquier par en el puerto 22 del Protocolo de control de transmisión (TCP).
ProjectNetworkPolicy (PNP) en el proyecto en el que reside la VM.
- Si configuras un PNP en el proyecto, puedes acceder a la VM fuera del proyecto o la organización.
- Para diagnosticar si no tienes un PNP, consulta con tu operador de infraestructura (IO).
Para usar los comandos de la interfaz de línea de comandos (CLI) de gdcloud, asegúrate de haber descargado, instalado y configurado la CLI de gdcloud.
Todos los comandos de Distributed Cloud usan la CLI de gdcloud o kubectl y requieren un entorno de sistema operativo (SO).
Obtén la ruta de acceso del archivo kubeconfig
Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:
- Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno. 
- Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar - MANAGEMENT_API_SERVERen estas instrucciones.
Solicita permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de la VM del proyecto. Sigue los pasos para verificar que tienes el rol de administrador de máquinas virtuales del proyecto (project-vm-admin) en el espacio de nombres del proyecto en el que reside la VM.
Para las operaciones de VM con la consola de GDC o la CLI de gdcloud, solicita a tu administrador de IAM del proyecto que te asigne el rol de administrador de máquinas virtuales del proyecto y el rol de visualizador del proyecto (project-viewer).
Establece una conexión a la VM
En esta sección, se describe cómo establecer una conexión con una VM que tiene un sistema operativo (SO) específico.
Conéctate a una VM
Para establecer una conexión con una VM que tenga un SO específico, usa la consola de GDC, la CLI de gdcloud o la API de Virtual Machine Manager.
Console
- En el menú de navegación, haz clic en Virtual Machines > Instances. 
- En la lista de VMs, busca la fila de la VM en ejecución a la que deseas conectarte. En la columna Conectar, haz clic en SSH. 
- Se abrirá una terminal del navegador SSH. Ingresa cualquier comando en la shell o haz clic en FTP para navegar por la estructura de archivos y subir archivos. 
gdcloud
Conéctate a una VM con SSH ejecutando el comando gdcloud compute ssh.
gdcloud compute ssh VM_NAME \
  --project=PROJECT_ID
Reemplaza las siguientes variables:
- VM_NAME: el nombre de la VM.
- PROJECT_ID: Es el ID del proyecto que contiene la VM.
Si estableciste propiedades predeterminadas para la CLI, puedes omitir la marca --project de este comando. Por ejemplo:
gdcloud compute ssh VM_NAME
API
Conéctate a una VM:
- Abre una terminal.
- Crea un par de claves SSH.
- Sube la clave pública y el nombre de usuario con un valor de tiempo de actividad (TTL).
GDC recupera la clave SSH y el nombre de usuario, y crea una cuenta de usuario con el nombre de usuario. En las VMs, GDC almacena la clave pública en el archivo ~/.ssh/authorized_keys del usuario en la VM.
Completa los siguientes pasos para conectarte a una VM desde la línea de comandos:
- Crea un par de claves SSH y un nombre de usuario. - En estaciones de trabajo con SO, usa la utilidad - ssh-keygenpara crear un nuevo par de claves SSH. En la siguiente muestra de código, se crea un par de claves RSA (Rivest-Shamir-Adleman):- ssh-keygen -t rsa \ -f ~/.ssh/KEY_FILENAME \ -C USERNAME \ -b 2048- Reemplaza las variables con las siguientes definiciones. - Variable - Definición - KEY_FILENAME- El nombre de tu archivo de claves SSH. Por ejemplo, el nombre de archivo - my-ssh-keygenera un archivo de clave privada llamado- my-ssh-keyy un archivo de clave pública llamado- my-ssh-key.pub.- USERNAME- Tu nombre de usuario en la VM, como - testusero- testuser_gmail_com.- La utilidad - ssh-keygenguarda el archivo de claves privadas en la ruta de acceso- ~/.ssh/KEY_FILENAMEy el archivo de claves públicas en la ruta de acceso- ~/.ssh/KEY_FILENAME.pub.- Una clave pública para el usuario, - testuser, es similar al siguiente ejemplo:- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser
- Sube tu clave a la VM y crea un recurso de Kubernetes con tu clave pública, nombre de usuario y valor de tiempo de actividad (TTL) para la clave. - En el siguiente ejemplo, se usa un archivo - access_request.yamlpara otorgar acceso a la instancia de VM con la clave privada- KEY_FILENAMEy un valor de TTL de diez minutos:- apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: namespace: VM_NAMESPACE name: AR_NAME spec: ssh: key: | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco ttl: 10m user: USERNAME vm: VM_NAME- Reemplaza las variables con las siguientes definiciones: - Variable - Definición - VM_NAMESPACE- Es el espacio de nombres de la VM. - AR_NAME- Es el nombre de la solicitud de acceso. - USERNAME- Tu nombre de usuario en la VM, como - testusero- testuser_gmail_com.- VM_NAME- Es el nombre de la instancia de VM. 
- Crea la clave: - kubectl --kubeconfig MANAGEMENT_API_SERVER \ create -f access_request.yaml
- Sigue estos pasos para verificar el estado de tu solicitud de acceso: - kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ get virtualmachineaccessrequests.virtualmachine.gdc.goog- Reemplaza - VM_NAMESPACEpor el espacio de nombres de la VM.- El estado - configuredindica que puedes conectarte a la VM.
- Conéctate a la VM. - ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP- Reemplaza los siguientes valores: - PATH_TO_PRIVATE_KEYcon la ruta de acceso al archivo de clave SSH privada que corresponde a la clave pública que agregaste a la VM.
- USERNAMEpor el nombre de usuario que especificaste cuando creaste la llave SSH. Por ejemplo,- cloudysanfrancisco_example_como- cloudysanfrancisco.
- EXTERNAL_IPcon la dirección IP externa del Ingress de la VM.
 
Soluciona problemas
En esta sección, se describe cómo solucionar los problemas que pueden ocurrir cuando te conectas a una instancia de VM después de crear la solicitud de acceso.
Sigue estos pasos para identificar posibles problemas:
- Verifica que la VM se esté ejecutando. Reemplaza las variables editables por tus valores en el siguiente comando: - kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ get virtualmachines.virtualmachine.gdc.goog VM_NAME- Si la VM no está en ejecución, no podrás conectarte ni configurar solicitudes nuevas. 
- Verifica que la VM se haya ejecutado durante unos minutos. Si la VM acaba de iniciarse, es posible que los servicios necesarios para el acceso SSH aún no se estén ejecutando. Por lo general, se ejecutan dentro de los cinco minutos posteriores al inicio. 
- Verifica que no hayas superado el valor de TTL en la solicitud de acceso. La clave se quita después de que el tiempo alcanza el valor de TTL. 
- Si tu - VirtualMachineAccessRequestmuestra el estado- configured, verifica los siguientes requisitos:- Habilitaste la transferencia de datos en tu VM en el puerto 22.
- Tu máquina se enruta a la VM. Por ejemplo, puedes usar el comando
 curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22para verificar el enrutamiento.
 
- Si tu - VirtualMachineAccessRequestmuestra el estado- failed, consulta el estado completo y revisa el mensaje de error que indica qué causó la falla de la solicitud:- kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME- Reemplaza las variables editables en el comando anterior por tus propios valores. 
- Si el estado de tu - VirtualMachineAccessRequestestá en blanco, es posible que el entorno invitado no se esté ejecutando.