En esta ocasión demostraremos cómo crear llaves rsa y ecdsa para poder autenticarse a un equipo remoto
Procedimiento
Instalar dependencias (ssh-keygen, ssh-copy-id)
Para crear las llaves se utilizará ssh-keygen y para instalar la llave creada en el equipo remoto se utilizará ssh-copy-id. Ambos paquetes pueden instalarse con el siguiente comando
sudo apt-get update && sudo apt-get install -y ssh-keygen ssh-copy-id
Generar llaves
Para generar la llave es necesario especificar por lo menos 2 argumentos
- Algoritmo a utilizar
- Longitud de la llave, este argumento depende de la opción de algoritmo seleccionada ya que para algunos de ellos se cuenta con una longitud máxima
El algoritmo se especifica con la opción -t y la longitud con la opción -b. Una llave utilizando el algoritmo RSA y una longitud de 4096 bits luce de la siguiente forma
ssh-keygen -t rsa -b 4096
El comando anterior solicitará el nombre del archivo en donde se almacenarán las llaves, si se desea especificar el nombre basta con agregar el argumento -f. El siguiente comando creará una llave usando el algoritmo ecdsa y una llave de 521 bits en el archivo y ruta /home/usuario/millave
ssh-keygen -t ecdsa -b 521 -f /home/usuario/millave
Si la creación de las llaves es exitosa deben de haberse creado 2 archivos en la ruta especificada. Uno con el nombre de la llave sin ninguna terminación de archivo (.doc, .java. crt, etc) y otro con terminación .pub el cual es la llave pública. El archivo sin terminación debe mantenerse en un lugar bien protegido
Copiar llaves a equipo remoto
Para poder utilizar las llaves ssh generadas es necesario que el equipo remoto cuente con la llave pública. Copiaremos la llave recién creada millave con el comando ssh-copy-id
ssh-copy-id -i /home/usuario/millave usuario@equipo-remoto
El comando anterior agrega la llave publica al archivo authorized_keys en el equipo remoto.
Es posible validar que la llave fue instalada de forma correcta conectándonos al equipo especificando la llave privada (la que no tiene terminación)
ssh -i /home/usuario/millave usuario@equipo-remoto