Use uma chave especificada do ssh-agent

11

Na linha de Como dizer ao git qual chave privada usar? Eu gostaria de usar uma chave ssh específica em uma determinada situação.

Meu problema é que, mesmo quando eu especificar '-i something', o ssh usa as chaves do meu ssh-agent na ordem em que são adicionadas.

Minha situação específica:

  • Eu tenho dois usuários do github, cada um com sua própria chave que eu gostaria - por exemplo, através de um ssh-config - para cada clone especificar qual chave usar:

    Host USER1.git

    Nome do host github.com

    Usuário git

    Arquivo de identidade ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

ainda usará USER2.id_rsa se essa for a primeira chave adicionada ao ssh-agent.

svrist
fonte

Respostas:

5

Eu finalmente consegui que isso funcione:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • O recuo conta.
  • Faça ssh-add -le verifique se as duas chaves foram adicionadas.
    • Copie / cole cada caminho ssh-add -lna linha apropriada ~/.ssh/configpara evitar erros de digitação. Se houver um ~/.ssh/configerro de digitação do caminho do arquivo de identidade para USER1, a chave errada (chave do USER2) será usada.

Eu recebi as instruções no BitBucket. Eles devem funcionar no GitHub, pois a única diferença é HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Para que isso funcione em um servidor remoto usando encaminhamento de agente, tente a sugestão de @ stijn-hoop abaixo (na seção de comentários desta resposta).

dgo.a
fonte
3
Para o seu último comentário sobre o encaminhamento de agentes, consulte esta resposta: superuser.com/questions/273037/…
Stijn Hoop
1

Use IdentitiesOnly yesabaixo desses hosts, em .ssh / config.

Puma
fonte
11
mas então ele não vai usar o agente e me forçar a entrar senha para todas as conexões github
svrist
11
Sim, é assim que funciona. Você não pode escolher entre chaves diferentes ao usar o ssh-agent. Uma maneira é a de iniciar vários ssh-agentes e alternar entre eles quer utilizando invólucros de diferentes para diferentes operações github ou simplesmente alternar entre ssh-agentes (mudando SSH_AUTH_SOCK)
puma
6
O comentário acima está incorreto - você PODE escolher identidades do seu ssh-agent. Veja também a resposta que eu já mencionei acima, superuser.com/questions/273037/…
Stijn Hoop
0

O objetivo é usar o arquivo de chave pública dentro da IdentityFilediretiva.

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa.pub

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa.pub

Se especificarmos a chave privada dentro da configuração do SSH, o agente SSH falhará em escolher a chave certa se a chave privada estiver criptografada.

Uma pergunta semelhante sobre stackexchange: https://unix.stackexchange.com/a/495785/264704

ttimasdf
fonte