Cómo conectarse a un servidor con SSH

Resumen

Conectarte a un servidor remoto con SSH es la forma más rápida, segura y profesional de administrar una instancia en la nube sin depender del navegador. Aprenderás a usar el protocolo SSH con un archivo .pem, ajustar permisos en Linux y validar el acceso al servidor desde tu terminal local.

Qué es SSH y por qué usarlo para acceder a un servidor

SSH es un protocolo que crea un canal cifrado entre tu computador y un servidor remoto. En lugar de abrir la consola web de tu proveedor cloud, abres una terminal local y trabajas directo sobre la máquina.

Existen dos formas de autenticarte al conectarte a un servidor remoto. La primera es por usuario y contraseña, que aunque funciona, es vulnerable a filtraciones. La segunda es con una llave SSH, el método recomendado y el que usarás con el archivo .pem que se descarga al crear la instancia en AWS.

¿Qué es una llave SSH? Es un par de archivos criptográficos: una llave privada que guardas tú y una llave pública que vive en el servidor. Cuando ambas coinciden, el servidor te da acceso.

Cómo conectarte a una instancia EC2 con el comando ssh

El comando base para iniciar la conexión es ssh. Si lo ejecutas sin argumentos, verás todas las opciones disponibles. Para autenticarte con tu archivo .pem necesitas la bandera -i, que indica el archivo de identificación.

La estructura del comando es la siguiente:

bash ssh -i python_server_key.pem ubuntu@TU_IP_PUBLICA

Algunos detalles importantes que debes cuidar:

  • El nombre de usuario por defecto en sistemas Ubuntu es ubuntu.
  • La IP debe ser pública, o privada si tu equipo tiene acceso a esa red.
  • Si el archivo .pem tiene espacios en su nombre, escápalos con \ para que se lea como un solo valor.

Por qué aparece el mensaje de autenticidad del host

La primera vez que te conectas, SSH muestra un aviso indicando que la autenticidad del host no puede ser establecida. Es una verificación de seguridad: confirmas que esa IP es realmente la tuya y SSH la guarda. En las siguientes conexiones validará automáticamente que no haya un intermediario redirigiendo tu tráfico a otro servidor.

Después escribes yes y SSH recordará ese host.

Cómo arreglar el error de permisos en la llave .pem

Si tras aceptar aparece un warning diciendo que la llave privada tiene permisos demasiado abiertos, es porque Linux exige que solo tu usuario pueda leerla. Lo solucionas con chmod:

bash chmod 400 python_server_key.pem

El código 400 da permiso de lectura solo al dueño del archivo. Vuelves a ejecutar el comando ssh y ya estarás dentro del servidor. Lo notarás porque el prompt cambia a algo como ubuntu@ip-xx-xx-xx-xx, donde lo de la izquierda es el usuario y lo de la derecha el nombre que AWS le asigna a la instancia.

Cómo funciona la autenticación con llave pública y privada

Cuando creaste la instancia, AWS generó automáticamente un par de llaves usando algo equivalente a ssh-add-id. La llave pública quedó dentro del servidor y la llave privada (.pem) la descargaste tú.

Al ejecutar el comando ssh -i, tu llave privada viaja cifrada por internet hasta el servidor. Allí se compara con la llave pública guardada y, si hacen match, te abren la puerta. Si no coinciden, recibes un error de credenciales.

¿Por qué debo proteger mi archivo .pem? Porque quien tenga ese archivo puede entrar al servidor como si fuera tú. Es el mismo formato de llaves que usas en GitHub para hacer pull o push: pública compartida, privada solo tuya.

Qué comandos ejecutar una vez dentro del servidor

Ya adentro, hay varios comandos básicos que te dan visibilidad sobre el estado de la máquina:

  • htop: muestra uso de CPU, memoria, swap y procesos activos. Sales con Q.
  • ls: lista los archivos del directorio actual.
  • df -h: lista los volúmenes montados en formato legible. Verás aquí el disco con la capacidad que asignaste, por ejemplo 19 GB.
  • who: indica cuántos usuarios están conectados al servidor en ese momento.

Un detalle interesante con who: si tienes abierta la terminal local y además la consola web del navegador, verás dos sesiones activas. Al cerrar una, el comando solo reportará una sesión.

Dónde se guardan las llaves públicas autorizadas

Dentro del servidor, en la carpeta .ssh, vive el archivo authorized_keys. Ahí está registrada la llave pública con la que se valida cada conexión SSH entrante. Si lo abres con Vim, verás la llave completa terminando con el nombre que le diste al crearla, por ejemplo python_server_key. Para cerrar Vim sin guardar usas :q!.

Este archivo es la pieza clave: agregar una nueva llave pública aquí significa autorizar a un nuevo dispositivo o persona a entrar al servidor.

Habilidades y conceptos que se trabajan en la clase

La práctica integra varios conocimientos técnicos que conviene tener claros:

  • Protocolo SSH [00:09]: canal cifrado para administración remota.
  • Archivo .pem [01:01]: llave privada descargada al crear la instancia EC2.
  • Bandera -i [01:31]: indica a ssh cuál archivo de identificación usar.
  • Usuario por defecto en Ubuntu [01:55]: siempre es ubuntu.
  • Verificación de host [02:36]: protege contra ataques de intermediario.
  • chmod 400 [03:25]: restringe permisos de la llave a solo lectura del dueño.
  • Par de llaves pública y privada [04:15]: base de la autenticación asimétrica.
  • htop, df -h, who, ls [05:25]: comandos de monitoreo y exploración.
  • Archivo authorized_keys [06:50]: registro de llaves públicas autorizadas en el servidor.

Ahora te toca a ti: genera una nueva llave SSH, agrega su parte pública al archivo authorized_keys del servidor y prueba la conexión desde otra terminal. Cuéntame en los comentarios cómo te fue con el reto.