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?

La configuración de SSH, se encuentra en la carpeta ~/.ssh de cada usuario. En esta carpeta, tendremos los siguientes ficheros:
* id_rsa – Clave privada de este usuario
* id_rsa.pub – Clave pública del usuario
* known_hosts – Host en los que el equipo confía para conectarse (si no la primera vez que nos conectemos, se nos preguntará si confíamos en el host al que queremos conectarnos)
* authorized_keys – En cada línea tenemos las claves públicas a las que permitimos que se conecten a nuestra máquina usando certificados

El formato de authorized_keys es el siguiente:

ssh-rsa AAAAAihhhhhhhhCLAVE_PUBLICA_ETC_ETC

La manera de generar estos ficheros varía si lo hacemos de Linux o desde Windows (ver más adelante)

Caso de ejemplo

Tenemos una máquina cliente «A» en la que iniciamo sesión con el usuario «a» y queremos conectarnos a una máquina servidor ssh «B» con el usuario «b».

Máquina A:
+ ~/.ssh/id_rsa – Clave privada
+ ~/.ssh/id_rsa.pub – Clave pública que habrá que copiar a authorized_keys de la máquina

Máquina B:
+ ~/.ssh/authorized_keys – Tendrá una lína con la clave pública de la máquina A

¡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

Iniciar sesión en la máquina A con el usuario a.

$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/mykey b@B

Lo anterior es tan sencillo, que nos perdemos lo que está haciendo ssh-copy. Esta instrucción hace lo siguiente:

$ ssh b@B mkdir -p .ssh
$ cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'

Desde Windows con Putty

Generar claves

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 private key» para guardar la clave privada (usar la extensión ppk y guardar el fichero en un directorio seguro)

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.

La opción más rápida es copiar el texto que aparece en la ventana de PuTTygen en el authorized_keys del usuario con el que nos queremos conectar.

Alternativamente podemos usar el siguiente comando linux:

echo ssh-rsa $(cat publica | tail -n +3 | head -n -1 | tr -d '\n') > clave_publica
cat clave_publica >> $HOME/.ssh/authorized_keys

Donde authorized_keys está en el equipo servidor

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:

 

Formato de authorized_keys

Referencias