SSH, que significa "Secure Shell" (en español, "Consola Segura"), es un protocolo de red y un conjunto de utilidades que permiten a los usuarios acceder de forma segura a un sistema informático remoto a través de una red no segura, como Internet.
A diferencia de protocolos más antiguos como Telnet o FTP, que enviaban la información en texto plano, SSH cifra toda la comunicación entre el cliente (el ordenador desde el que te conectas) y el servidor (el ordenador al que te conectas). Esto significa que incluso si alguien intercepta los datos, no podrá leer la información, incluyendo nombres de usuario, contraseñas y los comandos que se ejecutan.
El protocolo SSH utiliza una arquitectura de cliente-servidor. Existen dos versiones principales del protocolo SSH:
La autenticación se puede realizar de varias maneras, siendo las más comunes:
~/.ssh/authorized_keys.El servidor utiliza la clave pública para verificar que el cliente es quien dice ser, sin necesidad de enviar la contraseña a través de la red.
sudo apt update
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo yum install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
/etc/ssh/sshd_config - Configuración del servidor SSH/etc/ssh/ssh_config - Configuración del cliente SSH~/.ssh/config - Configuración personal del cliente~/.ssh/authorized_keys - Claves públicas autorizadasssh usuario@hostname
ssh -p 2222 usuario@hostname
scp archivo.txt usuario@servidor:/ruta/destino/
scp usuario@servidor:/ruta/archivo.txt .
sftp usuario@hostname
ssh usuario@servidor "ls -la /home"
ssh -L 8080:localhost:80 usuario@servidor
ssh-keygen -t rsa -b 4096 -C "tu-email@ejemplo.com"
ssh-copy-id usuario@servidor
El SSH Agent permite gestionar claves SSH y mantenerlas en memoria para conexiones más rápidas y convenientes.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
En ~/.ssh/config puedes definir configuraciones específicas para diferentes hosts:
Host servidor-produccion
HostName 192.168.1.100
User miusuario
Port 22
IdentityFile ~/.ssh/produccion_key
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
/var/log/auth.log, /var/log/secure)ssh-audit para verificar la configuración de seguridadPort 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AllowUsers usuario1 usuario2
ClientAliveInterval 300
ClientAliveCountMax 0
MaxAuthTries 3
LoginGraceTime 20
ssh -v usuario@servidor # Modo verbose
nmap -p 22 servidor # Verificar si el puerto está abierto
telnet servidor 22 # Probar conectividad básica
ssh-keyscan servidor # Obtener fingerprint del host
chmod 600 ~/.ssh/id_rsachmod 700 ~/.sshdocker run -d -p 2222:22 \
-v /host/path:/home/user \
--name ssh-container ssh-server-image