Skip to main content

SSH

image.png

Para crear un par de claves SSH y configurar tu servidor para permitir el acceso sin contraseña, sigue estos pasos:


1. Generar clave SSH (equipo local)

Ejecuta el siguiente comando para generar una clave RSA (recomendado usar ed25519 si tu servidor lo soporta):

ssh-keygen -t ed25519 -f $HOME/~/.ssh/id_rsa_testid_ed25519_test -N ""

2. Copiar la clave pública al servidor

Usa ssh-copy-id para copiar automáticamente tu clave pública al servidor:

ssh-copy-id -i $HOME/~/.ssh/id_rsa_test.id_ed25519_test.pub usuario@ip_host_destino

Si ssh-copy-id no está disponible, puedes hacerlo manualmente. Copia el contenido de la clave pública sobre el directorio 

$HOME/.ssh/authorized_keys del host de destino


3. Verificar el acceso sin contraseña

Intenta conectarte al servidor:

ssh -i $HOME/~/.ssh/id_rsa_testid_ed25519_test usuario@ip_host_destino

4. (Opcional) Deshabilitar el acceso por contraseña

Para mayor seguridad, en el servidor (/etc/ssh/sshd_config), configura:

PasswordAuthentication no
ChallengeResponseAuthentication no

Luego reinicia el servicio SSH:

sudo systemctl restart sshd

Pasos para configurar múltiples claves SSH

1. Genera claves adicionales

Ejecuta ssh-keygen para cada nueva clave, dándoles nombres distintos:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_servidor1 -C "clave_para_servidor1"
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_servidor2 -C "clave_para_servidor2"
  • -f especifica el nombre del archivo (ejemplo: ~/.ssh/nombre_clave).

  • -C es un comentario (opcional, pero útil para identificar la clave).


2. Copia las claves públicas a los servidores

Usa ssh-copy-id con la opción -i para especificar la clave pública:

ssh-copy-id -i ~/.ssh/id_ed25519_servidor1.pub usuario@servidor1.com
ssh-copy-id -i ~/.ssh/id_rsa_servidor2.pub usuario@servidor2.com

Si no tienes ssh-copy-id, copia manualmente el contenido de .pub al ~/.ssh/authorized_keys del servidor.

3. Configura ~/.ssh/config para usar claves específicas

Crea o edita el archivo ~/.ssh/config para asignar claves a cada servidor:

Ejemplo de configuración:

# Conexión al Servidor 1 
Host servidor1           # (Alias para el comando SSH, ej: `ssh servidor1`)
    HostName 192.168.1.100  # IP del servidor
    User usuario1           # Usuario remoto
    IdentityFile ~/.ssh/id_ed25519_servidor1  # Clave privada asignada

# Conexión al Servidor 2 usando IP y puerto personalizado
Host servidor2
    HostName 203.0.113.45   # IP pública del servidor
    User admin
    Port 2222               # Si el servidor usa un puerto distinto al 22
    IdentityFile ~/.ssh/id_rsa_servidor2
  • Host: Un alias para el servidor (ejemplo: ssh servidor1).

  • HostName: La IP o dominio real del servidor.

  • User: El usuario remoto.

  • IdentityFile: La clave privada que debe usarse.