En este documento, se describe cómo evitar que los usuarios accedan a instancias de máquina virtual (VM) mediante la eliminación y el bloqueo de claves SSH de las VMs.
Antes de comenzar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Si no sabes qué clave deseas quitar, ejecuta el comando
gcloud compute os-login describe-profile
para ver todas las claves asociadas a tu cuenta:gcloud compute os-login describe-profile
Copia el valor
fingerprint
de la clave que deseas borrar.Quita la clave de tu cuenta con el comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Reemplaza
KEY
por la clave SSH pública que quieres quitar o la huella digital de Acceso al SO para la clave que deseas quitar.Si no sabes qué clave deseas quitar, usa el método
users.getLoginProfile
para ver todas las claves asociadas a tu cuenta:GET https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/loginProfile
Reemplaza
ACCOUNT_EMAIL
por la dirección de correo electrónico asociada a tu cuenta.Copia el valor
fingerprint
de la clave que deseas borrar.Quita la clave de tu cuenta con el método
users.sshPublicKeys.delete
:DELETE https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/sshPublicKeys/FINGERPRINT
Reemplaza lo siguiente:
ACCOUNT_EMAIL
: Es la dirección de correo electrónico asociada a tu cuenta.FINGERPRINT
: Es la huella digital SHA-256 de la clave que se quitará.
En la consola de Google Cloud, ve a la página Metadatos.
Haz clic en la pestaña Claves SSH.
Haz clic en
Editar, en la parte superior de la página.Navega hasta la clave SSH que quieres quitar y haz clic en el botón
Borrar junto a la clave SSH.Repite este paso para cada clave SSH que desees quitar.
Haz clic en Guardar.
Ejecuta el comando
gcloud compute project-info describe
a fin de obtener los metadatos para el proyecto:gcloud compute project-info describe
El resultado es similar a este:
... 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 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 SSH que acabas de copiar y, luego, borra las claves que deseas quitar de los metadatos del proyecto.
Guarde y cierre el archivo.
Ejecuta el comando
gcloud compute project-info add-metadata
para configurar el valorssh-keys
de todo el proyecto:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Reemplaza
KEY_FILE
por uno de los siguientes valores:- la ruta de acceso al archivo que creaste en el paso anterior, si el proyecto tenía claves SSH existentes
- la ruta de acceso a tu nuevo archivo de claves SSH públicas, si el proyecto no tenía claves SSH existentes
Usa el método
projects.get
para obtener los valoresfingerprint
yssh-keys
de los metadatos.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Reemplaza
PROJECT_ID
con el ID del proyecto.La respuesta es similar al ejemplo a continuación:
... "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"}" } ] ...
Copia la lista de valores de claves SSH y borra las claves que deseas quitar.
Usa
projects.setCommonInstanceMetadata
para quitar las claves SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS" } ] "fingerprint": "FINGERPRINT" }
Reemplaza lo siguiente:
PROJECT_ID
: El ID de tu proyectoEXISTING_SSH_KEYS
: La lista de claves SSH que quieres conservarFINGERPRINT
: Es el valor defingerprint
de la respuesta de la solicitudprojects.get
.
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM para la que deseas quitar una clave.
Haz clic en Editar.
En la sección Claves SSH, haz clic en Mostrar y editar. La sección se expande para mostrar todas las Llaves SSH públicas de nivel de instancia.
Haz clic en el botón Borrar
junto a la clave SSH que quieres quitar.Repite este paso para cada clave SSH que desees quitar.
Haz clic en Guardar.
Ejecuta el comando
gcloud compute instances describe
a fin de obtener los metadatos para la VM:gcloud compute instances describe VM_NAME
Reemplaza VM_NAME por el nombre de la VM para la que necesitas agregar o quitar las claves SSH públicas.
El resultado es similar a este:
... 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 metadatos
ssh-keys
.Crea y abre un nuevo archivo de texto en tu estación de trabajo local.
En el archivo, pega la lista de claves SSH que acabas de copiar y, luego, quita las claves que deseas borrar.
Guarde y cierre el archivo.
Ejecuta el comando
gcloud compute project-info add-metadata
para configurar el valorssh-keys
de todo el proyecto:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Reemplaza lo siguiente:
VM_NAME
: Es la VM a la que deseas quitar la clave SSHKEY_FILE
: Es la ruta al archivo que contiene la lista de todas las claves SSH del proyecto.
Usa el método
instances.get
para obtener los valoresfingerprint
yssh-keys
de los metadatos.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplaza lo siguiente:
PROJECT_ID
: El ID de tu proyectoZONE
: Es la zona de la VM a la que agregas una clave SSHVM_NAME
: Es la VM para la que agregarás una clave SSH.
La respuesta es similar al ejemplo a continuación:
... "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"}" } ] ...
Copia la lista de valores de claves SSH y borra las claves que deseas quitar.
Usa
instances.setMetadata
para quitar las claves SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS } ] "fingerprint": "FINGERPRINT" }
Reemplaza lo siguiente:
PROJECT_ID
: El ID de tu proyectoEXISTING_SSH_KEYS
: Es el valor de la clavessh-keys
de la respuesta de la solicitudprojects.get
.FINGERPRINT
: Es el valor defingerprint
de la respuesta de la solicitudinstances.get
.
En la consola de Google Cloud, ve a la página Crea una instancia.
Especifica los detalles de la VM.
Expande la sección Opciones avanzadas y sigue estos pasos:
Expande la sección Seguridad.
Marca Bloquear claves SSH de todo el proyecto.
Para crear y, también, iniciar la VM, haz clic en Crear.
PROJECT_ID
: El ID del proyectoZONE
: La zona de la VMEn la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM para la que deseas bloquear las claves SSH del proyecto.
Haz clic en Editar.
En Claves SSH, selecciona la casilla de verificación Bloquear claves SSH a nivel del proyecto.
Cuando termines de editar la configuración de conexión para las Llaves SSH, haz clic en Guardar.
Usa el método
instances.get
a fin de obtener elfingerprint
de los metadatos.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplaza lo siguiente:
PROJECT_ID
: El ID de tu proyectoZONE
: Es la zona de la VM a la que agregas una clave SSHVM_NAME
: Es la VM para la que agregarás una clave SSH.
La respuesta es similar al ejemplo a continuación:
... "fingerprint": "utgYE_XWtE8=" ...
Usa el método
instances.setMetadata
para configurarblock-project-ssh-keys
comoTRUE
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] "fingerprint": "FINGERPRINT" }
Reemplaza lo siguiente:
PROJECT_ID
es el ID de tu proyecto.ZONE
es la zona donde se encuentra la instancia.INSTANCE_NAME
es la instancia en la que quieres bloquear las claves de nivel de proyecto.FINGERPRINT
es el valor defingerprint
de la respuesta de la solicitudinstances.get
.
- Obtén información sobre los beneficios de usar el Acceso al SO para la administración de accesos.
- Conéctate a las VMs a través de herramientas de Google para que no tengas que administrar tus propias claves SSH.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Quita claves SSH
Puedes quitar las claves SSH de las VMs que usan el Acceso al SO y las VMs que usan claves SSH basadas en metadatos.Quita las claves SSH de las VM que usan Acceso al SO
Las VM que usan el Acceso al SO aceptan claves SSH asociadas con tu Cuenta de Google. Puedes quitar una clave SSH pública de la cuenta de usuario mediante Google Cloud CLI o la API de Acceso al SO. Si eres administrador de tu organización, puedes quitar claves SSH de las cuentas de usuario mediante la API de Directorio. Compute Engine quita de forma automática las claves vencidas de tu Cuenta de Google.
gcloud
Para quitar una clave SSH pública de tu cuenta, haz lo siguiente:
REST
Para quitar una clave SSH pública de tu cuenta, haz lo siguiente:
Quita las claves SSH de las VM que usan claves basadas en metadatos
Puedes quitar una clave SSH pública de los metadatos de proyecto o instancia mediante la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.
Después de quitar la última clave de los metadatos de un usuario en particular o del vencimiento de la última clave en los metadatos de un usuario en particular, Compute Engine borra el archivo
Precaución: Si administras claves SSH en metadatos, puedes interrumpir la capacidad de los miembros de tu proyecto para conectarse a las VMs. Además, corres el riesgo de otorgar a los usuarios, incluidos los que están fuera de tu proyecto, acceso no deseado a las VM. Para obtener más información, consulta los riesgos de la administración de claves manual.~/.ssh/authorized_keys
del usuario en la VM.Quita una clave pública de los metadatos del proyecto
Quita una clave SSH pública de los metadatos del proyecto para quitar el acceso a todas las VM de un proyecto.
Cuando quitas una clave de los metadatos con la CLI de gcloud y la API de Compute Engine, debes recuperar la lista de claves existentes, editar la lista de claves para quitar las claves no deseadas y reemplazar las claves anteriores por la lista de claves que deseas conservar, como se explica en la siguiente sección.
Console
Para quitar una clave SSH pública de los metadatos del proyecto con la consola de Google Cloud, sigue estos pasos:
gcloud
Para quitar una clave SSH pública de los metadatos del proyecto con la CLI de gcloud, haz lo siguiente:
REST
Para quitar una clave SSH pública de los metadatos del proyecto con la API de Compute Engine, haz lo siguiente:
Quita una clave SSH pública de los metadatos de la instancia
Quita una clave SSH pública de los metadatos de la instancia para quitar el acceso a una sola VM.
Cuando quitas una clave de los metadatos con la CLI de gcloud y la API de Compute Engine, debes recuperar la lista de claves existentes, editar la lista de claves para quitar las claves no deseadas y reemplazar las claves anteriores por la lista de claves que deseas conservar, como se explica en la siguiente sección.
Console
Para quitar una clave SSH pública de los metadatos de instancia mediante la consola de Google Cloud, haz lo siguiente:
gcloud
Para quitar una clave SSH pública de los metadatos de instancia con la CLI de gcloud, haz lo siguiente:
REST
Para quitar una clave SSH pública de los metadatos de la instancia con la API de Compute Engine, haz lo siguiente:
Bloquea claves SSH del proyecto de las VM que usan claves SSH basadas en metadatos
Para evitar que las VM acepten claves SSH almacenadas en metadatos del proyecto, bloquea las claves SSH del proyecto desde las VM. Puedes bloquear las claves SSH del proyecto de las VM cuando creas una VM o después de crear una VM.
Bloquea claves SSH del proyecto de una VM durante la creación de la VM
Puedes bloquear claves SSH del proyecto de las VM durante la creación de la VM mediante la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.
Console
Para crear una VM y bloquearla para que no acepte claves SSH almacenadas en metadatos del proyecto mediante la consola de Google Cloud, haz lo siguiente:
gcloud
Para crear una VM y bloquearla para que no acepte claves SSH almacenadas en metadatos del proyecto mediante la CLI de gcloud, usa el comando
gcloud compute instances create
:gcloud compute instances create VM_NAME \ --metadata block-project-ssh-keys=TRUE
Reemplaza
VM_NAME
por el nombre de la VM nueva.REST
Para crear una VM y bloquearla para que no acepte claves SSH almacenadas en metadatos del proyecto mediante Compute Engine, crea una solicitud
POST
para el métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Reemplaza lo siguiente:
En el cuerpo de la solicitud, proporciona los nombres de usuario y las claves SSH públicas en la propiedad
items
:... { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] } ...
Bloquea claves SSH del proyecto de una VM después de crear la VM
Puedes bloquear las claves SSH del proyecto de las VM después de crear las VM con la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.
Console
Para evitar que las VM acepten conexiones de claves SSH almacenadas en metadatos del proyecto mediante la consola de Google Cloud, haz lo siguiente:
gcloud
Para evitar que las VM acepten conexiones de claves SSH almacenadas en metadatos del proyecto mediante la CLI de gcloud, haz lo siguiente:
Ejecuta el comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE
Reemplaza
VM_NAME
por el nombre de la VM para la que quieres bloquear las claves SSH públicas de todo el proyecto.REST
Para evitar que las VM acepten conexiones de claves SSH almacenadas en metadatos del proyecto mediante la API de Compute Engine, haz lo siguiente:
Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-