Taller tecnológico

Post técnico #4: Configurar archivo de identidad (clave privada) específico en SSH


Cómo crear claves para poder conectarse a un servidor remoto mediante SSH es una explicación ampliamente difundida en Internet. Para la muestra estos casos:

En estas explicaciones se puede ver cómo es creado un par de llaves: una pública (id_dsa.pub, la cual se comparte con el resto del mundo) y una privada (id_dsa). Si es así, todo funciona bien. Pero cuando se nos ocurre cambiar el nombre de tal par de archivos o ubicarlos en subdirectorios dentro del mencionado directorio ~/.ssh (para sistemas GNU/Linux) entonces la cosa deja de ir bien.

Lo que ocurre entonces es que el servicio ssh, cuando va a autenticar nuestra clave pública alojada en el servidor contra nuestra clave privada (ubicada ahora, por ejemplo, en ~/.ssh/clave-empresa/empresa_id_rsa) no puede encontrar nuestra clave privada o «archivo de identidad». Después de algunos madrazos, se descubre que tenemos que hacer lo siguiente:

  1. Acceder en una consola como superusuario y abrir el archivo /etc/ssh/ssh_config con nano, vim o el editor preferido de cada quien. Por ejemplo, empleando VIM el comando sería así: su -c 'vim /etc/ssh/ssh_config'
  2. Agregar la siguiente linea después de la entrada Host *: IdentityFile ~/.ssh/clave-empresa/empresa_id_rsa (según nuestro ejemplo, pero el nombre del subdirectorio, si es que lo hay, y el del archivo de clave privada debe ser cambiado por el nombre que cada quien utilice). Así, la entrada dentro del archivo de configuración de SSH quedaría mas o menos así:

    ...
    # PermitLocalCommand no
    # VisualHostKey no
    # ProxyCommand ssh -q -W %h:%p gateway.example.com
    Host *
    IdentityFile ~/.ssh/clave-empresa/empresa_id_rsa
    ...

    Luego se guardan estos cambios, sobreescribiendo el archivo.

  3. Reiniciar el servicio ssh: su -c 'systemctl restart sshd.service'. Podemos comprobar su estado con el comando systemctl status sshd.service

Listo, ahora cuando el servicio SSH va a autenticar nuestra clave pública alojada en el servidor remoto contra nuestra clave privada (ubicada ahora, en nuestro ejemplo, en ~/.ssh/clave-empresa/empresa_id_rsa) la autenticación se llevará a cabo exitosamente. Cabe anotar que lo anterior funciona en la distribución GNU/linux Fedora. La ruta del directorio ssh en las otras distribuciones puede que varíe.

Por ahora dejamos aquí. Cualquier duda o comentario es bienvenido.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.