O ssh (agent) pode trabalhar com duas identidades separadas? [duplicado]

2

Eu uso uma distribuição Ubuntu 14.10 e duas chaves privadas, uma criptografada ( ~/.ssh/E.key ) e uma não criptografada ( ~/.ssh/NE.key ), que eu uso para acessar dois repositórios github, respectivamente, repoE e repoNE .

Eu uso o truque comum de aliasing gitbhub.com para dois domínios diferentes, que são mapeados para as respectivas chaves ssh.

Conteúdo (relevante apenas) de ~/.ssh/config :

Host github.com-E
  Hostname github.com
  IdentityFile ~/.ssh/E.key

Host github.com-NE
  Hostname github.com
  IdentityFile ~/.ssh/NE.key

Conteúdo (relevante apenas) das configurações do repositório local:

# /path/to/repoE/.git/config:

[remote "origin"]
  url = [email protected]:organizationE/repoE.git

# /path/to/repoNE/.git/config:

[remote "origin"]
  url = [email protected]:organizationNE/repoNE.git

Eu uso ssh-add , para que eu não precise digitar a senha para qualquer acesso a repoE .

O problema é que, aparentemente, apenas a primeira chave que eu adiciono é usada (eu posso ver a oferta do log do cliente ssh).

Esta é, por exemplo, uma amostra de execução:

$ ssh-add ~/.ssh/E.key

# I can now access repoE, but not repoNE

$ ssh-add ~/.ssh/NE.key

# Still the same (I can access repoE, but not repoNE)

$ ssh-add -D

$ ssh-add ~/.ssh/NE.key

# I can now access repoNE, but not repoE

$ ssh-add ~/.ssh/E.key

# Still the same (I can access repoNE, but not repoE)
    
por Marcus 11.01.2015 / 12:27

1 resposta

1

gpg-agent e provavelmente ssh-agent também não se importam com o que as chaves pertencem. As chaves são identificadas pelo seu keygrip (a impressão digital do material chave puro, enquanto, por exemplo, uma impressão digital OpenPGP é sobre o material chave e alguns dados adicionais, como a data de criação).

Você pode ativar / aumentar o registro no arquivo de configuração ~/.gnupg/gpg-agent.conf . Opções relevantes são

  • --debug-level
  • --log-file

Para ativar esta alteração gpg-agent precisa de um SIGHUP (para alterações de certas opções já fornecidas, veja a seção "SIGHUP" na página man) ou deve ser reiniciado.

Você também pode ativar o registro no arquivo ssh config para ver o que exatamente git push faz com ssh . strace -f -e trace=execve git push pode ajudar também. Opções relevantes são:

  • log_file
  • LogLevel
por 11.01.2015 / 18:08