En este documento se describe cómo añadir claves SSH a instancias de máquina virtual (VM) que usan OS Login y a VMs que usan claves SSH basadas en metadatos. Si tú o el administrador de tu organización no habéis habilitado el inicio de sesión del SO, tus VMs usarán claves SSH basadas en metadatos.
Antes de empezar
- Para obtener información sobre cómo gestionar el acceso a tus VMs de Compute Engine, consulta Elegir un método de acceso.
- Si aún no lo has hecho, crea un par de claves SSH.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Añadir claves a las VMs que usan OS Login
Las VMs que usan OS Login aceptan las claves SSH asociadas a tu cuenta de Google. Puedes asociar una clave pública SSH a tu cuenta de Google mediante la CLI de gcloud o la API OS Login. Si eres administrador de tu organización, puedes añadir claves SSH a las cuentas de usuario mediante la API Directory.
Cuando añades claves SSH a tu cuenta de Google, Compute Engine genera un nombre de usuario combinando el nombre de usuario y el dominio del correo asociado a tu cuenta de Google. Por ejemplo, si tu dirección de correo es
cloudysanfrancisco@gmail.com
, tu nombre de usuario escloudysanfrancisco_gmail_com
. Si añades una clave SSH en un proyecto que no pertenece a tu organización, tu nombre de usuario tendrá el prefijoext_
, por ejemplo,ext_cloudysanfrancisco_gmail_com
. El administrador de tu organización puede personalizar tu nombre de usuario con la API Directory. Si ya tienes configurado un nombre de usuario, Compute Engine lo usará cuando añadas claves SSH.gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para añadir una clave pública SSH a tu cuenta, usa el comando
gcloud compute os-login ssh-keys add
:gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --project=PROJECT \ --ttl=EXPIRE_TIME
Haz los cambios siguientes:
KEY_FILE_PATH
: la ruta a la clave SSH pública en tu estación de trabajo. La clave debe usar el formatopublic-openssh
PROJECT
: opcional, un proyecto en el que quieras usar tu clave SSH. Especifica este campo para usar tu clave SSH en un proyecto que no pertenezca a tu organización o si no eres miembro de una organización de Cloud Identity.EXPIRE_TIME
: opcional, hora de vencimiento de la clave SSH.Por ejemplo, si especifica
30m
, la clave SSH caducará al cabo de 30 minutos.Esta marca usa las siguientes unidades:
s
segundosm
durante minutosh
durante horasd
durante días
ACCOUNT_EMAIL
: la dirección de correo asociada a tu cuentaSSH_KEY
: la clave pública que quieres añadir a la cuentaEXPIRATION_TIMESTAMP
: hora de vencimiento de la clave, en microsegundos desde el inicio del registro de tiempo (1 segundo = 106 microsegundos)
Terraform
Para añadir una clave pública SSH a tu cuenta, usa el recurso
google_client_openid_userinfo
junto con el recursogoogle_os_login_ssh_public_key
.REST
Para añadir una clave pública SSH a tu cuenta, usa el método
users.importSshPublicKey
de la API OS Login:POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey { "key": "SSH_KEY", "expirationTimeUsec": "EXPIRATION_TIMESTAMP" }
Haz los cambios siguientes:
Añadir claves SSH a VMs que usan claves SSH basadas en metadatos
Las VMs que no usan OS Loginalmacenan las claves SSH en los metadatos del proyecto y de la instancia de Compute Engine. Si el inicio de sesión del SO está habilitado en una VM, el agente invitado de la VM ignora las claves almacenadas en los metadatos.
Puedes usar claves SSH almacenadas en los metadatos de un proyecto para acceder a todas las VMs de ese proyecto. Puedes usar claves SSH almacenadas en los metadatos de las instancias para acceder a máquinas virtuales concretas.
Compute Engine no elimina automáticamente las claves SSH caducadas de los metadatos en el momento de la caducidad, pero las claves caducadas no se pueden usar para establecer nuevas conexiones con las VMs. Si quieres quitar claves caducadas de los metadatos, consulta Quitar claves SSH de máquinas virtuales que usan claves basadas en metadatos.
Puedes añadir una clave pública SSH a los metadatos de un proyecto o de una instancia de VM mediante la Google Cloud consola, la CLI de gcloud o REST. No puedes definir valores de metadatos zonales para claves SSH.
Añadir claves SSH a los metadatos de un proyecto
Puedes añadir una clave pública SSH a los metadatos de un proyecto para acceder a todas las VMs de ese proyecto, excepto a las que bloqueen las claves SSH de todo el proyecto. Para obtener más información sobre cómo bloquear claves SSH del proyecto, consulta Bloquear claves SSH de máquinas virtuales que usan claves SSH basadas en metadatos.
Consola
Para añadir una clave pública SSH a los metadatos del proyecto mediante la consolaGoogle Cloud , haz lo siguiente:
En la Google Cloud consola, ve a la página Metadatos.
Haz clic en la pestaña Claves SSH.
Haz clic en Editar.
Haz clic en Añadir elemento.
En el campo Clave SSH que se abre, añade tu clave SSH pública. La clave debe tener uno de los siguientes formatos:
- Formato de una clave sin tiempo de vencimiento:
KEY_VALUE USERNAME
- Formato de una clave con un tiempo de vencimiento:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Haz clic en Guardar.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Si hay claves SSH en los metadatos del proyecto, debes volver a añadirlas a los metadatos del proyecto cada vez que añadas una clave SSH con la CLI de gcloud. Si no vuelves a añadir las llaves que ya tenías, al añadir una nueva se borrarán las que ya tenías.
Para añadir una clave pública SSH a los metadatos del proyecto mediante la CLI de gcloud, haz lo siguiente:
Si tu proyecto ya tiene claves SSH públicas de todo el proyecto, obténlas de los metadatos y añádelas a un archivo nuevo:
Ejecuta el
gcloud compute project-info describe
comando para obtener las claves SSH del proyecto:gcloud compute project-info describe \ --format="value(commonInstanceMetadata[items][ssh-keys])"
El resultado debería ser similar al siguiente:
username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
Copia el valor de los metadatos
ssh-keys
.Crea y abre un nuevo archivo de texto en tu estación de trabajo.
En el archivo, pega la lista de claves que acabas de copiar.
Añade la nueva clave al final de la lista con uno de los siguientes formatos:
- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Guarda y cierra el archivo.
Ejecuta el comando
gcloud compute project-info add-metadata
para definir el valorssh-keys
de todo el proyecto:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Sustituye
KEY_FILE
por una de las siguientes opciones:- La ruta al archivo que has creado en el paso anterior, si el proyecto tenía claves SSH
- La ruta al nuevo archivo de clave pública SSH, si el proyecto no tenía claves SSH
Terraform
Para añadir una clave pública SSH a los metadatos de tu proyecto, usa el recurso
google_compute_project_metadata
.REST
Si hay claves SSH en los metadatos del proyecto, debes volver a añadirlas a los metadatos del proyecto cada vez que añadas una clave SSH con la API de Compute Engine. Si no vuelves a añadir las llaves que ya tenías, al añadir una nueva se borrarán las que ya tenías.
Para añadir una clave pública SSH a los metadatos del proyecto mediante la API de Compute Engine, sigue estos pasos:
Obtén los valores
fingerprint
yssh-keys
de los metadatos mediante el métodoprojects.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Sustituye
PROJECT_ID
por el ID del proyecto.La respuesta es similar a la siguiente:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Añade el nuevo valor
ssh-keys
con el métodoprojects.setCommonInstanceMetadata
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoEXISTING_SSH_KEYS
: el valor de la clavessh-keys
de la respuesta de la solicitudprojects.get
FINGERPRINT
: el valor defingerprint
de la respuesta de la solicitudprojects.get
NEW_SSH_KEY
: la nueva clave SSH, en uno de los siguientes formatos:- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Añadir claves SSH a los metadatos de la instancia
Puedes añadir una clave pública SSH a los metadatos de una instancia cuando creas una VM o después de crearla.
Añadir claves SSH a los metadatos de la instancia durante la creación de la VM
Puedes añadir claves SSH a los metadatos de la instancia durante la creación de la VM mediante laGoogle Cloud consola, la CLI de gcloud o la API de Compute Engine.
Consola
Para crear una instancia y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo mediante la Google Cloud consola, sigue estos pasos:
En la Google Cloud consola, ve a la página Crear una instancia.
Para añadir una clave pública SSH a los metadatos de una instancia, sigue estos pasos:
En el menú de navegación, haz clic en Seguridad.
Despliega la sección Gestionar acceso.
Para inhabilitar OS Login, desmarca la casilla Controlar el acceso a las VMs mediante permisos de gestión de identidades y accesos.
Si quieres permitir que las claves SSH públicas de los metadatos del proyecto accedan a la instancia, desmarca la casilla Bloquear claves SSH del proyecto.
En la sección Añadir claves SSH generadas manualmente, haz clic en Añadir elemento.
Añade tu clave pública en el cuadro de texto. La clave debe tener uno de los siguientes formatos:
- Formato de una clave sin tiempo de vencimiento:
KEY_VALUE USERNAME
- Formato de una clave con un tiempo de vencimiento:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la instancia, haz clic en Crear.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para crear una VM y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo con la CLI de gcloud, usa el comando
gcloud compute instances create
:gcloud compute instances create VM_NAME \ --metadata=ssh-keys=PUBLIC_KEY
Haz los cambios siguientes:
VM_NAME
: el nombre de la nueva VMPUBLIC_KEY
: tu clave pública SSH, en uno de los siguientes formatos:- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Puedes añadir varias claves SSH con la marca
--metadata-from-file=ssh-keys=FILE_PATH
. En el archivo, añade una lista de nombres de usuario y claves públicas SSH en uno de los formatos anteriores.PROJECT_ID
: el ID del proyectoZONE
: la zona de la VM- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
Terraform
Para añadir una clave pública SSH a los metadatos de tu instancia, usa el recurso
google_compute_instance
.REST
Para crear una VM y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo con Compute Engine, crea una solicitud
POST
al métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Haz los cambios siguientes:
En el cuerpo de la solicitud, proporciona nombres de usuario y claves SSH públicas en la propiedad
items
:... { "items": [ { "key": "ssh-keys", "value": "PUBLIC_KEY" } ] } ...
Sustituye
PUBLIC_KEY
por tu clave pública en uno de los siguientes formatos:Haz los cambios siguientes:
Puedes añadir varias claves SSH añadiendo
\n
entre ellas.Añadir claves SSH a los metadatos de la instancia después de crear la VM
Puedes añadir claves SSH a los metadatos de la instancia después de crear la VM mediante laGoogle Cloud consola, la CLI de gcloud o la API de Compute Engine.
Consola
Para añadir una clave pública SSH a los metadatos de una instancia mediante laGoogle Cloud consola, haz lo siguiente:
En la consola de Google Cloud , ve a la página Instancias de VM.
Haga clic en el nombre de la VM a la que quiera añadir una clave SSH.
Haz clic en Editar.
En Claves SSH, haz clic en Añadir elemento.
Añade tu clave pública en el cuadro de texto. La clave debe tener uno de los siguientes formatos:
- Formato de una clave sin tiempo de vencimiento:
KEY_VALUE USERNAME
- Formato de una clave con un tiempo de vencimiento:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
Haz clic en Guardar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Si hay claves SSH en los metadatos de la instancia, debes volver a añadirlas a los metadatos de la instancia cada vez que añadas una clave SSH con la CLI de gcloud. Si no vuelves a añadir las claves que ya tienes, al añadir una nueva se borrarán las que ya tenías.
Para añadir una clave pública SSH a los metadatos de una instancia mediante la CLI de gcloud, sigue estos pasos:
Si tu VM ya tiene claves SSH públicas a nivel de instancia, obténlas de los metadatos y añádelas a un archivo nuevo:
Ejecuta el comando
gcloud compute instances describe
para obtener los metadatos de la VM:gcloud compute instances describe VM_NAME
Sustituye VM_NAME por el nombre de la VM a la que quieras añadir o quitar claves públicas SSH.
El resultado debería ser similar al siguiente:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Copia el valor de los metadatos
ssh-keys
.Crea y abre un nuevo archivo de texto en tu estación de trabajo.
En el archivo, pega la lista de claves que acabas de copiar.
Añade la nueva clave al final de la lista con uno de los siguientes formatos:
- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Guarda y cierra el archivo.
Ejecuta el comando
gcloud compute instances add-metadata
para definir el valorssh-keys
:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Haz los cambios siguientes:
VM_NAME
: la VM a la que quieres añadir la clave SSHKEY_FILE
con uno de los siguientes elementos:- La ruta al archivo que has creado en el paso anterior, si la VM tenía claves SSH
- La ruta al nuevo archivo de clave pública SSH, si la VM no tenía claves SSH
Obtén los valores
fingerprint
yssh-keys
de los metadatos mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la VM a la que se va a añadir una clave SSHVM_NAME
: la VM a la que vas a añadir una clave SSH
La respuesta es similar a la siguiente:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Añade el nuevo valor
ssh-keys
con el métodoinstances.setMetadata
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoEXISTING_SSH_KEYS
: el valor de la clavessh-keys
de la respuesta de la solicitudinstances.get
FINGERPRINT
: elfingerprint
de la respuesta de la solicitudprojects.get
NEW_SSH_KEY
: la nueva clave SSH, en uno de los siguientes formatos:- Formato de una clave sin tiempo de vencimiento:
USERNAME:KEY_VALUE
- Formato de una clave con un tiempo de vencimiento:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Haz los cambios siguientes:
KEY_VALUE
: el valor de la clave pública SSHUSERNAME
: tu nombre de usuario. Por ejemplo,cloudysanfrancisco
ocloudysanfrancisco_gmail_com
.En las máquinas virtuales Linux, el
USERNAME
no puede serroot
, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a instancias como usuario raíz.En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato
DOMAIN\
. Por ejemplo, el usuariocloudysanfrancisco
de laad.example.com
AD tiene unUSERNAME
deexample\cloudysanfrancisco
.EXPIRE_TIME
: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo:2021-12-04T20:12:00+0000
- Formato de una clave sin tiempo de vencimiento:
REST
Si hay claves SSH en los metadatos de la instancia, debe volver a añadirlas a los metadatos de la instancia cada vez que añada una clave SSH con la API Compute Engine. Si no vuelves a añadir las claves que ya tienes, al añadir una nueva se borrarán las que ya tenías.
Para añadir una clave pública SSH a los metadatos de una instancia mediante la API Compute Engine, sigue estos pasos:
Siguientes pasos
- Consulta cómo conectarte a máquinas virtuales.
- Consulta cómo gestionar el acceso a las máquinas virtuales.
- Consulta cómo transferir archivos a máquinas virtuales.
- Consulta cómo funcionan las conexiones SSH a máquinas virtuales de Linux en Compute Engine.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-