Dominá SSH y SCP en Linux: Qué son, sintaxis, opciones y ejemplos prácticos

DUGLAS MORENODUGLAS MORENO 👁 11

Introducción

En el día a día de cualquier administrador de sistemas o desarrollador que trabaja con servidores Linux, SSH (Secure Shell) y SCP (Secure Copy) son herramientas esenciales. Ambas se basan en el mismo protocolo de cifrado, pero cumplen roles distintos: SSH permite abrir una sesión interactiva segura en una máquina remota, mientras que SCP sirve para transferir archivos de forma segura entre el host local y el remoto.

A continuación, vamos a desglosar cada comando, explicar su sintaxis, las banderas más usadas y presentar ejemplos reales que podés copiar y pegar en la terminal.


1. SSH – Conexión remota segura

1.1. Qué hace

ssh abre un canal cifrado entre tu computadora y otra máquina que tenga un servidor SSH corriendo (usualmente el daemon sshd). Una vez conectado, podés ejecutar comandos como si estuvieras sentado delante del equipo remoto.

1.2. Sintaxis básica

ssh [opciones] usuario@host
  • usuario: nombre de la cuenta en la máquina remota.
  • host: dirección IP o nombre de dominio del servidor.

1.3. Opciones/flags más usadas

Flag Descripción
-p puerto Especifica el puerto del servidor SSH (por defecto 22).
-i ruta/clave.pem Usa una clave privada distinta a la predeterminada (~/.ssh/id_rsa).
-L puerto_local:destino:puerto_remoto Crea un túnel de reenvío de puerto local (port forwarding).
-R puerto_remoto:destino:puerto_local Reenvío de puerto remoto.
-N No ejecutar comandos remotos; útil solo para túneles.
-C Habilita compresión de datos, útil en conexiones lentas.
-v, -vv, -vvv Muestra niveles de verbosidad para depuración.

1.4. Ejemplos prácticos

Conexión simple

ssh juan@192.168.1.45

Con puerto no estándar

ssh -p 2222 juan@ejemplo.com

Uso de clave privada personalizada

ssh -i ~/.ssh/mi_clave.pem juan@servidor.com

Reenvío de puerto local (ejemplo: acceder a un servidor MySQL que solo escucha en localhost del remoto)

ssh -L 3307:127.0.0.1:3306 juan@servidor.com

Ahora podés conectar tu cliente MySQL local a localhost:3307 y el tráfico será redirigido al MySQL del servidor remoto.

Túnel solo para reenvío (sin abrir shell)

ssh -N -L 8080:127.0.0.1:80 juan@servidor.com

Depuración de conexión fallida

ssh -vvv juan@servidor.com

2. SCP – Copia segura de archivos

2.1. Qué hace

scp permite copiar archivos y directorios entre el host local y uno remoto (o entre dos remotos) usando el mismo protocolo cifrado que SSH. La sintaxis es similar a la de cp, pero con la posibilidad de especificar rutas remotas.

2.2. Sintaxis básica

scp [opciones] origen destino
  • origen y destino pueden ser rutas locales o remotas (usuario@host:/ruta).
  • Cuando se trata de directorios, se usa la flag -r para copiar recursivamente.

2.3. Opciones/flags más usadas

Flag Descripción
-r Copia recursivamente directorios.
-P puerto Define el puerto del servidor SSH (nota: mayúscula P).
-i ruta/clave.pem Usa una clave privada específica.
-C Habilita compresión.
-p Preserva los timestamps y modos de archivo originales.
-q Modo silencioso, suprime el progreso.

2.4. Ejemplos prácticos

Subir un archivo al servidor

scp -i ~/.ssh/mi_clave.pem archivo.txt juan@servidor.com:/home/juan/

Descargar un directorio completo

scp -r juan@servidor.com:/var/www/html ./html_local

Copia usando puerto no estándar

scp -P 2222 juan@servidor.com:/etc/nginx/nginx.conf ./

Copia entre dos hosts remotos (desde la máquina donde ejecutás el comando)

scp juan@host1:/ruta/archivo.log juan@host2:/ruta/destino/

Necesitás tener acceso SSH a ambos hosts desde la máquina origen.

Preservar permisos y timestamps al sincronizar

scp -p -r ./mi_app juan@servidor.com:/opt/

Uso combinado con compresión y modo silencioso (útil en scripts)

scp -C -q -i ~/.ssh/clave.pem archivo.zip juan@servidor.com:/tmp/

3. Buenas prácticas y trucos avanzados

  1. Configurar ~/.ssh/config para evitar escribir siempre usuario, host y puerto.

    Host mi-servidor
        HostName servidor.com
        User juan
        Port 2222
        IdentityFile ~/.ssh/mi_clave.pem
    

    Luego simplemente ejecutás ssh mi-servidor o scp archivo.txt mi-servidor:/ruta/.

  2. Usar ssh-agent para cargar tu clave una sola vez y evitar introducir la contraseña cada vez.

    eval $(ssh-agent -s)
    ssh-add ~/.ssh/mi_clave.pem
    
  3. Limitar el número de intentos de autenticación agregando MaxAuthTries 3 en /etc/ssh/sshd_config del servidor.

  4. Desactivar el reenvío de X11 si no lo necesitás, añadiendo -x a ssh para evitar sobrecarga.

  5. Comprimir antes de transferir archivos muy grandes con tar y luego usar scp.

    tar czf proyecto.tar.gz proyecto/
    scp proyecto.tar.gz juan@servidor.com:/backups/
    

4. Conclusión

Dominar SSH y SCP te brinda una herramienta poderosa para gestionar servidores de forma segura y eficiente. Desde abrir una consola remota, pasar puertos, hasta copiar directorios completos con preservación de permisos, estas utilidades cubren la mayor parte de las necesidades diarias. Aprovechá las opciones avanzadas y los archivos de configuración para simplificar tu flujo de trabajo y reducir la fricción al administrar infraestructuras Linux.

¡Ahora ya podés ejecutar estos comandos con confianza y adaptar los ejemplos a tus propios entornos!

Comentarios (0)

Sé el primero en comentar.

Dejá tu comentario