Cómo conectarse a un servidor remoto usando el comando SSH básico
Domina el comando `ssh` fundamental para un acceso seguro a servidores remotos. Esta guía esencial desglosa la sintaxis principal, incluyendo nombre de usuario, dirección de host y opciones de puerto personalizado (`-p`). Aprende a establecer conexiones usando tanto contraseña como la autenticación basada en clave más segura (`-i`). Perfecto para nuevos usuarios y administradores, este artículo proporciona ejemplos prácticos y consejos esenciales para la resolución de problemas, asegurando una conexión robusta y eficiente en todo momento.
Cómo conectarse a un servidor remoto usando el comando SSH básico
Secure Shell (SSH) es la forma estándar de abrir una sesión de terminal segura en un servidor remoto. Si tienes una dirección de servidor, un nombre de usuario y credenciales válidas, el comando básico ssh te lleva desde tu computadora portátil a un shell en esa máquina.
Los problemas comunes suelen ser simples: el nombre de usuario incorrecto, el puerto incorrecto, una clave privada faltante o una solicitud de clave de host del servidor que no has visto antes.
Prerrequisitos para la conexión
Antes de intentar conectarte, asegúrate de tener los siguientes componentes listos:
- Cliente SSH: La mayoría de los sistemas operativos modernos (Linux, macOS) incluyen el cliente OpenSSH por defecto. Windows 10/11 también incluye un cliente OpenSSH integrado, aunque las versiones anteriores pueden requerir una aplicación de terceros como PuTTY.
- Dirección del servidor (Host): La dirección IP (ej.,
192.168.1.50) o el nombre de dominio completamente calificado (FQDN, ej.,server.example.com) de la máquina remota. - Nombre de usuario: Una cuenta de usuario válida en el servidor remoto (ej.,
root,ubuntu,jdoe). - Credenciales: La contraseña para el usuario especificado o un archivo de clave privada SSH correspondiente.
La sintaxis básica del comando SSH
Establecer una conexión SSH se basa en una estructura de sintaxis simple y consistente. El comando requiere especificar quién eres y dónde quieres ir.
Desglose de la sintaxis principal
La estructura más básica del comando SSH es:
ssh [opciones] usuario@dirección_host
| Componente | Descripción | Valor de ejemplo |
|---|---|---|
ssh |
El comando que inicia la conexión Secure Shell. | - |
[opciones] |
Banderas opcionales para modificar la conexión (ej., puerto, archivo de identidad). | -p 2222 |
usuario |
El nombre de la cuenta en el servidor remoto con la que deseas iniciar sesión. | sysadmin |
dirección_host |
La dirección IP o nombre de dominio del servidor remoto. | 172.31.255.10 o webserver.com |
Conectarse al puerto predeterminado
Por defecto, los servidores SSH escuchan en el puerto TCP 22. Si el servidor remoto usa este puerto predeterminado, solo necesitas el nombre de usuario y el host.
Ejemplo: Conectarse como usuario jdoe al servidor en 192.168.1.100
ssh [email protected]
Si es la primera vez que te conectas al servidor, tu cliente SSH te pedirá que verifiques la clave de host del servidor. Confírmala solo si la huella digital coincide con lo que espera tu proveedor o administrador. Después de aceptarla, SSH almacena la clave en ~/.ssh/known_hosts.
Opciones de conexión esenciales
Si bien la sintaxis básica funciona para la mayoría de las conexiones estándar, varias opciones se utilizan con frecuencia para personalizar o solucionar problemas de la conexión.
Especificar un puerto personalizado (-p)
Por razones de seguridad, muchos administradores de servidores cambian el puerto SSH predeterminado (22) a un puerto no estándar (ej., 2222, 50000). Debes usar la bandera -p para especificar este puerto personalizado.
Sintaxis:
ssh -p [número_puerto] usuario@dirección_host
Ejemplo: Conectarse a appserver.local en el puerto 5555
ssh -p 5555 [email protected]
La opción -p normalmente va antes de usuario@host. Esto mantiene el comando fácil de leer y evita confundirlo con los argumentos del comando remoto.
Salida detallada (-v)
Si tienes problemas para conectarte (ej., tiempos de espera de conexión, fallo de autenticación), el modo detallado es invaluable para solucionar problemas. La bandera -v aumenta el nivel de salida, mostrando pasos detallados del proceso de conexión, incluyendo negociación, intercambio de claves e intentos de autenticación.
Sintaxis:
ssh -v usuario@dirección_host
Para una depuración aún más detallada, puedes usar -vv o -vvv (máxima verbosidad).
Ejecutar un solo comando remoto
SSH se usa típicamente para abrir una sesión de shell interactiva. Sin embargo, puedes ejecutar un solo comando en el servidor remoto sin establecer una sesión continua. La conexión ejecuta el comando, devuelve la salida y luego se cierra inmediatamente.
Sintaxis:
ssh usuario@dirección_host "comando a ejecutar"
Ejemplo: Verificar el espacio en disco (df -h) en el servidor remoto:
ssh [email protected] "df -h"
Esto es útil para verificaciones rápidas:
ssh [email protected] "systemctl status nginx --no-pager"
Métodos de autenticación
Una vez que se inicia la conexión, el servidor requiere autenticación para verificar tu identidad. Los dos métodos principales son la autenticación por contraseña y la autenticación basada en claves.
1. Autenticación por contraseña
Este es el método más simple, donde el servidor te solicita la contraseña del usuario después de que se establece la conexión. SSH cifra la transmisión de la contraseña.
Proceso:
- Ejecuta el comando
ssh. - El servidor solicita:
[email protected]'s password: - Escribe la contraseña (la entrada no será visible).
La autenticación por contraseña es conveniente, pero los servidores expuestos al público a menudo son objetivo de intentos de inicio de sesión por fuerza bruta. Para sistemas expuestos a Internet, el inicio de sesión basado en claves junto con la autenticación por contraseña deshabilitada suele ser la base más segura.
2. Autenticación basada en claves
La autenticación basada en claves utiliza un par de claves criptográficas: una clave pública almacenada en el servidor y una clave privada correspondiente almacenada de forma segura en tu máquina local. Este método es mucho más seguro que las contraseñas.
Especificar el archivo de identidad (-i)
Si tu archivo de clave privada no está en la ubicación predeterminada (~/.ssh/id_rsa o ~/.ssh/id_ed25519), debes usar la opción -i para especificar su ubicación.
Sintaxis:
ssh -i /ruta/al/archivo/de/clave/privada usuario@dirección_host
Ejemplo: Conectarse usando una clave específica llamada prod_server_key
ssh -i ~/.ssh/prod_server_key [email protected]
Configurar la autenticación por clave (Resumen breve)
Para usar la autenticación por clave, normalmente sigues estos pasos:
- Genera el par de claves en tu máquina local usando
ssh-keygen. - Copia la clave pública al archivo
~/.ssh/authorized_keysdel servidor remoto, generalmente usando la utilidadssh-copy-id.
ssh-copy-id usuario@dirección_host
Resumen de comandos SSH prácticos
| Objetivo | Ejemplo de comando | Descripción |
|---|---|---|
| Conexión estándar | ssh [email protected] |
Se conecta usando el puerto predeterminado 22. |
| Puerto personalizado | ssh -p 443 [email protected] |
Se conecta al puerto 443. |
| Autenticación por clave | ssh -i ~/.ssh/dev_key dev@testbed |
Se conecta usando un archivo de clave privada específico. |
| Depuración de conexión | ssh -v [email protected] |
Ejecuta la conexión en modo detallado para solucionar problemas. |
| Comando remoto | ssh user@host "uptime" |
Ejecuta el comando uptime y sale. |
Verificaciones rápidas de solución de problemas
Si el comando falla, verifica el error antes de cambiar la configuración del servidor:
Connection timed out: El host o el puerto pueden estar bloqueados por un firewall, grupo de seguridad o problema de enrutamiento.Connection refused: El servidor es accesible, pero no hay nada escuchando en ese puerto.Permission denied (publickey): El servidor no aceptó tu clave, nombre de usuario o método de autenticación.REMOTE HOST IDENTIFICATION HAS CHANGED: La clave de host guardada ya no coincide. Esto puede suceder después de una reconstrucción del servidor, pero también puede indicar un problema de seguridad grave. Verifica la huella digital antes de eliminar la clave antigua.
Para problemas de clave, este comando generalmente proporciona suficiente detalle:
ssh -vvv -i ~/.ssh/prod_server_key [email protected]
Conclusión práctica
Comienza con ssh user@host. Agrega -p cuando el servidor use un puerto personalizado, agrega -i cuando necesites una clave privada específica, y usa -v o -vvv cuando los errores de autenticación o red no estén claros. Para servidores expuestos a Internet, avanza hacia la autenticación basada en claves y mantén los inicios de sesión con contraseña deshabilitados cuando tu proceso de acceso lo permita.