SSH en Mac: guía completa con Terminal

Por qué usar SSH en Mac
SSH (Secure Shell) es un protocolo que crea un canal cifrado para administrar máquinas remotas y transferir archivos. Es la forma estándar y segura de trabajar con servidores, contenedores y otras máquinas desde la línea de comandos en macOS.
Importante: antes de cambiar configuraciones en servidores de producción, prueba en un entorno controlado.
1. Abrir Terminal
Opciones rápidas para abrir Terminal en macOS:
- Spotlight: pulsa Command + Space, escribe Terminal y pulsa Enter.
- Finder: Aplicaciones > Utilidades > Terminal y haz doble clic.
Si prefieres iTerm2 u otro emulador, puedes usarlo en lugar de Terminal; las instrucciones de SSH son las mismas.
2. Iniciar una conexión SSH básica
Requisitos: la dirección IP o el nombre de dominio del servidor y un usuario válido en ese servidor.
En Terminal escribe:
ssh usuario@direccion-ip-o-dominio
Ejemplo:
La primera conexión pedirá verificar la huella del host. Escribe yes y pulsa Enter para añadir la entrada a tu archivo known_hosts. A continuación se pedirá la contraseña, salvo que uses autenticación por claves.
Nota: si el servidor usa un puerto distinto del 22 añade -p 2222 o configura el puerto en ~/.ssh/config.
3. Autenticación con claves (sin contraseña)
Generar un par de claves en tu Mac (si no lo tienes):
ssh-keygen -t ed25519 -C "[email protected]"
Pasos clave:
- Acepta la ubicación por defecto: ~/.ssh/id_ed25519
- Elige una frase de paso (passphrase) para mayor seguridad o deja en blanco si lo necesitas para scripts automatizados.
Copiar la clave pública al servidor (método recomendado):
ssh-copy-id usuario@direccion-ip-o-dominio
Si ssh-copy-id no está disponible, copia la clave manualmente:
cat ~/.ssh/id_ed25519.pub | ssh usuario@direccion-ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
Probar la conexión ahora no debería pedir contraseña. Para usar un agente que almacene la clave en memoria:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
En macOS puedes añadir la opción UseKeychain en ~/etc/ssh/ssh_config para integrar con el llavero.
4. Archivo de configuración útil (~/.ssh/config)
Crear un alias por host ahorra tecleo y configura parámetros por host. Ejemplo de ~/.ssh/config:
Host mi-servidor
HostName 198.51.100.23
User maria
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
Compression yes
Con esto te conectas simplemente con:
ssh mi-servidor
5. Transferir archivos: scp y rsync
scp (copiar archivos seguro):
Copiar local a remoto:
scp archivo.txt usuario@servidor:/ruta/destino/
Copiar remoto a local:
scp usuario@servidor:/ruta/archivo.zip ./
Para carpetas recursivas añade -r.
rsync sobre SSH, recomendado para sincronizaciones y reanudar transferencias:
rsync -avz -e "ssh -p 2222" ./carpeta usuario@servidor:/ruta/destino/
rsync usa comparaciones inteligentes para enviar solo cambios.
6. Reenvío de puertos y túneles SSH
Reenvío local (accedes a un servicio remoto como si fuera local):
ssh -L 8080:localhost:80 usuario@servidor
Esto hace que http://localhost:8080 en tu Mac se redirija al puerto 80 del servidor.
Reenvío remoto (exponer un puerto local al servidor remoto):
ssh -R 9000:localhost:3000 usuario@servidor
Túnel dinámico (proxy SOCKS):
ssh -D 1080 usuario@servidor
Configura el navegador para usar localhost:1080 como proxy SOCKS5.
7. Gestión de sesiones y atajos útiles
Comandos básicos una vez dentro del servidor:
- cd ruta — cambiar directorio
- ls -la — listar archivos, incluidos ocultos
- mkdir nombre — crear carpeta
- rm nombre — eliminar archivo; usa rm -r para carpetas con cuidado
- mv origen destino — mover o renombrar
- cp origen destino — copiar
Cerrar sesión:
- Escribe exit y pulsa Enter
- Pulsa Control + D
Multiplexación de conexiones (ControlMaster) para acelerar varias conexiones al mismo host:
Ejemplo en ~/.ssh/config:
Host *
ControlMaster auto
ControlPath ~/.ssh/cm_%r@%h:%p
ControlPersist 10m
8. Depuración y solución de problemas comunes
Cuando la conexión falla, añade -v para ver mensajes de depuración. Puedes usar -vvv para más detalle:
ssh -v usuario@servidor
Errores frecuentes y soluciones:
- Permiso denegado: revisar usuario, permisos de ~/.ssh y authorized_keys. Los permisos deben ser 700 para ~/.ssh y 600 para authorized_keys.
- Host key changed: la huella del host cambió. Si es intencionado, borra la entrada antigua en ~/.ssh/known_hosts antes de reconectar.
- Tiempo de espera agotado: comprueba firewall, puerto y que el servicio SSH esté activo en el servidor.
Pruebas útiles:
- ping direccion-ip
- nc -vz servidor 22
- ssh -p puerto usuario@servidor
9. Buenas prácticas de seguridad
- Usa pares de claves ed25519 o RSA de 4096 bits; ed25519 ofrece mejor rendimiento y seguridad.
- Protege la clave privada con una passphrase y usa ssh-agent para no escribirla cada vez.
- Desactiva el acceso por contraseña en el servidor tras verificar que las claves funcionan: en /etc/ssh/sshd_config pone PasswordAuthentication no y reinicia el servicio.
- Cambia el puerto por defecto y limita accesos por IP si es posible.
- Activa ServerAliveInterval en el cliente para detectar conexiones caídas.
- Usa fail2ban o reglas de firewall para bloquear intentos de fuerza bruta.
- Revisa regularmente los logs de autenticación en el servidor.
Importante: desactivar la autenticación por contraseña sin haber probado claves adecuadamente puede bloquearte fuera del servidor.
10. Alternativas y herramientas complementarias
- Mosh: reemplazo de SSH para conexiones móviles o inestables que mantiene la sesión ante cambios de red.
- SFTP y clients gráficos (Cyberduck, FileZilla) para transferencias con interfaz.
- Ansible, Fabric y Capistrano para automatizar despliegues a través de SSH.
11. Listas de verificación por rol
Desarrollador:
- Generar clave ed25519
- Copiar clave al servidor de desarrollo
- Añadir alias en ~/.ssh/config
- Usar rsync para despliegues locales rápidos
Administrador de sistemas:
- Configurar autenticación por claves en todos los servidores
- Desactivar acceso por contraseña tras validar claves
- Implementar fail2ban y reglas de firewall
- Auditar logs de SSH semanalmente
Usuario nuevo:
- Abrir Terminal y probar ssh usuario@servidor desde red local
- Generar y copiar clave pública
- Aprender a usar scp para copiar archivos simples
12. Glosario breve
- SSH: protocolo de shell seguro para acceso remoto.
- Par de claves: par formado por clave pública y privada para autenticación.
- ssh-agent: programa que guarda claves en memoria para evitar reintroducir passphrase.
- known_hosts: archivo que guarda huellas de hosts conocidos.
- authorized_keys: archivo en el servidor que contiene claves públicas autorizadas.
Preguntas frecuentes
Puedo hacer SSH a mi propio Mac desde otro dispositivo?
Sí. Activa Inicio de sesión remoto en Preferencias del Sistema > Compartir. Usa la dirección IP o el nombre del Mac con el comando ssh.
Cómo encuentro la dirección IP de mi Mac?
Preferencias del Sistema > Red. Selecciona la interfaz activa y lee la dirección IP. En Terminal usa ifconfig o ipconfig getifaddr en interfaces específicas.
Puedo usar SSH sin contraseña?
Sí. Configura autenticación por claves generando un par de claves y copiando la clave pública al servidor. Después podrás conectarte sin introducir contraseña.
SSH es seguro?
Sí. SSH cifra la comunicación y ofrece autenticación robusta. Mantén el software actualizado y sigue las buenas prácticas para reducir riesgos.
Puedo transferir archivos por SSH?
Sí. Usa scp para copias simples o rsync para sincronizaciones eficientes. También puedes usar SFTP para navegación remota de archivos.
Resumen final
SSH en macOS es una herramienta esencial para administradores y desarrolladores. Con este flujo cubres desde abrir Terminal hasta asegurar servidores con autenticación por claves, configurar aliases, transferir archivos y aplicar medidas de seguridad. Practica en entornos de prueba antes de aplicar cambios en producción y registra tus configuraciones en versiones controladas cuando sea posible.
Resumen de pasos prácticos:
- Abrir Terminal.
- Conectarse con ssh usuario@host.
- Generar y copiar clave pública para evitar contraseñas.
- Crear aliases en ~/.ssh/config.
- Usar scp o rsync para transferencias.
- Aplicar hardening en servidores.
Nota: si necesitas un playbook de automatización o un runbook de incidentes específico para tu infraestructura, puedo ayudarte a crearlo.
Materiales similares

QuickClick: automatiza Android con botones de volumen

Enviar y recibir Hotmail en Thunderbird

Ver y eliminar historial de YouTube

Solución rápida: Putlocker no funciona

SSH en Mac con Terminal: guía práctica
