Si estás cansado de escribir la clave una y otra vez cada vez que te conectas a tu servidor favorito, puedes usar certificados para evitarlo.

¿Cómo funciona SSH con certificados?

En el siguiente directorio de cada usuario

$HOME/.ssh/authorized_keys

, están las claves públicas a las que se les permiten la conexión cuando el host actúe como servidor SSH.
El formato de authorized_keys es el siguiente:

ssh-rsa AAAAAihhhhhhhhCLAVE_PUBLICA_ETC_ETC

En el mismo directorio se encuentra el fichero

$HOME/.ssh/id_rsa

en el que está la clave privada que el host cuando actúe como cliente presentará al servidor.

Se trata de generar un par clave privada/pública. La clave pública se copiará al directorio del usuario del servidor SSH. La clave privada, en el respectivo directorio del cliente.

¡Atención a los permisos de lectura de la clave privada!

Activar debug en el log de SSH

Para resolver problemas, lo mejor es activar el nivel de debug en el log.

Para ello en
/etc/ssh/sshd_config
debemos añadir la línea
LogLevel DEBUG3

Desde Linux

Generar el par clave pública/clave privada
ssh-keygen -t { dsa | ecdsa | ed25519 | rsa | rsa1 }
Aquí tendrás que elegir el tipo de encriptación que quieres usar (dsa, rsa, …)

Copiar la clave pública al servidor (pueden ser varias claves públicas, por ejemplo una para cada cliente)
cat fichero_clave_publica >> $HOME/.ssh/authorized_keys
Donde $HOME es el directorio home del usuario con el que te quieres conectar mediante cerficiados.

Desde Windows con Putty

Generar el par clave pública/clave privada

Ejecutar PuTTygen:

  1. Pulsar en “Generate”
  2. Mover el ratón sobre el espacio en blanco de la ventana para generar el certificado a partir de movimientos aleatorios del ratón
  3. Pulsar en “Save public key” para guardar la clave pública
  4. Pulsar en “Save private key” para guardar la clave privada

Copiar la clave pública al servidor (por ejemplo con WinSCP)

Aquí hay un problema, y es que el formato de generación de claves públicas de Putty no es directamente compatible con las claves de authorized_keys.
El certificado se podría convertir a mano o bien usar el siguiente comando:
echo ssh-rsa $(cat publica | tail -n +3 | head -n -1 | tr -d '\n') > clave_publica
cat clave_publica >> $HOME/.ssh/authorized_keys

Establecer en Putty la clave privada para iniciar sesión

Seleccionar el certificado privado anterior en la configuración de Putty > Connection > SSH > Auth > Private key file for authentication

Desde Windows con WinSCP

Podemos generar las claves como hemos dicho anteriormente, dejando la clave pública en el path $HOME/.ssh/authorized_keys del servidor.

En WinSCP configuramos la clave privada al crear una conexión, pulsando en Avanzado: