Anexo H: SSH, SCP y Llaves - Mini-Curso Práctico
Anexo H: SSH, SCP y Llaves - Mini-Curso Práctico
Introducción
En administración de servidores, SSH es la herramienta base: te conecta a servidores remotos, te permite ejecutar comandos, copiar archivos y automatizar tareas.
Este mini-curso está diseñado para que puedas trabajar con servidores de forma segura y repetible: llaves, agentes, hardening básico y troubleshooting.
⏱️ Duración estimada: 60-90 minutos
Objetivos
- Conectarte por SSH de forma segura
- Crear y usar llaves (ed25519 recomendado)
- Copiar archivos con
scpy sincronizar conrsync - Aplicar hardening básico de
sshd - Diagnosticar errores comunes (auth, DNS, puertos)
Conceptos clave
- Cliente SSH: tu PC (desde donde te conectas)
- Servidor SSH (sshd): el servidor remoto
- Llave pública/privada: autenticación sin contraseña (la privada nunca se comparte)
- Agente SSH: mantiene llaves cargadas en memoria para no reingresar passphrase
Ejemplo 1: Conexión básica (multi-SO)
BASH
1$ ssh alumno@192.168.56.10
The authenticity of host '192.168.56.10 (192.168.56.10)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
alumno@192.168.56.10's password:- 1
- ssh usuario@ip inicia sesión remota; la primera vez verás el mensaje de fingerprint del host.
BASH
1$ ssh alumno@192.168.56.10
alumno@192.168.56.10's password:- 1
- ssh viene instalado en macOS y funciona igual que en Linux.
POWERSHELL
1PS> ssh alumno@192.168.56.10
alumno@192.168.56.10's password:- 1
- ssh está disponible en Windows 10/11 (OpenSSH). Si no está, se instala como característica opcional.
Ejemplo 2: Crear llaves y autenticación sin password
BASH
1$ ssh-keygen -t ed25519 -C "alumno@abacom"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/alumno/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
2$ ssh-copy-id -i ~/.ssh/id_ed25519.pub alumno@192.168.56.10
Number of key(s) added: 1
3$ ssh alumno@192.168.56.10
Welcome to Ubuntu Server LTS- 1
- ssh-keygen -t ed25519 crea un par de llaves moderno y seguro.
- 2
-
ssh-copy-id instala la llave pública en
~/.ssh/authorized_keysdel servidor. - 3
- ssh ya no pide password si la llave está instalada y aceptada.
BASH
- 1
-
ssh-keygen crea llaves en
~/.ssh/. - 2
-
cat | ssh … es alternativa a
ssh-copy-id(no siempre existe en macOS). - 3
- ssh valida el login sin password.
POWERSHELL
- 1
-
ssh-keygen crea llaves en
%USERPROFILE%\.ssh. - 2
- type | ssh … copia la llave pública al servidor.
- 3
- ssh prueba el acceso sin password.
Ejemplo 3: Copiar archivos con scp y rsync
BASH
- 1
- scp local -> remoto copia un archivo al servidor.
- 2
- scp remoto -> local trae un archivo del servidor.
- 3
- rsync -avz sincroniza directorios eficientemente (reintenta, delta, conserva metadata).
Hardening básico de sshd (con cuidado)
Warning⚠️ ADVERTENCIA CRÍTICA
Cambiar sshd_config sin validación puede dejarte sin acceso remoto.
Lo que podría salir mal: - Cortas tu sesión y no puedes volver a entrar. - Deshabilitas el método de autenticación que estabas usando.
Cómo prevenirlo: 1. Mantén una sesión SSH abierta mientras pruebas. 2. Valida configuración antes de reiniciar el servicio. 3. Aplica cambios de a uno y verifica.
BASH
- 1
- cp crea un backup del archivo de configuración.
- 2
- sshd -t valida sintaxis sin reiniciar.
- 3
- systemctl reload recarga configuración con menor riesgo que reiniciar.
- 4
- ss confirma que SSH sigue escuchando en el puerto.
Troubleshooting rápido
- 1
- ssh -vvv muestra el motivo exacto de fallo (llave, auth, kex, host key, etc.).
- 2
- nc -vz host 22 valida conectividad al puerto 22.
- 3
- ping valida conectividad IP básica (si ICMP está permitido).
Mejores prácticas
- Usa llaves
ed25519con passphrase. - Deshabilita password auth solo cuando ya validaste llaves.
- Mantén backups de
sshd_configy valida consshd -t. - Usa
ssh -vvvcuando algo falla (no adivines).