
Necesito usar dos claves ssh diferentes cuando me conecto al mismo host.
La máquina que necesito usar para conectarme (debido a restricciones de dirección IP) no es la máquina donde se almacenan las claves ssh, así que estoy usando ssh-agent aquí. Además, estas conexiones ssh ocurren bajo el control de un script que se ejecuta en la máquina intermedia.
Si las claves ssh fueran locales para esa máquina, imagino que podría usar ssh -i (o tal vez ssh-add en un agente anidado) para especificar la identidad que quiero usar, y podría actualizar los scripts y/o el contexto del script a hacer lo correcto para mi caso (probablemente con un archivo de configuración para especificar los detalles relevantes).
Pero, dado que las claves no están en la máquina que realiza la conexión ssh, ssh -i falla (el archivo de clave privada no existe en esa máquina). Y, de manera similar, ssh-add quiere que especifique la clave proporcionando el nombre del archivo de la clave privada. (O sospecho que ese es el caso; en realidad no he descubierto cómo anidar ssh-agents, pero la documentación sobre ssh-add pone en duda que ese sea un enfoque plausible).
Entonces mi pregunta es: ¿cómo consigo que ssh use solo la clave que especifico al establecer contacto con el sistema de destino?
[Otras personas también necesitan usar estos scripts, por supuesto, pero ese es un problema que puedo resolver una vez que lo haga funcionar por mí mismo.]
En otras palabras, tengo esta situación:
$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)
Y en un contexto necesito ssh para usar key2_rsa y en el otro contexto necesito ssh para usar key3_rsa
El uso de la clave incorrecta aquí hace que falle la conexión con el sistema de destino (porque reconoce que la otra clave tiene acceso a la máquina pero no a ese subsistema).
¿Cómo hago que esto funcione?
Respuesta1
ssh -i
También acepta archivos que contenganpúblicoclaves, y si se encuentra una clave coincidente en el agente, se intentará antes que todo lo demás.
Además, si -o IdentitiesOnly=yes
se especifica, el cliente utilizarásoloesa clave y no recurrirá a ninguna otra clave si fue rechazada. (Tenga en cuenta que recurrir a otrosmecanismos, como GSSAPI o contraseña, se controla mediante una opción diferente).