Cómo conectarse a un servidor remoto usando el comando básico SSH
Introducción a Secure Shell (SSH)
Secure Shell (SSH) es la columna vertebral de la administración remota segura, ya que proporciona un protocolo de red criptográfico para operar servicios de red de forma segura a través de una red no segura. Es el método estándar utilizado por administradores de sistemas y desarrolladores para acceder y gestionar servidores Linux, Unix y macOS de forma remota. A diferencia de protocolos antiguos e inseguros como Telnet, SSH cifra todos los datos transmitidos, incluyendo nombres de usuario, contraseñas y salida de comandos, garantizando la privacidad y la integridad.
Esta guía se centra en el aspecto más fundamental del protocolo: establecer una conexión simple y directa utilizando la sintaxis básica del comando ssh. Ya sea que esté realizando mantenimiento del sistema, implementando código o transfiriendo archivos, comprender el mecanismo de conexión básico es el primer paso esencial para utilizar todo el poder del protocolo Secure Shell.
Prerrequisitos para la conexión
Antes de intentar conectarse, asegúrese de tener listos los siguientes componentes:
- 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 completo (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: Ya sea la contraseña para el usuario especificado o un archivo de clave SSH privada correspondiente.
La Sintaxis Básica del Comando SSH
Establecer una conexión SSH se basa en una estructura de sintaxis simple y coherente. El comando requiere especificar quién eres y adónde quieres ir.
Desglose de la Sintaxis Central
La estructura más básica del comando SSH es:
ssh [opciones] nombre_usuario@direccion_host
| Componente | Descripción | Valor de Ejemplo |
|---|---|---|
ssh |
El comando que inicia la conexión Secure Shell. | - |
[opciones] |
Indicadores opcionales para modificar la conexión (ej. puerto, archivo de identidad). | -p 2222 |
nombre_usuario |
El nombre de la cuenta en el servidor remoto con el que desea iniciar sesión. | sysadmin |
direccion_host |
La dirección IP o el nombre de dominio del servidor remoto. | 172.31.255.10 o webserver.com |
Conexión al Puerto Predeterminado
Por defecto, el servidor SSH escucha en el puerto TCP 22. Si el servidor remoto utiliza este puerto predeterminado, no necesita especificar ninguna opción aparte del nombre de usuario y el host.
Ejemplo: Conexión como el usuario jdoe al servidor en 192.168.1.100
ssh [email protected]
Si es la primera vez que se conecta al servidor, el cliente SSH le pedirá que verifique la clave del host del servidor, preguntándole si desea confiar en la conexión. Debe escribir yes para continuar. Luego, esta clave se almacena en su archivo ~/.ssh/known_hosts.
Opciones de Conexión Esenciales
Aunque 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). Debe usar el indicador -p para especificar este puerto personalizado.
Sintaxis:
ssh -p [numero_de_puerto] nombre_usuario@direccion_host
Ejemplo: Conexión a appserver.local en el puerto 5555
ssh -p 5555 [email protected]
Consejo: Ubicación del Puerto
Tenga en cuenta que la opción
-paparece antes del argumentonombre_usuario@host.
Salida Detallada (-v)
Si tiene problemas para conectarse (ej. tiempos de espera de conexión, fallo de autenticación), el modo detallado es invaluable para la solución de problemas. El indicador -v aumenta el nivel de salida, mostrando los pasos detallados del proceso de conexión, incluyendo la negociación, el intercambio de claves e intentos de autenticación.
Sintaxis:
ssh -v nombre_usuario@direccion_host
Para una depuración aún más detallada, puede usar -vv o -vvv (verbosidad máxima).
Ejecutar un Único Comando Remoto
SSH se utiliza normalmente para abrir una sesión de shell interactiva. Sin embargo, puede ejecutar un único 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 nombre_usuario@direccion_host "comando a ejecutar"
Ejemplo: Comprobar el espacio en disco (df -h) en el servidor remoto:
ssh [email protected] "df -h"
Métodos de Autenticación
Una vez iniciada la conexión, el servidor requiere autenticación para verificar su 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 sencillo, en el que el servidor le solicita la contraseña del usuario después de establecer la conexión. SSH cifra la transmisión de la contraseña.
Proceso:
- Ejecute el comando
ssh. - El servidor solicita:
Contraseña de [email protected]: - Escriba la contraseña (la entrada no será visible).
Advertencia: Preocupaciones de Seguridad
Aunque es conveniente, la autenticación por contraseña es vulnerable a ataques de fuerza bruta. Las mejores prácticas dictan deshabilitar por completo la autenticación por contraseña en servidores accesibles públicamente y depender únicamente de claves SSH.
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 su máquina local. Este método es mucho más seguro que las contraseñas.
Especificación del Archivo de Identidad (-i)
Si su archivo de clave privada no está en la ubicación predeterminada (~/.ssh/id_rsa o ~/.ssh/id_ed25519), debe usar la opción -i para especificar su ubicación.
Sintaxis:
ssh -i /ruta/al/archivo/de/clave/privada nombre_usuario@direccion_host
Ejemplo: Conexión usando una clave específica llamada prod_server_key
ssh -i ~/.ssh/prod_server_key [email protected]
Configuración de la Autenticación por Claves (Breve Resumen)
Para usar la autenticación por claves, generalmente se siguen estos pasos:
- Genere el par de claves en su máquina local usando
ssh-keygen. - Copie la clave pública al archivo
~/.ssh/authorized_keysdel servidor remoto, lo que generalmente se hace usando la utilidadssh-copy-id.
ssh-copy-id nombre_usuario@direccion_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. |
Conclusión
El comando básico ssh es la puerta de entrada a la administración remota de servidores. Al dominar la sintaxis central (ssh usuario@host) y comprender las opciones esenciales como la especificación del puerto (-p) y los archivos de identidad (-i), puede establecer conexiones seguras de manera confiable en cualquier entorno de servidor remoto. El cambio hacia la autenticación basada en claves es crucial para mantener un alto nivel de seguridad y debe priorizarse sobre los inicios de sesión con contraseña siempre que sea posible. Una vez conectado, tiene acceso completo a la línea de comandos para administrar su máquina remota.