SSH: conexión segura a computadores remotos
SSH (Secure Shell) es un protocolo que permite conectarte de forma segura y encriptada a otro computador a través de una red.

Antes De Empezar
SSH (Secure Shell) es un protocolo que permite conectarte de forma segura y encriptada a otro computador a través de una red. Se usa principalmente para administrar servidores o equipos remotos desde la terminal. Funciona mediante claves públicas y privadas o contraseñas, y cifra toda la comunicación para evitar espionaje o robo de datos.
Administrar equipos remotos sería un infierno sin SSH:
-
No podrías entrar a tu servidor si estás lejos o sin acceso físico.
-
No podrías transferir archivos de forma segura entre tu PC y un servidor.
-
No podrías automatizar tareas (como actualizaciones o backups) en varios equipos a la vez.
-
Y si un sistema falla en producción, SSH te permite repararlo en minutos sin moverte de tu escritorio.
SSH existe para todo ese tipo de problemas.
SSH funciona mediante un canal cifrado entre dos máquinas: un cliente (tu PC) y un servidor remoto. Su propósito principal es garantizar autenticación, confidencialidad e integridad en la comunicación.
Autenticación
SSH usa dos métodos principales:
-
Contraseña: simple, pero menos segura.
-
Claves públicas/privadas: el cliente guarda una clave privada, y el servidor una pública; si coinciden, el acceso se concede sin necesidad de contraseña.
Cifrado
Toda la información (comandos, archivos, respuestas, etc.) viaja encriptada con algoritmos asimétricos y simétricos, impidiendo que alguien intercepte datos útiles, incluso si espía la conexión.
Conexión y túneles
SSH puede crear túneles seguros (port forwarding), lo que permite redirigir tráfico de otras aplicaciones (como bases de datos o páginas web) de forma privada. También puede usarse como base para VPNs ligeras o para exponer servicios internos sin abrir puertos públicamente.
Usos comunes
-
Acceso remoto: ejecutar comandos en otro equipo como si estuvieras allí.
-
Transferencia de archivos: con scp o sftp, sin necesidad de FTP.
-
Automatización: en scripts para tareas repetitivas o despliegues.
-
Túneles y proxy: para conectar redes privadas o acceder a recursos internos.
En resumen, SSH no solo sirve para “entrar a un servidor”, sino que es la columna vertebral de la administración remota moderna: rápido, seguro y flexible.
Comencemos
Hay dos formas principales de usar SSH, directamente en la terminal o usando una extención de VS Code.
SSH en terminal
Si te manejas en la terminal, esta es, de lejos, la opción más cómoda, ya que te da libertad total para lo que gustes. El procedimiento para conectarte es el mismo en Windows, Linux o macOS.
Si no eres experto en la terminal, no te preocupes, seguramente será más cómodo para ti usar SSH en VS Code.
Windows, Linux y macOS
- Abre la terminal.
- Conéctate directamente escribiendo:
Ejemplo:bash
ssh usuario@ip_o_dominiobashssh someone1@192.168.1.1 ssh someone2@udec.cl - Si es la primera vez que te conectas, te dirá que no se pudo establecer la conexión. ¡Esto es completamente normal! Tu dispositivo no reconoce al otro, por lo que, para confiar en él y continuar, debes aceptar con
yes. - Escribe tu contraseña y ¡Listo! Ahora estás en la terminal del otro dispositivo, pero desde el tuyo.
Si usas versiones antiguas de Windows existe la posibilidad de que el SSH no esté y debas instalarlo o usar otras terminales externas.
SSH en VS Code
Conectarte a una máquina con SSH a través de VS Code es probablemente lo más cómodo que hay. Puedes trabajar en un entorno que ya conoces y aprovechar todas sus herramientas.
Pasos para conectarse:
- Instala la extensión Remote - SSH.
- Abre el panel de comandos (Ctrl + Shift + P) → busca
Remote-SSH: Connect to Host. - Ingresa la dirección del dispositivo:
usuario@ip_o_dominio - Se te abrirá otra ventana preguntándote por la plataforma del dispositivo al que quieres acceder. Ahí debes seleccionar Linux, Windows o macOS.
- Luego te pedirá la clave de tu usuario; la ingresas y ¡listo!
Ahora solo abre el directorio que desees y puedes empezar a trabajar.
Recuerda que si deseas usar la terminal también lo puedes hacer desde el mismo VS Code. Deberás instalar nuevamente las extensiones que necesites usar en VS Code.
También puedes guardar la dirección del dispositivo, para no ingresarla cada vez, de la siguiente manera:
- Abre el panel de comandos (Ctrl + Shift + P) → busca
Remote-SSH: Connect to Host. - Selecciona + Add New SSH Host...
- Ingresa la dirección del dispositivo:
usuario@ip_o_dominio - Elige el archivo en el que quieres guardar la configuración.
- Windows:
C:\Users\TuUsuario\.ssh\config - Linux:
~/.ssh/config
- Windows:
- Ahora el host está guardado; ya puedes conectarte como se indica al principio, pero seleccionando tu host en vez de escribirlo.
SSH y autenticación por claves pública/privada
Primero, para entender por qué utilizar la autenticación por claves, se debe entender que esta ofrece dos beneficios principales:
- Ayuda a mitigar los ataques de fuerza bruta de contraseñas contra SSH.
- Evita que los administradores tengan que escribir contraseñas manualmente.
El par de claves
Para la autenticación basada en claves, se genera un par de archivos de claves criptográficas correspondientes. El par consta de una clave privada y una clave pública que identifican de forma única al usuario.
- La clave privada, la guarda el usuario.
- La clave pública se copia al sistema remoto donde el usuario pretende iniciar sesión. Esta clave pública se almacena en el archivo
~/.ssh/authorized_keysdel usuario que se está autenticando.
Por ejemplo, si inicias sesión en un servidor remoto con el usuario juanito2025, la clave pública se añade al archivo /home/juanito2025/.ssh/authorized_keys.
Cómo crear el par de claves
El comando ssh-keygen genera el par de claves pública y privada. Por defecto, el comando guarda estas claves en los archivos ~/.ssh/id_ed25519 y ~/.ssh/id_ed25519.pub del usuario. El archivo id_ed25519 es la clave privada e id_ed25519.pub es la clave pública.
Para generar las claves, se introduce el siguiente comando:
ssh-keygen -t ed25519
En sistemas anteriores, el estándar solía ser RSA. Hoy en día, para garantizar mayor seguridad y mejor rendimiento, se recomienda especificar el algoritmo a utilizar.
Luego de esto se pedirán una serie de confirmaciones:
-
Enter file in which to save the key (/home/juanito2025/.ssh/id_ed25519):En esta se pide la confirmación de la ruta en la que se guardará el par de claves. -
Enter passphrase for "/home/juanito2025/.ssh/id_ed25519" (empty for no passphrase)En esta se pide una contraseña para utilizar la clave privada.
Cómo acceder a un servidor con el par de claves
Para que cada persona pueda acceder a un servidor que utilice este método de autentificación, debe buscar su archivo de clave pública (usualmente termina en .pub, como id_rsa.pub o id_ed25519.pub) y lo debe enviar mediante el comando:
ssh-copy-id usuario_en_servidor@ip_del_servidor
Ejemplo: ssh-copy-id juanito2025@192.168.1.50)
¿Qué pasa cuando se ejecuta esto?
- El servidor pedirá la contraseña normal del usuario de ese servidor (porque aún no está autenticado con clave).
- Va a buscar el archivo .pub local y lo copiará automáticamente dentro del servidor en el archivo correcto (~/.ssh/authorized_keys).
- El servidor avisará que terminó. La próxima vez que se ejecute
ssh usuario@ip_del_servidor, el usuario entrará directamente (o pedirá la passphrase de tu clave privada si se puso una).
Nunca, bajo ninguna circunstancia, se debe compartir la clave privada (el archivo sin la extensión .pub) con nadie, ni siquiera con el administrador del servidor.
Aquí hay algunos consejos que seguir a la hora de usar SSH.
Consejos para el cliente:
-
Usar claves SSH en lugar de contraseñas. Son mucho más seguras y evitan ataques de fuerza bruta.
-
Proteger la clave privada con passphrase. Así, aunque alguien la obtenga, no podrá usarla.
-
Mantener el archivo
~/.ssh/configorganizado, con alias y configuraciones por host. -
Revisar y limpiar las claves conocidas (
known_hosts) para evitar conflictos o falsos positivos. -
Evitar usar root directamente; conectarse con un usuario normal y luego usar
sudo.
Consejos para el servidor:
-
Deshabilitar el acceso por contraseña (
PasswordAuthentication no) y forzar el uso de claves. -
Cambiar el puerto por defecto (22) para reducir intentos automáticos de ataque.
-
Usar firewalls o fail2ban para bloquear intentos repetidos de conexión fallida.
-
Restringir el acceso por IP en el archivo
sshd_configsi el uso es limitado. -
Actualizar regularmente OpenSSH para corregir vulnerabilidades.
-
Registrar y monitorear accesos con logs para detectar actividad sospechosa.
En conjunto, estas prácticas hacen que tu conexión SSH sea segura, confiable y difícil de vulnerar.
Errores comunes al usar SSH y que podrían comprometer la seguridad y confiabilidad de este.
Malas prácticas del cliente:
-
Guardar la clave privada sin passphrase (riesgo total si alguien accede a tu PC).
-
Usar contraseñas simples o repetidas para conectarte a distintos servidores.
-
Copiar la clave privada al servidor remoto (solo la pública debe ir allí).
-
Ignorar las advertencias del archivo
known_hosts, que pueden indicar suplantación. -
Conectarte como root directamente, sin necesidad, exponiendo permisos totales.
Malas prácticas del servidor:
-
Dejar el acceso por contraseña habilitado, facilitando ataques automáticos.
-
No limitar intentos de conexión, permitiendo fuerza bruta indefinida.
-
No actualizar OpenSSH o el sistema operativo, dejando huecos de seguridad.
-
Usar el puerto 22 sin firewall, haciéndolo visible a cualquier bot o atacante.
-
Dar acceso SSH a todos los usuarios del sistema, sin control ni permisos claros.
Aunque se realice alguna de estas practicas no signifique un problema inmediato, no es razón para utilizarlas y exponerse a futuros problemas de seguridad.
Extras
Aquí hay algunos recursos extra sobre SSH
Documentación y guías oficiales:
-
Página oficial del proyecto OpenSSH, con documentación y descargas.
-
Detalle completo de comandos, flags y configuración.
-
Guía práctica para instalar y usar SSH en distribuciones basadas en Ubuntu.
Aprendizaje y tutoriales:
-
Tutorial paso a paso para principiantes.
-
Explicación clara sobre el funcionamiento y la seguridad detrás de SSH.
-
Recursos educativos sobre SSH, cifrado y administración segura.
Seguridad avanzada:
-
Guía completa para reforzar la configuración del servidor SSH.
-
Cómo proteger tu servidor de ataques de fuerza bruta con Fail2Ban.
-
OpenSSH. (s.f.). OpenSSH: Portable OpenSSH. Recuperado el 11 de noviembre de 2025, de https://www.openssh.com/
-
DigitalOcean. (2023). How To Use SSH to Connect to a Remote Server. DigitalOcean Tutorials. Recuperado de https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server
-
The Linux Foundation. (2024). SSH Man Page (ssh(1)) en Linux man-pages project. Recuperado de https://man7.org/linux/man-pages/man1/ssh.1.html
-
SSH Communications Security. (2024). SSH Academy. Recuperado de https://www.ssh.com/academy/ssh
Autores

GIIA