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:
- 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'
- 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.
- Reiniciar el servicio ssh:
su -c 'systemctl restart sshd.service'
. Podemos comprobar su estado con el comandosystemctl 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.