Elegir la identidad SSH que presenta un cliente al servidor
Cuando un cliente se conecta a un servidor SSH, normalmente le propondrá todas las identidades SSH presentes en el servicio SSH Agent. Esto no está necesariamente mal, pero tiene algunos problemas:
- El servidor SSH puede tener un número de reintentos limitado y nosotros podemos tener muchas identidades SSH que ofrecer.
- A veces queremos tener nuestras personalidades online separadas y es preferible ofrecer al servidor SSH una identidad concreta controlada en vez de informarle de todas nuestras identidades disponibles para que elija la que le sirva. Un servidor malicioso podría vincular personalidades SSH e identificarnos como la misma persona física en diferentes entornos que preferimos mantener separados.
Los pasos a seguir con OpenSSH son sencillos:
-
Creamos una nueva identidad SSH para un servicio concreto. Para eso se usa el comando ssh-keygen.
-
Configuramos en ~/.ssh/config un perfil para ese servicio con estos parámetros:
# "IdentitiesOnly yes" indica que solo debemos ofrecer # esa personalidad, aunque el SSH-Agent tenga más. IdentitiesOnly yes IdentityFile PATH_A_LA_IDENTIDAD_SSH
Cuando nos conectemos al servidor usando ese perfil, el cliente SSH solo ofrecerá esa identidad.
Podemos verificar que todo está funcionando bien conectando a ese servicio con ssh -v y viendo qué identidades estamos ofreciendo al servidor.
Advertencia
La configuración propuesta ofrece una única identidad SSH a un servidor SSH concreto, pero ofrecerá esa personalidad SSH a otros servidores SSH. Si queremos aislamiento total, debemos tener configuraciones similares para todos nuestros servidores SSH (se puede utilizar el comodín para definir una configuración por defecto) o bien añadir esa identidad SSH solo a un servicio SSH Agent concreto y separado.
Recuerda que puedes indicar qué servicio SSH Agent debe utilizar tu cliente SSH utilizando la variable de entorno SSH_AUTH_SOCK.