Conectarse por SSH es una habilidad esencial para cualquiera que gestione una página web o un servidor. SSH (Secure Shell) ofrece una conexión segura y cifrada con tu servidor que te permite ejecutar comandos, gestionar archivos y modificar configuraciones. En esta guía completa aprenderás paso a paso cómo conectarte por SSH, tanto si usas Windows como Mac o Linux.

¿Qué es SSH y por qué conectarse por SSH?

SSH significa Secure Shell y es un protocolo de red que establece una conexión segura entre tu ordenador y un servidor remoto. Todos los datos que se envían por SSH, incluidas las contraseñas y los comandos, se cifran. Esto permite realizar con seguridad tareas delicadas como la administración de servidores, incluso en redes no seguras. Conectarse por SSH es la forma estándar de administrar servidores VPS y servidores dedicados.

SSH frente a otros métodos de conexión

ProtocoloCifradoUsoSeguridad
SSHSí (completo)Administración de servidores, transferencia de archivosExcelente
FTPNoTransferencia de archivosInseguro
SFTPSí (a través de SSH)Transferencia de archivosExcelente
TelnetNoAdministración de servidores (obsoleto)Inseguro
RDPSíEscritorio remoto de WindowsBueno

Como ves, SSH es mucho más seguro que protocolos tradicionales como FTP y Telnet. Si antes usabas FTP para transferir archivos, con SSH también puedes gestionar archivos mediante SFTP o SCP.

¿Qué necesitas para conectarte por SSH?

Antes de conectarte por SSH, necesitas la siguiente información de tu proveedor de hosting:

  • Dirección IP o nombre de host del servidor: la dirección de tu servidor
  • Nombre de usuario: a menudo "root" en un VPS nuevo, o un usuario personalizado
  • Contraseña o clave SSH: tu método de autenticación
  • Número de puerto: por defecto el puerto 22, aunque a veces se cambia para reforzar la seguridad
  • Cliente SSH: el software con el que estableces la conexión

Conectarse por SSH en Windows

Windows 10 y 11 incluyen un cliente SSH integrado, así que ya no necesitas instalar software adicional para conectarte por SSH.

Método 1: Windows Terminal o PowerShell

  1. Abre Windows Terminal o PowerShell (búscalo en el menú Inicio)
  2. Escribe el comando SSH: ssh usuario@direccion-ip
  3. Si el puerto no es el predeterminado (22), usa: ssh -p puerto usuario@direccion-ip
  4. En la primera conexión, SSH te pregunta si confías en la huella digital (fingerprint) del servidor: escribe "yes"
  5. Introduce tu contraseña (los caracteres no se muestran, es normal)
  6. Ya estás conectado a tu servidor

Método 2: PuTTY (el cliente SSH clásico)

PuTTY lleva años siendo el cliente SSH más popular para Windows y ofrece funciones adicionales como sesiones guardadas y reenvío de puertos (port forwarding):

  1. Descarga PuTTY desde la web oficial (putty.org)
  2. Abre PuTTY e introduce la dirección IP en "Host Name"
  3. Comprueba que el puerto es correcto (por defecto, el 22)
  4. Selecciona "SSH" como tipo de conexión
  5. Opcional: guarda la sesión para usarla más adelante
  6. Haz clic en Open
  7. Acepta la huella digital del servidor en la primera conexión
  8. Inicia sesión con tu nombre de usuario y tu contraseña

Conectarse por SSH en macOS

macOS incluye un cliente SSH integrado en la aplicación Terminal. Conectarse por SSH desde un Mac es especialmente sencillo:

  1. Abre Terminal (Aplicaciones > Utilidades > Terminal, o búscalo con Spotlight)
  2. Escribe: ssh usuario@direccion-ip
  3. Para un puerto no predeterminado: ssh -p puerto usuario@direccion-ip
  4. Acepta la huella digital del servidor en la primera conexión ("yes")
  5. Introduce tu contraseña
  6. Ya estás conectado

Conectarse por SSH en Linux

Linux trae SSH instalado de serie. Abre tu terminal y usa los mismos comandos que en macOS. El cliente SSH está disponible en todas las distribuciones de Linux sin instalar nada más.

Configurar claves SSH: más seguro que las contraseñas

Usar claves SSH en lugar de contraseñas es el método recomendado para conectarse por SSH. Las claves SSH son pares de claves criptográficas prácticamente imposibles de descifrar.

Generar una clave SSH

  1. Abre tu terminal (en Windows: PowerShell)
  2. Ejecuta el comando: ssh-keygen -t ed25519 -C "tu-email@example.com"
  3. Elige una ubicación para la clave (la predeterminada sirve)
  4. Si quieres, introduce una frase de contraseña (passphrase) para reforzar la seguridad
  5. Se crean dos archivos: la clave privada (guárdala en secreto) y la clave pública (.pub)

Copiar la clave pública al servidor

Copia tu clave pública al servidor con el comando ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@direccion-ip

Después de copiarla, puedes iniciar sesión sin contraseña. El servidor verifica tu identidad mediante la clave privada que tienes en tu ordenador.

Archivo de configuración SSH: guardar conexiones

Si te conectas a menudo a varios servidores, puedes simplificar la conexión por SSH con un archivo de configuración SSH (~/.ssh/config). En él defines alias para tus servidores:

Ejemplo de config SSH

En tu archivo de configuración SSH puedes crear un bloque para cada servidor con el nombre de host, la dirección IP, el nombre de usuario, el número de puerto y la ruta a la clave SSH correcta. Una vez configurado, solo tienes que escribir un alias corto para conectarte, en lugar del comando completo con todos los parámetros.

Transferir archivos por SSH

Además de administrar servidores, también puedes usar SSH para transferir archivos de forma segura. Hay dos métodos principales:

SCP (Secure Copy)

  • Subir un archivo: scp archivo.txt usuario@servidor:/ruta/al/destino/
  • Descargar un archivo: scp usuario@servidor:/ruta/al/archivo.txt ./local/
  • Subir una carpeta: scp -r carpeta/ usuario@servidor:/ruta/al/destino/

SFTP (SSH File Transfer Protocol)

SFTP ofrece una sesión interactiva de transferencia de archivos a través de SSH. Puedes navegar, ver archivos y transferirlos con comandos como ls, cd, get y put. Muchos clientes FTP gráficos, como FileZilla, también son compatibles con conexiones SFTP.

Túneles SSH y reenvío de puertos

Un uso avanzado de SSH es crear túneles, con los que puedes enrutar el tráfico de tu ordenador local a través del servidor. Esto es útil para acceder de forma segura a servicios a los que no se puede llegar directamente, como una instalación de phpMyAdmin que solo está accesible en local.

Reenvío de puertos local

Con el reenvío de puertos local (local port forwarding) haces que un servicio del servidor sea accesible a través de un puerto de tu ordenador local. Así puedes, por ejemplo, abrir phpMyAdmin en tu navegador a través de localhost, aunque en realidad se ejecute en el servidor.

Reenvío de puertos remoto

El reenvío de puertos remoto (remote port forwarding) funciona en sentido contrario: hace que un servicio de tu ordenador local sea accesible a través del servidor. Es útil para enseñar a otras personas un entorno de desarrollo local.

Solucionar los problemas de SSH más habituales

Al conectarte por SSH puedes encontrarte con distintos problemas. Estos son los más habituales y sus soluciones:

Connection refused

Significa que el servicio SSH no se está ejecutando en el servidor o que un firewall bloquea la conexión. Comprueba si el servicio SSH está activo y si el puerto correcto está abierto en el firewall.

Permission denied

Tu contraseña o tu clave SSH no se aceptan. Comprueba que usas el nombre de usuario y la contraseña correctos. Si usas claves SSH, verifica que tu clave pública está correctamente en el servidor y que los permisos de la carpeta .ssh son correctos (700 para la carpeta, 600 para los archivos).

Connection timed out

El servidor no responde. Comprueba que la dirección IP es correcta, que el servidor está en línea y que no hay problemas de red. Comprueba también que no se ha cambiado el puerto SSH.

Host key verification failed

La huella digital del servidor ha cambiado desde tu última conexión. Puede ocurrir después de reinstalar el servidor. Si estás seguro de que el servidor es legítimo, elimina la clave antigua de tu archivo known_hosts.

Buenas prácticas de seguridad en SSH

Conectarse por SSH es seguro por naturaleza gracias al cifrado, pero hay medidas adicionales que refuerzan aún más la seguridad:

  • Usa claves SSH en lugar de contraseñas
  • Desactiva la autenticación por contraseña después de configurar las claves
  • Cambia el puerto SSH predeterminado del 22 a un número cualquiera
  • Bloquea el inicio de sesión como root por SSH (usa un usuario con sudo)
  • Instala fail2ban para bloquear ataques de fuerza bruta
  • Mantén actualizados tu cliente SSH y tu servidor
  • Usa una frase de contraseña en tu clave privada

Consulta también nuestra guía para proteger tu página web con más medidas de seguridad que puedes tomar después de configurar una conexión SSH.

Conectarse por SSH es una habilidad fundamental que todo administrador de páginas web y servidores debe dominar. Con los pasos de esta guía puedes conectarte de forma segura a tu servidor, transferir archivos y aprovechar funciones avanzadas como los túneles SSH. Empieza por las funciones básicas y amplía tus conocimientos poco a poco a medida que ganes experiencia en la administración de servidores.

SSH en la práctica: flujos de trabajo habituales

Una vez aprendidos los conceptos básicos, hay flujos de trabajo SSH prácticos que hacen más eficiente la administración diaria de tus servidores.

Administrar varios servidores con SSH

Si administras varios servidores, un archivo de configuración SSH bien organizado se vuelve imprescindible. Define alias para todos tus servidores para conectarte con un comando corto. Usa herramientas como Ansible o Fabric para ejecutar los mismos comandos en varios servidores a la vez. Así ahorras muchísimo tiempo en tareas como desplegar actualizaciones o comprobar el estado de los servidores.

Reenvío del agente SSH (agent forwarding)

El reenvío del agente SSH te permite usar tus claves SSH locales a través de un servidor intermedio. Es útil cuando te conectas a servidores internos desde un host bastión. En lugar de colocar tu clave privada en el servidor intermedio, la autenticación se reenvía a tu agente SSH local. Esto aumenta considerablemente la seguridad.

Tareas automáticas por SSH

Combina la conexión por SSH con scripts para automatizar tareas. Desde un script local puedes ejecutar comandos SSH en un servidor remoto sin iniciar sesión de forma interactiva. Es la base de los scripts de despliegue, las comprobaciones de monitorización y las copias de seguridad automatizadas. Asegúrate de que la autenticación con clave SSH está bien configurada para acceder sin contraseña.

Alternativas a SSH y herramientas complementarias

Además del cliente SSH estándar, hay herramientas complementarias que mejoran tu experiencia con la administración remota de servidores. Mosh (Mobile Shell) es una alternativa a SSH que gestiona mejor las conexiones a internet inestables y se reconecta automáticamente tras una interrupción. Es especialmente útil si estás fuera y te conectas por SSH con internet móvil. Termius y Royal TSX ofrecen clientes SSH gráficos con funciones avanzadas como pestañas, gestión de sesiones e integración con SFTP. Para quienes usan Windows, Windows Terminal ofrece una interfaz moderna que combina conexiones SSH con sesiones de PowerShell y WSL en una sola ventana con pestañas y temas personalizables.

Conectar por SSH: configuración avanzada con el archivo config

Si te conectas a menudo a varios servidores, escribir comandos SSH completos enseguida resulta poco práctico. El archivo config de SSH ofrece una solución elegante: guarda los datos de conexión y permite reutilizarlos.

El archivo config está en ~/.ssh/config y contiene bloques por servidor con todos los ajustes de conexión. Así, en lugar de un comando largo con el puerto, el nombre de usuario y el archivo de clave, puedes usar simplemente un alias corto.

Opciones útiles del config de SSH

OpciónFunciónEjemplo
HostAlias de la conexiónHost mi-servidor
HostNameDirección IP o nombre de dominioHostName 192.168.1.100
UserNombre de usuarioUser admin
PortNúmero de puerto SSHPort 7777
IdentityFileRuta a la clave privadaIdentityFile ~/.ssh/id_server
ServerAliveIntervalIntervalo de keep-alive en segundosServerAliveInterval 60
ProxyJumpConectar a través de otro servidorProxyJump bastion

Con ProxyJump puedes conectarte, a través de un host bastión o un servidor de salto, a servidores a los que no se puede llegar directamente desde internet. Es una medida de seguridad muy extendida en la que todo el acceso SSH pasa por un punto central.

Conectar por SSH: túneles y reenvío de puertos

SSH es mucho más que una conexión de terminal. Con los túneles SSH puedes establecer conexiones seguras con servicios a los que normalmente no se puede llegar directamente. Es una técnica imprescindible para administrar de forma segura bases de datos, interfaces web y otros servicios de tu servidor.

Hay tres tipos de reenvío de puertos SSH:

  • Reenvío de puertos local (-L): haz que un servicio del servidor sea accesible a través de un puerto local. Es ideal, por ejemplo, para acceder en local a phpMyAdmin o Grafana sin abrirlos al público.
  • Reenvío de puertos remoto (-R): haz que un servicio local sea accesible a través del servidor. Es útil para probar webhooks o compartir un entorno de desarrollo local.
  • Reenvío de puertos dinámico (-D): crea un proxy SOCKS a través del servidor. Todo tu tráfico se enruta cifrado a través de la conexión SSH.

El reenvío de puertos local es la variante más utilizada. Supón que tienes en tu servidor una base de datos MySQL que solo es accesible en local (una buena práctica de seguridad para VPS). Con el reenvío de puertos local conectas tu puerto local 3306 con el puerto de MySQL del servidor, de modo que puedes trabajar con un cliente de bases de datos local como si la base de datos se ejecutara en tu propio ordenador.

Seguridad en SSH: gestión de claves y buenas prácticas

Una conexión SSH es segura, pero solo si gestionas correctamente las claves y la configuración. Sigue estas buenas prácticas para obtener la máxima seguridad:

  1. Usa claves ED25519: es el tipo de clave más moderno y seguro. Las claves RSA siguen siendo seguras con 4096 bits, pero ED25519 es más rápido y compacto.
  2. Protege las claves con una frase de contraseña: una passphrase en tu clave privada te protege incluso si alguien accede a tu ordenador. Usa ssh-agent para guardar la passphrase en caché y no tener que introducirla cada vez.
  3. Rota las claves periódicamente: genera nuevos pares de claves cada año y elimina las claves públicas antiguas de tus servidores.
  4. Limita las claves por servidor: usa pares de claves distintos para servidores diferentes. Si una clave queda comprometida, así limitas el daño.
  5. Configura AllowUsers: especifica en sshd_config qué usuarios pueden iniciar sesión por SSH. Así evitas accesos a través de cuentas no previstas.

Combina la seguridad SSH con la autenticación en dos pasos para una protección máxima. Usa comandos de Linux para revisar con regularidad la configuración SSH y las claves conectadas en tu servidor.

Conectar por SSH: solucionar los problemas más habituales

Al configurar y mantener conexiones SSH, es habitual encontrarse con problemas. Saber diagnosticarlos y resolverlos con rapidez es esencial para administrar servidores con eficacia.

El problema más habitual es "Connection refused". Significa que el servicio SSH no se está ejecutando en el servidor o que un firewall bloquea la conexión. Comprueba en el panel de hosting si el servidor está encendido y si el puerto SSH está abierto. "Permission denied (publickey)" indica que no se acepta tu clave SSH. Comprueba que tu clave pública se ha añadido correctamente al archivo authorized_keys del servidor y que los permisos de los archivos son correctos (700 para el directorio .ssh y 600 para authorized_keys).

"Connection timed out" suele indicar un problema de red o un nombre de host y un puerto incorrectos. Comprueba que usas la dirección IP y el número de puerto correctos. Con "Host key verification failed", la clave del servidor ha cambiado desde tu última conexión, lo que puede deberse a una reinstalación, pero también a un ataque de intermediario (man-in-the-middle). Antes de eliminar la clave antigua, verifica por otro canal que el servidor ha cambiado realmente.

Conectar por SSH: SFTP y SCP para transferir archivos

Una conexión SSH no solo ofrece acceso al terminal, sino también transferencia segura de archivos mediante SFTP y SCP. Ambos protocolos usan la conexión SSH existente para transferir archivos cifrados, lo que los hace más seguros que el FTP sin cifrar.

SCP (Secure Copy) es ideal para transferencias de archivos rápidas y puntuales. Su sintaxis se parece a la del comando cp, pero funciona a través de la red. SFTP (SSH File Transfer Protocol) ofrece una sesión interactiva similar al FTP tradicional, pero totalmente cifrada. Además, SFTP permite reanudar transferencias interrumpidas, listar directorios y gestionar archivos en el servidor. Para transferir archivos de forma gráfica puedes usar herramientas como FileZilla, WinSCP o Cyberduck. Son compatibles con SFTP y ofrecen una interfaz conocida de arrastrar y soltar para gestionar los archivos de tu servidor.

Conexión SSH: automatización y scripts

Las conexiones SSH dan lo mejor de sí cuando las combinas con la automatización. Con SSH puedes ejecutar comandos en servidores remotos sin una sesión interactiva, lo que constituye la base de la administración automatizada de servidores y de los flujos de despliegue.

La ejecución remota de comandos por SSH te permite realizar tareas en varios servidores a la vez. Es especialmente valiosa para aplicar actualizaciones de seguridad, comprobar el estado de los servidores o desplegar cambios de configuración en una flota de servidores. Herramientas como Ansible, Puppet y Chef se basan en SSH para automatizar toda la configuración de los servidores y hacerla reproducible.

Para una automatización sencilla basta con un script de Bash que ejecute comandos por SSH en tus servidores. Combínalo con tareas cron para trabajos periódicos como comprobar el espacio en disco, renovar certificados SSL o hacer copias de seguridad. Usa claves SSH sin passphrase para las tareas automatizadas, pero limita esas claves a comandos concretos mediante el archivo authorized_keys para que no se puedan usar indebidamente con acceso ilimitado.