Conectarse a instancias de Linux

En esta guía aprenderás a conectarte a las instancias de Linux con una estación de trabajo OSX, Windows o Linux a través de herramientas SSH comunes. Si necesitas conectarte a una instancia de Windows, debes hacerlo a través del protocolo de escritorio remoto (RDP).

La forma más fácil de conectarse a una instancia de Linux en Compute Engine es mediante el navegador o la herramienta gcloud.

También puedes generar un nuevo par de claves y aplicarlo a tu proyecto. De este modo, podrás utilizar herramientas de terceros para conectarte. Por ejemplo, puedes conectarte a través de SSH en estaciones de trabajo OSX o Linux, o bien a través de PuTTY en estaciones de trabajo Windows.

Si tienes conocimientos avanzados y necesitas automatizar el proceso de administración de claves SSH o configurar claves SSH públicas en instancias específicas, consulta este artículo sobre cómo automatizar el proceso de administración de claves SSH.

Antes de empezar

Conectarse a una instancia a través del navegador

Para conectar una instancia mediante SSH directamente desde tu navegador web en la consola de Google Cloud Platform, utiliza estos comandos:

  1. En la Consola de APIs, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. En la lista de instancias de máquinas virtuales, haz clic en el botón SSH de la fila de la instancia a la que quieres conectarte.

Debes tomar algunas precauciones para conectarte a instancias a través del navegador. Para obtener más información, consulta el artículo sobre SSH en el navegador.

Conectarse a una instancia a través de la línea de comandos

Puedes utilizar la herramienta de línea de comandos gcloud para conectarte fácilmente a tus instancias de Linux. La herramienta gcloud se encarga de administrar las claves SSH. Para ello, genera y aplica nuevas claves SSH en todo el proyecto cuando sean necesarias.

Para conectarte a la instancia, utiliza el comando gcloud compute ssh:

gcloud compute ssh [INSTANCE_NAME]

[INSTANCE_NAME] es el nombre de la instancia.

Una vez hecho esto, podrás utilizar el terminal para ejecutar comandos en la instancia de Linux. Cuando hayas terminado, utiliza el comando exit para desconectarte de la instancia.

Generar un nuevo par de claves SSH

Antes de utilizar SSH o SCP para acceder a las instancias, debes generar un nuevo par de claves SSH y aplicar la clave pública al proyecto. Si te has conectado a una instancia a través de la herramienta gcloud, tus claves ya se habrán aplicado al proyecto y estarán disponibles en las siguientes ubicaciones:

  • Linux y OSX
    • Clave pública: $HOME/.ssh/google_compute_engine.pub
    • Clave privada: $HOME/.ssh/google_compute_engine
  • Windows:
    • Clave pública: C:\Users\[USER_NAME]\.ssh\google_compute_engine.pub
    • Clave privada: C:\Users\[USER_NAME]\.ssh\google_compute_engine

[USER_NAME] es el nombre de usuario que utilizas en tu estación de trabajo local.

También puedes generar un par de claves manualmente. A continuación, te indicamos cómo hacerlo:

Linux y OSX


Sigue estos pasos para generar un nuevo par de claves SSH en una estación de trabajo OSX o Linux:

  1. Abre un terminal y utiliza el comando ssh-keygen para generar un nuevo par de claves. Introduce la marca -C para añadir un comentario con tu nombre de usuario de Google. En este ejemplo hemos creado una clave privada con el nombre my-ssh-key y un archivo de clave pública llamado my-ssh-key.pub.

    ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C [USERNAME]
    

    En este caso, [USERNAME] es el usuario de la instancia al que vas a aplicar la clave. Si el usuario no existe en la instancia, Compute Engine creará uno automáticamente con el nombre de usuario que hayas introducido en este comando.

  2. Restringe el acceso a la clave privada my-ssh-key, de manera que solo tú puedas leerla y nadie más pueda escribir en ella.

    chmod 400 ~/.ssh/my-ssh-key
    
  3. Ve a la página de metadatos de tu proyecto.

    Ir a la página Metadatos

  4. Haz clic en Claves SSH para ver una lista de las claves SSH públicas del proyecto.

  5. Haz clic en el botón Editar para modificar las claves SSH públicas del proyecto.

  6. Puedes acceder al contenido del archivo de clave pública ~/.ssh/my-ssh-key.pub con el comando cat.

    cat ~/.ssh/my-ssh-key.pub
    

    La clave pública aparece en el terminal con el siguiente formato:

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    donde:

    • [KEY_VALUE] es el valor de la clave pública generada.
    • [USERNAME] es tu nombre de usuario.
  7. Copia los resultados del comando cat y pégalos como un nuevo elemento en la lista de claves SSH.

  8. En la parte inferior de la página Claves SSH, haz clic en Guardar para conservar la nueva clave SSH del proyecto.

La clave pública ya está configurada para que funcione en todas las instancias del proyecto. Utiliza el comando ssh para conectarte a tus instancias.

Windows


Sigue estos pasos para generar un nuevo par de claves SSH en una estación de trabajo Windows:

  1. Descarga puttygen.exe.

  2. Inicia PuTTYgen. Para seguir este ejemplo, solo tienes que ejecutar el archivo puttygen.exe que acabas de descargar. Se abrirá una ventana en la que puedes configurar los ajustes de generación de claves.

  3. Haz clic en el botón Generate (Generar) para crear un nuevo par de claves. Los parámetros predeterminados funcionan en la mayoría de los casos. Cuando hayas terminado, aparecerá el valor de la clave pública en la herramienta.

  4. En la sección Key comment (Comentarios de la clave), introduce tu nombre de usuario de Google. La clave debería tener esta estructura:

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    donde:

    • [KEY_VALUE] es el valor de la clave que se ha generado.
    • [USERNAME] es tu nombre de usuario de Google.
  5. Si quieres, también puedes introducir una frase de contraseña para proteger mejor la clave.

  6. Haz clic en Save private key (Guardar clave privada) para guardarla en un archivo. En este ejemplo, guarda la clave como my-ssh-key.ppk.

  7. Haz clic en Save public key (Guardar clave pública) para guardarla en un archivo y utilizarla más adelante. De momento, no cierres la ventana de PuTTYgen.

  8. Ve a la página de metadatos de tu proyecto.

    Ir a la página Metadatos

  9. Haz clic en Claves SSH para ver una lista de las claves SSH públicas del proyecto.

  10. Haz clic en el botón Editar para modificar las claves SSH públicas del proyecto.

  11. Copia todo el valor de la clave pública que aparece en la herramienta PuTTYgen y pégalo en la lista de claves SSH de la página Metadatos como un nuevo elemento. El valor de la clave pública está en la parte superior de PuTTYgen:

    Captura de pantalla de la clave pública de PuTTYgen

  12. En la parte inferior de la página Claves SSH, haz clic en Guardar para conservar la nueva clave SSH del proyecto.

La clave pública ya está configurada para que funcione en todas las instancias del proyecto. Conéctate a ellas mediante PuTTY.

Conectarse a través de SSH en una estación de trabajo OSX o Linux

Para conectarte a las instancias a través de SSH:

  1. Si todavía no has aplicado una clave pública a tu proyecto de la consola de Google Cloud Platform, genera un nuevo par de claves y aplícalo al proyecto.

  2. En la consola, busca la IP externa de la instancia a la que quieres conectarte. Ve a la lista de instancias.

    Ir a la página Instancias

  3. Utiliza el comando ssh para conectarte a la instancia. Indica tu nombre de usuario y la dirección IP externa de la instancia a la que quieres conectarte. Debes utilizar el mismo nombre de usuario de Google que usas para acceder al proyecto. En este ejemplo, la clave privada está en ~/.ssh/my-ssh-key.

    ssh -i ~/.ssh/my-ssh-key [USERNAME]@[IP_ADDRESS]
    

    donde:

    • [USERNAME] es tu nombre de usuario.
    • [IP_ADDRESS] es la IP de la instancia.

Cuando se establezca la conexión, podrás utilizar el terminal para ejecutar comandos en la instancia. Utiliza el comando exit para desconectarte de la instancia cuando hayas terminado.

Conectarse a través de PuTTY en una estación de trabajo Windows

Si utilizas Windows, puedes usar la herramienta PuTTY para conectarte a las instancias. Para ello, sigue estos pasos:

  1. Si todavía no has aplicado una clave pública a tu proyecto de la consola de Google Cloud Platform, genera un nuevo par de claves y aplícalo al proyecto.

  2. Descarga putty.exe.

  3. Ejecuta PuTTY. Para seguir este ejemplo, basta con ejecutar el archivo putty.exe que acabas de descargar. Se abrirá una ventana en la que podrás configurar la conexión.

  4. En la consola de Google Cloud Platform, encuentra la IP externa de la instancia a la que quieres conectarte. Ve a la lista de instancias.

    Ir a la página Instancias

  5. En PuTTY, introduce tu nombre de usuario de Google y la dirección IP externa a la que te quieres conectar en el campo Host Name (Nombre del host). Debes utilizar el mismo nombre de usuario de Google que usas para acceder al proyecto. En este ejemplo, el usuario es example-user y la dirección IP externa es 104.196.31.103.

    Asignar al campo Host Name (Nombre del host) el valor example-user@104.196.31.103

  6. En el lado izquierdo de la ventana de PuTTY, ve a Connection (Conexión) > SSH > Auth. (Autenticación).

  7. Introduce la ruta del archivo de la clave privada en el campo Private key file for authentication (Archivo de la clave privada para la autenticación). En este ejemplo, introduce la ruta al archivo my-ssh-key.ppk.

    Configurar la ruta al archivo my-ssh-key.ppk en el campo Private key file (Archivo de la clave privada).

  8. Haz clic en Open (Abrir) para abrir un terminal con una conexión a la instancia.

Cuando se establezca la conexión, podrás utilizar el terminal para ejecutar comandos en la instancia. Utiliza el comando exit para desconectarte de la instancia cuando hayas terminado.

Conectarse a instancias sin dirección IP externa

Puedes utilizar una instancia que tenga una dirección IP externa para conectarte en cadena a cualquier instancia de la misma red VPC a través de la dirección IP interna. Puedes conectarte a una instancia aunque no tenga una dirección IP externa.

Para realizar este proceso, deben cumplirse los siguientes requisitos:

  • Debe haber dos instancias en la misma red VPC: una que tenga una dirección IP externa y otra que no.
  • Debe haber una regla de cortafuegos que admita conexiones SSH en el puerto 22. Además, esta debe ser una regla predeterminada en la red VPC default y ambas instancias deben pertenecer a dicha red.

Sigue estos pasos para conectarte a una instancia que no tenga una dirección IP externa:

  1. Si todavía no has aplicado una clave pública a tu proyecto de la consola de Google Cloud Platform, genera un nuevo par de claves y aplícalo al proyecto.

  2. En la máquina local, inicia ssh-agent para que administre las claves:

    eval `ssh-agent`
    
  3. Utiliza el comando ssh-add para cargar las claves públicas del ordenador local en el agente y úsalas para todos los comandos SSH a efectos de autenticación.

    ssh-add ~/.ssh/[PRIVATE_KEY]
    

    En este comando, [PRIVATE_KEY] es el nombre del archivo de la clave privada.

  4. Conecta una instancia a una dirección IP externa e introduce el argumento -A para habilitar el reenvío de agentes de autenticación.

    gcloud compute ssh --ssh-flag="-A" [EXTERNAL_INSTANCE_NAME]
    

    En este caso, [EXTERNAL_INSTANCE_NAME] es el nombre de la instancia que tiene una dirección IP externa.

  5. Después de conectarte a dicha instancia, utiliza ssh para conectarte a cualquier otra instancia de la misma red VPC.

    $ ssh [INTERNAL_INSTANCE_NAME]
    

    En este caso, [INTERNAL_INSTANCE_NAME] es el nombre de la segunda instancia a la que tienes que conectarte.

  6. Cuando hayas terminado, utiliza el comando exit para desconectarte de las instancias una a una.

    $ exit
    

Conectarse a instancias como usuario root

De forma predeterminada, las imágenes públicas y los sistemas operativos más habituales no permiten los accesos "root" por SSH. Como práctica recomendada, el valor del parámetro PermitRootLogin del archivo de configuración SSH /etc/ssh/sshd_config es no.

Debido a este parámetro, no puedes conectarte a las instancias como usuario "root" aunque especifiques una clave SSH para root en tu proyecto o en los metadatos de la instancia en cuestión. Un usuario puede conseguir permisos "root" si ejecuta los comandos a través de sudo.

Siguientes pasos