Copiar clave SSH a servidores remotos

14 May 2026
#your, #keywords #here

Prerequisito: tener el par de claves generado

ssh-keygen -t ed25519 -C "comentario_identificativo" -f ~/.ssh/id_nombre_clave

# Genera: ~/.ssh/id_ed25519 (privada) y ~/.ssh/id_ed25519.pub (pública)

Solo la clave pública (.pub) va al servidor. Nunca compartas la privada.


Desde Linux / macOS

Método 1 — ssh-copy-id (recomendado)

ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@servidor
# Pide contraseña una vez, luego ya no la necesitarás

Método 2 — Manual (si no tienes ssh-copy-id)

cat ~/.ssh/id_ed25519.pub | ssh usuario@servidor \
  "mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
   cat >> ~/.ssh/authorized_keys && \
   chmod 600 ~/.ssh/authorized_keys"

Validar

ssh -i ~/.ssh/id_ed25519 usuario@servidor
# Debe entrar sin pedir contraseña

Desde Windows

Método 1 — PowerShell (sin herramientas extra)

# Leer la clave pública
$pubKey = Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"

# Copiarla al servidor (pide contraseña una vez)
ssh usuario@servidor "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '$pubKey' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Método 2 — ssh-copy-id en Git Bash / WSL

Si tienes Git Bash o WSL instalado, funciona igual que en Linux:

ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@servidor

Validar desde PowerShell

ssh -i "$env:USERPROFILE\.ssh\id_ed25519" usuario@servidor

Múltiples servidores (script rápido)

#!/bin/bash
# deploy_key.sh — copia la clave pública a varios servidores

CLAVE="$HOME/.ssh/id_ed25519.pub"
USUARIO="admin"

SERVIDORES=(
  "192.168.1.10"
  "192.168.1.11"
  "srv-web01.dominio.local"
)

for HOST in "${SERVIDORES[@]}"; do
  echo "→ Copiando a $HOST..."
  ssh-copy-id -i "$CLAVE" "$USUARIO@$HOST" && echo "✓ OK" || echo "✗ Fallo en $HOST"
done
chmod +x deploy_key.sh && ./deploy_key.sh

Permisos críticos en el servidor (si algo falla)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh

Permisos incorrectos son la causa más común de que SSH ignore authorized_keys.


Troubleshooting rápido

Síntoma Causa probable
Sigue pidiendo contraseña Permisos mal en ~/.ssh/ o authorized_keys
Permission denied (publickey) Clave no copiada o usuario equivocado
Funciona con -i pero no sin ella ~/.ssh/config no configurado o agente sin clave cargada

Si sigue fallando, depura con:

ssh -vvv usuario@servidor 2>&1 | grep -E "key|auth|permission"

Bonus: ~/.ssh/config para no escribir usuario/IP cada vez

# ~/.ssh/config
Host srv-web
    HostName 192.168.1.10
    User admin
    IdentityFile ~/.ssh/id_ed25519

Host srv-db
    HostName 192.168.1.11
    User dbadmin
    IdentityFile ~/.ssh/id_ed25519

Luego simplemente: ssh srv-web

A bit (1,0) about me:

I solve IT problems. I make your Company better.