SSH con llave .pem en Ubuntu AWS

Clase 9 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Conectarse a un servidor remoto sin depender de un navegador web es una habilidad fundamental para cualquier persona que administre infraestructura. El protocolo SSH (Secure Shell) permite abrir una terminal en tu computador local y operar directamente sobre el servidor, de forma segura y eficiente.

¿Cómo funciona la conexión SSH con llave privada?

Existen dos formas de autenticarse en un servidor remoto. La primera es mediante usuario y contraseña, algo que algunas plataformas de instancias virtuales permiten configurar al crear el servidor. Sin embargo, este método no es seguro porque la contraseña puede filtrarse y dar acceso no autorizado [0:22].

La segunda forma, y la recomendada, es utilizar una llave SSH. Al crear una instancia en servicios como AWS, se genera un archivo .pem que funciona como archivo de identificación. Este archivo es tu llave privada, y es el que usarás para conectarte desde la terminal [0:44].

El comando base es:

bash ssh -i pythonserverkey.pem ubuntu@<IP_PÚBLICA>

  • La opción -i indica el archivo de identificación.
  • El usuario por defecto en sistemas Ubuntu es ubuntu.
  • Después de la arroba se coloca la IP pública de la instancia [1:18].

¿Qué pasa la primera vez que te conectas?

Al ejecutar el comando por primera vez, SSH muestra un mensaje indicando que la autenticidad del host no puede ser establecida. Esto ocurre porque tu computador aún no conoce ese servidor. Al confirmar con yes, SSH almacena la referencia para validar futuras conexiones y asegurar que no haya un intermediario redirigiendo el tráfico [1:52].

¿Qué hacer si la llave tiene permisos muy abiertos?

Es común recibir un warning que indica que los permisos del archivo .pem son demasiado abiertos. Esto significa que otros usuarios del sistema podrían leer la llave. La solución es ajustar los permisos con el comando chmod [2:20]:

bash chmod 400 pythonserverkey.pem

El código 400 restringe el acceso para que solo el propietario pueda leer el archivo. Después de esto, el comando SSH funcionará correctamente y el prompt cambiará a algo como ubuntu@nombre-del-servidor, confirmando que ya estás dentro [2:38].

¿Cómo funciona el sistema de llaves pública y privada?

El mecanismo de autenticación SSH se basa en un par de archivos: la llave privada y la llave pública. La llave pública se almacena en el servidor, mientras que tú conservas la privada en tu computador local. Este es el mismo formato que se utiliza para autenticarse en plataformas como GitHub al hacer pull o push en repositorios [3:10].

Cuando ejecutas el comando SSH:

  • Tu llave privada viaja cifrada hasta el servidor.
  • El servidor compara esa llave con la llave pública que tiene almacenada.
  • Si ambas coinciden, obtienes acceso.
  • Si no coinciden, recibes un mensaje de error [3:40].

El archivo donde se guarda la llave pública en el servidor es ~/.ssh/authorized_keys. Al abrirlo con el editor Vim, puedes ver la llave pública registrada junto con el nombre asignado durante la creación [5:40].

bash vim ~/.ssh/authorized_keys

Proteger tu archivo .pem es crítico: quien tenga acceso a esa llave, tiene acceso al servidor.

¿Qué comandos básicos puedes ejecutar una vez conectado?

Una vez dentro del servidor, hay varios comandos útiles para monitorear el estado de la máquina:

  • htop: muestra el uso de CPU, memoria y los procesos activos en tiempo real. Se cierra presionando Q [4:30].
  • ls /: lista todos los archivos del directorio raíz del servidor [4:48].
  • df -h: muestra el espacio en disco disponible en un formato legible, incluyendo los volúmenes instalados y su capacidad [4:55].
  • who: indica cuántos usuarios están conectados al servidor en ese momento [5:12].

Estos comandos permiten obtener una visión rápida del estado de recursos y conexiones activas.

Como práctica, intenta crear una nueva llave SSH con ssh-keygen, agregar la llave pública al archivo authorized_keys del servidor y probar la conexión con esa nueva llave. Comparte tu experiencia en los comentarios.