Como faço para que o ssh use apenas uma chave do ssh-agent?

Como faço para que o ssh use apenas uma chave do ssh-agent?

Preciso usar duas chaves ssh diferentes ao me conectar ao mesmo host.

A máquina que preciso usar para conectar (devido a restrições de endereço IP) não é a máquina onde as chaves ssh estão armazenadas, então estou usando o ssh-agent aqui. Além disso, essas conexões ssh acontecem sob o controle de um script que é executado na máquina intermediária.

Se as chaves ssh fossem locais para essa máquina, imagino que poderia usar ssh -i (ou talvez ssh-add em um agente aninhado) para especificar a identidade que desejo usar e poderia atualizar os scripts e/ou o contexto do script para faça a coisa certa para o meu caso (provavelmente com um arquivo de configuração para especificar os detalhes relevantes).

Mas, como as chaves não estão na máquina que executa a conexão ssh, ssh -i falha (o arquivo de chave privada não existe nessa máquina). E, da mesma forma, ssh-add quer que eu especifique a chave fornecendo o nome do arquivo da chave privada. (Ou suspeito que seja esse o caso - na verdade não descobri como aninhar agentes ssh, mas a documentação sobre ssh-add duvida que essa seria uma abordagem plausível.)

Então, minha pergunta é: como faço para que o ssh use apenas a chave que eu especifico ao fazer contato com o sistema de destino?

[Outras pessoas também precisam usar esses scripts, é claro, mas esse é um problema que posso resolver depois de fazê-lo funcionar sozinho.]

Em outras palavras, tenho esta situação:

$ 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)

E em um contexto eu preciso do ssh para usar o key2_rsa e no outro contexto eu preciso do ssh para usar o key3_rsa

Usar a chave errada aqui causa falha na conexão com o sistema de destino (porque reconhece a outra chave como tendo acesso à máquina, mas não tendo acesso a esse subsistema).

Como faço para que isso funcione?

Responder1

ssh -itambém aceita arquivos contendopúblicochaves, e se uma chave correspondente for encontrada no agente, ela será tentada antes de tudo.

Além disso, se -o IdentitiesOnly=yesfor especificado, o cliente usaráapenasessa chave e não recorrerá a nenhuma outra chave se ela for rejeitada. (Observe que o recurso a outrosmecanismos, como GSSAPI ou senha, é controlado por uma opção diferente.)

informação relacionada