Problema: tengo unas 20-30 ssh-agent
identidades. La mayoría de los servidores rechazan la autenticación Too many failed authentications
, ya que SSH generalmente no me deja probar 20 claves diferentes para iniciar sesión.
Por el momento, estoy especificando el archivo de identidad para cada host manualmente, utilizando IdentityFile
la IdentitiesOnly
directiva y, de modo que SSH solo pruebe un archivo de clave, que funciona.
Desafortunadamente, esto deja de funcionar tan pronto como las claves originales ya no están disponibles. ssh-add -l
me muestra las rutas correctas para cada archivo de clave, y coinciden con las rutas en .ssh/config
, pero no funciona. Aparentemente, SSH selecciona la identidad por firma de clave pública y no por nombre de archivo, lo que significa que los archivos originales deben estar disponibles para que SSH pueda extraer la clave pública.
Hay dos problemas con esto:
- deja de funcionar tan pronto como desconecto la unidad flash con las teclas
- hace que el reenvío de agentes sea inútil ya que los archivos clave no están disponibles en el host remoto
Por supuesto, podría extraer las claves públicas de mis archivos de identidad y almacenarlas en mi computadora y en todas las computadoras remotas en las que generalmente inicio sesión. Sin embargo, esto no parece una solución deseable.
Lo que necesito es la posibilidad de seleccionar una identidad de ssh-agent por nombre de archivo, de modo que pueda seleccionar fácilmente la clave correcta usando .ssh/config
o pasando -i /path/to/original/key
, incluso en un host remoto en el que ingresé SSH. Sería aún mejor si pudiera "apodar" las teclas para que ni siquiera tenga que especificar la ruta completa.
authorized_keys
archivo que, dependiendo de la clave utilizada, ejecuta diferentes comandos, sin permitir el acceso directo al shell.