Digamos que eu tenha uma chave para o Github, junto com outras chaves. Adicionei muitas chaves ao meu agente ssh ( ssh-add -L
retorna muitas linhas) no meu computador doméstico A. No meu .ssh/config
, configurei qual chave usar com qual host, por exemplo,
ssh -T -vvv [email protected] 2>&1 | grep Offering
dá
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Apenas uma chave é oferecida, conforme o esperado. Mas, depois de fazer o ssh para algum host B ForwardAgent yes
e repetir o mesmo comando, recebo
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
ou seja, tenta todas as minhas chaves. Isso é problemático, pois apenas um número limitado de chaves pode ser tentado antes do retorno dos servidores Too many authentication failures
. Então, eu tentei editar .ssh/config
no host B para incluir
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
mas não recebo ofertas importantes, mas sim
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
o que eu acho que significa que a chave não foi encontrada (?) E, afinal, a chave está localizada no meu computador doméstico A, não no host B, então a questão é como se referir a ela no host B? Espero ter conseguido explicar a pergunta.
ssh
para um arquivo de chave pública sem nenhum arquivo de chave privada associado, ele deve apenas ler a chave pública do arquivo e fazer com que o agente use a chave privada correspondente para gerar a assinatura.Boa resposta do @Kasperd, mas observe também que, se o Host B estiver comprometido ou se você não confiar em todos os que possuem privilégios de root, ainda estará expondo todas as suas chaves a abuso enquanto estiver logado nesse host.
Portanto, uma abordagem melhor pode ser encaminhar apenas o acesso às chaves necessárias. Talvez tente o
ssh-agent-filter
que está nos repositórios debian / Ubuntu ou no github .Edição: Decidi em
ssh-ident
vez dessh-agent-filter
encaminhar chaves seletivamente, embora não seja uma experiência tão suave quanto se poderia esperar.fonte
SSH_*
variáveis de ambiente e efetua o login onde quer que queira usar a chave, apesar de nunca ter uma cópia real.