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

0

Eu preciso usar duas chaves ssh diferentes ao conectar ao mesmo host.

A máquina que eu preciso usar para conectar (por causa das 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 naquela 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 contexto de script para fazer 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 está executando 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 eu suspeito que esse é o caso - eu não descobri como aninhar agentes ssh, mas a documentação no ssh-add torna a dúvida que isso seria uma abordagem plausível.)

Então, minha pergunta é: como fazer com que o ssh use apenas a chave que 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 que eu trabalhei para mim.]

Em outras palavras, tenho essa 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

O uso da chave errada faz com que a conexão com o sistema de destino falhe (porque reconhece a outra chave como tendo acesso à máquina, mas não tendo acesso a esse subsistema).

Como faço isso funcionar?

    
por rdm 17.04.2018 / 16:40

1 resposta

2

ssh -i também aceita arquivos contendo chaves public , e se uma chave correspondente for encontrada no agente, ela será tentada antes de todo o resto.

Além disso, se -o IdentitiesOnly=yes for especificado, o cliente usará somente essa chave e não retornará a nenhuma outra chave se ela for rejeitada. (Observe que o fallback para outros mecanismos , como GSSAPI ou senha, é controlado por uma opção diferente.)

    
por 17.04.2018 / 17:16