¡Imagina esto! Tener una máquina virtual completamente funcional en Google Cloud Platform (GCP), lista para trabajar, desplegada en… ¿menos de un minuto? ¡Sí, es totalmente posible! Y la herramienta para lograr esta velocidad es la línea de comandos de gcloud
. Olvídate de esos largos procesos de clics en la consola web para tareas que haces una y otra vez. Con gcloud
, crear una VM en GCP se vuelve un proceso ágil, casi instantáneo.
Este post está pensado para ti, ya seas un estudiante curioso dando sus primeros pasos en el fascinante mundo de la nube, o un profesional experimentado buscando esa referencia rápida que te ahorre tiempo. Te vamos a guiar paso a paso para crear una vm en GCP con gcloud, específicamente una instancia con Ubuntu, un disco SSD veloz de 64GB adicional para tus datos, una IP pública que no cambie, y cómo dejar todo listo para conectarte de forma segura con una llave SSH RSA de 2048 bits generada con PuTTYgen. Y para hacerlo aún más sencillo, ¡usaremos Google Cloud Shell, Vamos a empezar!
🧩 Requisitos – Lo que necesitas tener a mano
Antes de que tus dedos empiecen a teclear comandos, hay un par de cosas que necesitamos tener listas. ¡Nada complicado!
🔹Una cuenta activa en Google Cloud Platform. Si aún no tienes una, puedes aprovechar la capa gratuita o una cuenta de prueba. ¡Es una excelente forma de experimentar!
🔹Acceso a Google Cloud Shell. La buena noticia es que Cloud Shell ya viene con gcloud
preinstalado y configurado. ¡Un paso menos!
🔹PuTTY y PuTTYgen instalados en tu computadora local (esto es más común si usas Windows). Los necesitarás para generar y gestionar tu llave SSH privada. Puedes descargarlos fácilmente desde el sitio oficial de PuTTY.
🔹Un manejo básico de la línea de comandos de tu sistema operativo. ¡Lo justo para copiar y pegar comandos!
🔑 Fase 1: Preparando tu acceso seguro con llaves SSH
Conectarnos a nuestra VM de forma segura es fundamental. Y la mejor manera de hacerlo es usando llaves SSH, ¡sin contraseñas que se puedan adivinar o exfiltrar! Necesitamos un par: una llave privada que solo tú tendrás, y una llave pública que le daremos a GCP para que la ponga en tu VM.
📄 Genera tu par de llaves SSH con PuTTYgen
Si estás en Windows y PuTTY es tu cliente SSH favorito, PuTTYgen es tu aliado para crear esas llaves mágicas. Nos enfocaremos en generar una llave RSA de 2048 bits, que es el estándar moderno, seguro y compatible con GCP. Es importante que no generes llaves SSH-1, ya que GCP no las soporta.
- Abre PuTTYgen.
- Asegúrate de que el tipo de llave seleccionado sea “RSA” y que el número de bits sea “2048” (o superior para más seguridad). Verifica que NO diga “SSH-1 (RSA)”.
- Haz clic en “Generate”. Mueve el ratón por el área en blanco para generar entropía.
- (Recomendado): Pon una “Key passphrase”. Añade una capa extra de seguridad a tu llave privada.
- En el campo “Key comment”, puedes poner un nombre de usuario, por ejemplo,
kloudconk
. Esto ayuda a identificar la llave. - Copia la llave pública en formato OpenSSH (
ssh-rsa AAAA...
) para los metadatos de GCP: En la interfaz principal de PuTTYgen, verás un área de texto con tu llave pública que empieza conssh-rsa AAAA...
. ¡Este es el formato exacto que necesitas copiar y pegar (o guardar en un archivo) para usarlo en los metadatos de GCP cuando creas o configuras tu instancia! Cópiala completamente. - Haz clic en “Save public key” y guárdala como archivo con el nombre
kloudconk-gcp-key.pub
. Este archivo guardado por PuTTYgen contendrá la llave pública en un formato diferente (---- BEGIN SSH2 PUBLIC KEY ----
). GCP también acepta este formato de archivo para algunas operaciones (como la gestión automática de llaves porgcloud compute ssh
), pero para añadirla explícitamente a los metadatos de la instancia usando--metadata-from-file
, el formatossh-rsa AAAA...
(del paso anterior) es el más confiable. - Haz clic en “Save private key” y guarda el archivo
.ppk
(ej.kloudconk-gcp-key.ppk
). Este es el que usarás con el cliente PuTTY tradicional. ¡Este archivo es tu llave privada! Guárdalo en un lugar seguro y NUNCA lo compartas con nadie. - Exporta la llave privada en formato OpenSSH (PEM): Para usar tu llave con comandos
ssh
estándar en Linux/Unix o con gcloud compute ssh –ssh-key-file, necesitas la llave privada en formato PEM. Ve aConversions
->Export OpenSSH key
. Guarda este archivo con la extensión.pem
(ej.kloudconk-gcp-key.pem
). ¡Crucial! Abre este archivo.pem
con un editor de texto simple y VERIFICA que empiece con —–BEGIN RSA PRIVATE KEY—–. Si empieza con —–BEGIN OPENSSH PRIVATE KEY—–, es el formato nuevo y podría dar problemas de compatibilidad con algunas herramientas SSH estándar.
Para la conexión con ssh
estándar SIN PASSPHRASE (recomendado para evitar problemas de compatibilidad con libcrypto
): Carga tu archivo .ppk
original en PuTTYgen. Borra completamente el contenido de los campos “Key passphrase” y “Confirm passphrase”. Luego, ve a Conversions
-> Export OpenSSH key
y guarda este archivo con un nombre diferente, por ejemplo, kloudconk-gcp-key-nopass.pem
. Verifica que este archivo .pem
exportado NO tenga las líneas de encriptación (Proc-Type
, DEK-Info
).
✳️ Fase 2: ¡A desplegar la VM con gcloud en Cloud Shell!
Llegó el momento. Vamos a usar un solo comando gcloud
para darle vida a nuestra instancia de VM con todas las especificaciones que queremos. ¡Y lo haremos desde la comodidad de Google Cloud Shell!
⬆️ Sube tus llaves necesarias a Cloud Shell
Para que GCP asocie tu llave pública a tu instancia y para que puedas usar gcloud compute ssh --ssh-key-file
desde Cloud Shell, sube los siguientes archivos que creaste a tu entorno de Cloud Shell:
kloudconk-gcp-key.pub
(la llave pública) la que comienza con (ssh-rsa AAAA...
)kloudconk-gcp-key.pem
(la llave privada exportada en formato OpenSSH/PEM, con extensión.pem
)- Si planeas usar
gcloud compute ssh --ssh-key-file
con la llave que tiene passphrase, también necesitarás el archivo de llave pública nombrado comokloudconk-gcp-key.pem.pub
en la misma ubicación.
Busca el menú de “Upload File” en la interfaz de Cloud Shell y selecciona los archivos necesarios. Estarán en tu directorio principal (/home/tu-usuario
) o mejor aún, usa el comando vi o nano.
🖥️ Crea la Instancia de VM con un comando
Ahora sí, abre tu terminal de Google Cloud Shell. ¡Prepárate para la velocidad! Ejecuta el siguiente comando tal cual, debemos colocar tus datos específicos por ejemplo para el archivo “kloudconk-gcp-key.pub” que probablemente lo nombraste diferente o la VPC.
gcloud compute instances create vm-test-kloudconk \
--zone=us-central1-a \
--image-project=ubuntu-os-cloud \
--image-family=ubuntu-2204-lts \
--machine-type=e2-micro \
--create-disk=name=vm-test-kloudconk-data-disk,size=64GB,type=pd-ssd,mode=rw \
--metadata-from-file=ssh-keys=kloudconk-gcp-key.pub \
--metadata=user=kloudconk \
--network-interface=network=default,subnet=default \
--tags=ssh,http-server,https-server # Añadimos los tags para SSH y servicios web comunes / We add tags for SSH and common web services

Vamos a desglosar rápidamente qué hace cada parte (aunque gcloud
es bastante intuitivo):
vm-test-kloudconk
: Es el nombre de nuestra instancia.us-central1-a
: La zona de GCP donde vivirá nuestra VM.--image-project
y--image-family
: Especificamos Ubuntu 22.04 LTS.- –machine-type=e2-micro: Tamaño de la VM, ideal para pruebas y capa gratuita.
--create-disk=
: Creamos un disco persistente SSD de 64GB llamadovm-test-kloudconk-data-disk
y lo adjuntamos.--metadata-from-file=ssh-keys=kloudconk-gcp-key.pub
: Le decimos a GCP que lea tu llave pública desde el archivo y la asocie a la VM.--metadata=user=kloudconk
: Especificamos el usuario de conexión SSH (kloudconk
).--network-interface=...
: Configuramos la red por defecto.--tags=ssh,http-server,https-server
: Tags para Firewall. Incluimoshttp-server
yhttps-server
porque frecuentemente, el siguiente paso es probar un servidor web, y estos tags son usados por las reglas de Firewall por defecto de GCP para permitir tráfico web (puertos 80 y 443).
¡Ejecuta el comando! Si todo va bien, en segundos, gcloud
confirmará la creación de la instancia y el disco, mostrando la IP externa.
🌐 ¡Que tu IP no cambie! Promueve la IP Externa a Estática
La IP externa es temporal por defecto. Para tener una fija, promúévela a estática.
- Obtén la IP externa actual:
gcloud compute instances list --filter="name=(vm-test-kloudconk)" --zones=us-central1-a

Busca la columna EXTERNAL_IP
.
2. Crea la IP estática:
gcloud compute addresses create kloudconk-vm-ip \
--addresses [IP_PUBLICA_TEMPORAL_DE_TU_VM] \
--region=us-central1 # La región donde creaste la VM / The region where you created the VM
Reemplaza [IP_PUBLICA_TEMPORAL_DE_TU_VM]
con la IP obtenida.

🛡️ Fase 3: Asegurando el acceso: El Firewall
Para conectar por SSH (puerto 22), necesitas una regla de Firewall. La buena noticia es que la red por defecto de GCP incluye default-allow-ssh
, que permite tráfico SSH a instancias con el tag ssh
. Como añadimos ese tag, ¡ya está cubierto!
Puedes verificar la regla con:
gcloud compute firewall-rules list --filter="name=default-allow-ssh"

Verás que efectivamente permite tcp:22
para los “Target tags” que incluyan ssh
.
Como ya pusimos la etiqueta ssh
en nuestra VM, ¡no necesitas hacer absolutamente nada más con el Firewall en este escenario! ¡Un paso menos!
✳️ Fase 4: ¡Conéctate a tu nueva VM!
VM desplegada, IP fija, Firewall listo. ¡Es hora de entrar! Tienes varias opciones:
➡️ Conectando con PuTTY (desde Windows)
Usa el cliente PuTTY en tu máquina Windows.
- Abre PuTTY.
- En “Host Name (or IP address)”, pon la IP externa estática de tu VM.
- Port:
22
, Connection type:SSH
. - En
Connection
>SSH
>Auth
, haz clic en “Browse…” y selecciona tu archivo de llave privadakloudconk-gcp-key.ppk
. - (Opcional): Guarda la sesión en
Session
. - Haz clic en “Open”. Si tienes passphrase, ingrésala.
- ¡Deberías estar conectado!
✨ Un camino aún más rápido: gcloud compute ssh
(desde Cloud Shell o tu terminal)
gcloud compute ssh
simplifica la conexión, gestionando llaves automáticamente (algunas politicas de seguridad no permiten esto, por eso en este post creamos nuestras propias llaves) o permitiéndote especificar una.
Desde Google Cloud Shell:
El método más sencillo. gcloud
usará automáticamente las llaves asociadas a tu cuenta de Google Cloud Shell.
gcloud compute ssh vm-test-kloudconk --zone=us-central1-a --project=[TU_PROJECT_ID] # Reemplaza con el ID de tu proyecto de GCP / Replace with your GCP project ID
➡️ Desde tu terminal Linux/Unix local (usando tu llave específica):
Si prefieres usar gcloud
desde tu propia terminal Linux/Unix y la llave que generaste con PuTTYgen (exportada a PEM), puedes especificar la ruta a tu archivo de llave privada. ¡Importante! Las herramientas SSH estándar de Linux/Unix (que gcloud
usa internamente en estos entornos) requieren que el archivo de llave privada esté en formato OpenSSH (PEM).
Para usar tu llave generada con PuTTYgen con gcloud compute ssh --ssh-key-file
, necesitas exportar la llave privada desde PuTTYgen en formato OpenSSH (PEM). En PuTTYgen, carga tu archivo .ppk
, ve al menú Conversions
y selecciona Export OpenSSH key
. Asegúrate de que el archivo resultante empiece con —–BEGIN RSA PRIVATE KEY—–. Si empieza con —–BEGIN OPENSSH PRIVATE KEY—–, es el formato nuevo y podría dar problemas de compatibilidad. Guarda este archivo con la extensión .pem
. Por ejemplo, kloudconk-gcp-key.pem
.
¡Aquí está el detalle clave para gcloud compute ssh --ssh-key-file
! Esta herramienta espera encontrar el archivo de llave pública correspondiente en la misma ubicación que el archivo .pem
de la llave privada, y debe tener un nombre específico: el nombre de tu archivo .pem
seguido de .pub
. Es decir, si tu archivo de llave privada se llama kloudconk-gcp-key.pem
, tu archivo de llave pública debe llamarse kloudconk-gcp-key.pem.pub
.
Asegúrate de subir ambos archivos (kloudconk-gcp-key.pem
y kloudconk-gcp-key.pem.pub) a Cloud Shell o tenlos en el mismo directorio en tu terminal local.
Finalmente, si estás en un entorno Linux/Unix (como Cloud Shell o tu propia terminal Linux/macOS), los permisos de tu archivo de llave privada (el archivo .pem
) deben ser restrictivos (solo lectura para ti, nada para otros). Si ves advertencias como “UNPROTECTED PRIVATE KEY FILE!” o “bad permissions”, necesitas corregirlos. El comando para hacerlo es:
chmod 600 [RUTA_A_TU_LLAVE_PRIVADA_PEM] # Cambia los permisos del archivo de llave privada en formato PEM / Change the permissions of the private key file in PEM format
Reemplaza [RUTA_A_TU_LLAVE_PRIVADA_PEM] con la ruta real a tu archivo de llave privada exportado en formato PEM y con extensión .pem
(ej. ./kloudconk-gcp-key.pem
en Cloud Shell).
Una vez que tengas el archivo de llave privada en formato PEM antiguo con extensión .pem
, los permisos correctos (chmod 600
) y el archivo de llave pública correspondiente (exportado desde PuTTYgen en formato OpenSSH, .pub
) nombrado como [nombre_del_archivo_pem].pub
en la misma ubicación, el comando gcloud compute ssh –ssh-key-file=[RUTA_A_TU_LLAVE_PRIVADA_PEM] debería funcionar sin problemas.
gcloud compute ssh vm-test-kloudconk --zone=us-central1-a --project=[TU_PROJECT_ID] --ssh-key-file=[RUTA_A_TU_LLAVE_PRIVADA_PEM]

[TU_PROJECT_ID]
: El ID de tu proyecto de GCP.[RUTA_A_TU_LLAVE_PRIVADA_PEM]
: La ruta completa al archivo de llave privada exportado de PuTTYgen en formato PEM antiguo, con extensión.pem
.
La primera vez que uses gcloud compute ssh
para una VM con una llave específica, gcloud
se asegurará de que tu llave pública esté en los metadatos de la instancia. Si ya la añadiste manualmente con el comando create
(usando --metadata-from-file
y --metadata=user=...
), gcloud compute ssh
la reconocerá y la usará sin problemas. ¡Tienes opciones para conectarte!
🐧 Conectando desde una Terminal Linux/Unix con ssh estándar
Conectarte usando el comando ssh
nativo es fundamental.
Pasos para conectar con ssh
estándar:
- Asegúrate de tener tu llave privada en formato OpenSSH (PEM antiguo) Y SIN PASSPHRASE. Este es el archivo que exportaste de PuTTYgen que empieza con —–BEGIN RSA PRIVATE KEY—– y NO tiene las líneas de encriptación (
Proc-Type
,DEK-Info
). ¡Esto es crucial para evitar problemas de compatibilidad con la biblioteca criptográfica (libcrypto
) en algunos sistemas Linux/Unix! Si tu archivo todavía está encriptado, vuelve a PuTTYgen, carga tu.ppk
, borra la passphrase completamente y exporta a OpenSSH key (PEM antiguo) nuevamente (ver pasos en la Fase 1). - Sube tu archivo de llave privada SIN PASSPHRASE (.pem) a tu terminal Linux/Unix si aún no lo tienes allí.
- Aplica los permisos restrictivos a tu archivo de llave privada SIN PASSPHRASE. ¡Fundamental por seguridad y para que
ssh
funcione! Si ves advertencias sobre permisos no protegidos, usa este comando:chmod 600 [RUTA_A_TU_LLAVE_PRIVADA_PEM_SIN_PASSPHRASE
- Ejecuta el comando
ssh
: Usa el nombre de usuario que especificaste al añadir la llave a la instancia (kloudconk
) y la dirección IP externa estática de tu VM. Usa el flag-i
para especificar la ruta a tu archivo de llave privada SIN PASSPHRASE.
ssh -i [RUTA_A_TU_LLAVE_PRIVADA_PEM_SIN_PASSPHRASE] kloudconk@[IP_PUBLICA_ESTATICA_DE_TU_VM]
[RUTA_A_TU_LLAVE_PRIVADA_PEM_SIN_PASSPHRASE]
: La ruta completa a tu archivo de llave privada en formato OpenSSH/PEM sin encriptación (ej../kloudconk-gcp-key-nopassphrase.pem
kloudconk
: El usuario.[IP_PUBLICA_ESTATICA_DE_TU_VM]
: La dirección IP estática de tu VM.
Si has seguido los pasos correctamente y estás usando el archivo de llave privada sin encriptación con permisos 600, el comando ssh
no te pedirá passphrase y deberías conectarte directamente.
💾 Fase 5: Prepara el Disco de Datos Adicional
Creamos un disco de datos de 64GB, pero no está listo para usar inmediatamente. Necesitas formatearlo y “montarlo” al sistema de archivos de tu VM. Esto se hace dentro de la VM, una vez conectado por SSH.
Aquí los comandos básicos en Ubuntu.
- Identifica el nuevo disco: Suele ser
/dev/sdb
. Confirma con:sudo fdisk -l
Busca el disco de 64GB. Asumiremos/dev/sdb
. - Formatea el disco (¡Cuidado!): Formato
ext4
. ¡Asegúrate de usar el disco correcto!sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
- Crea un punto de montaje:
Un lugar común es/mnt/data
.sudo mkdir /mnt/data
- Monta el disco:
sudo mount -o discard,defaults /dev/sdb /mnt/data
- Configura montaje automático al reiniciar:
Obtén el UUID del disco:sudo blkid /dev/sdb
Copia el UUID.
Edita/etc/fstab
:sudo nano /etc/fstab
Añade esta línea al final (reemplaza[UUID_DE_TU_DISCO]
):UUID=[UUID_DE_TU_DISCO] /mnt/data ext4 discard,defaults,nofail 0 2
¡Importante! Revisa esta línea cuidadosamente en busca de errores de tipeo. Un pequeño error aquí impedirá que el disco se monte automáticamente al reiniciar, aunque el montaje manual funcione. ¡Es un detalle común que a veces se nos escapa! Guarda y cierra el editor. - Verifica el montaje:
Puedes verificar que todo esté montado correctamente:df -h -x tmpfs -x devtmpfs
Deberías ver/dev/sdb
montado en/mnt/data
.
¡Listo! Disco de datos preparado y configurado para montaje automático.
✅ Conclusión
Hemos recorrido el camino para crear una VM en GCP utilizando gcloud
en Google Cloud Shell, y lo hicimos en un tiempo récord. Pasamos de nada a una instancia funcional con disco de datos, IP fija y acceso seguro por SSH con llave RSA. Además, exploramos cómo conectar con PuTTY, gcloud compute ssh
y el comando ssh
estándar.
👉 Si estás buscando automatizar y escalar la creación de VMs, revisa también esta guía sobre cómo crear un MIG regional en GCP con script de inicio.
El extraordinario poder y la eficiencia de la línea de comandos en el entorno cloud quedan evidentes con gcloud. Esta interfaz no solo es esencial para interactuar con Google Cloud, sino que abre la puerta a una potente automatización y gestión a escala. Si bien gcloud es fundamental, es importante reconocer el panorama más amplio de la Infraestructura como Código (IaC), donde herramientas como Terraform también juegan un papel crucial, ofreciendo enfoques declarativos para la gestión de recursos.”
Si tienes dudas o quieres compartir tu experiencia, ¡déjanos un comentario abajo! ¡Nos encantaría leerte!