Guía de tecnologías

SSH en Mac: guía completa con Terminal

7 min read Tutorial Actualizado 25 Sep 2025
SSH en Mac con Terminal: guía práctica
SSH en Mac con Terminal: guía práctica

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.

Cómo usar SSH en un Mac con Terminal — guía completa

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:

ssh maria@198.51.100.23

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 "tu-email@ejemplo.com"

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:

  1. Abrir Terminal.
  2. Conectarse con ssh usuario@host.
  3. Generar y copiar clave pública para evitar contraseñas.
  4. Crear aliases en ~/.ssh/config.
  5. Usar scp o rsync para transferencias.
  6. 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.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach