Problema: tenho entre 20 ssh-agent
e 30 identidades. A maioria dos servidores recusa a autenticação Too many failed authentications
, pois o SSH geralmente não permite que eu tente 20 chaves diferentes para fazer login.
No momento, estou especificando o arquivo de identidade para cada host manualmente, usando IdentityFile
a IdentitiesOnly
diretiva e, para que o SSH tente apenas um arquivo-chave, que funcione.
Infelizmente, isso para de funcionar assim que as chaves originais não estão mais disponíveis. ssh-add -l
mostra os caminhos corretos para cada arquivo-chave e eles correspondem aos caminhos .ssh/config
, mas não funciona. Aparentemente, o SSH seleciona a identidade pela assinatura da chave pública e não pelo nome do arquivo, o que significa que os arquivos originais precisam estar disponíveis para que o SSH possa extrair a chave pública.
Existem dois problemas com isso:
- ele pára de funcionar assim que eu desconecto a unidade flash segurando as teclas
- torna inútil o encaminhamento do agente, pois os arquivos principais não estão disponíveis no host remoto
Obviamente, eu poderia extrair as chaves públicas dos meus arquivos de identidade e armazená-las no meu computador e em todos os computadores remotos nos quais normalmente faço login. Porém, isso não parece uma solução desejável.
O que eu preciso é da possibilidade de selecionar uma identidade do ssh-agent pelo nome do arquivo, para que eu possa selecionar facilmente a chave correta usando .ssh/config
ou passando -i /path/to/original/key
, mesmo em um host remoto no qual eu SSH. Seria ainda melhor se eu pudesse "apelidar" as chaves para não precisar especificar o caminho completo.
authorized_keys
arquivo que, dependendo da chave usada, executa comandos diferentes, sem nunca permitir o acesso direto ao shell.