Observe que há pelo menos dois relatórios de erros para ssh-add -d/-D
não remover chaves:
O problema exato é:
ssh-add -d/-D
exclui apenas as chaves adicionadas manualmente do gnome-keyring.
Não há como excluir chaves adicionadas automaticamente.
Este é o bug original e ainda está definitivamente presente.
Portanto, por exemplo, se você tiver duas identidades ssh carregadas automaticamente associadas a duas contas diferentes do GitHub - digamos, para trabalho e para casa - não há como alternar entre elas. O GitHub adota o primeiro que corresponder, para que você sempre apareça como usuário 'doméstico' no GitHub, sem nenhuma maneira de fazer o upload de itens para os projetos de trabalho.
Permitir ssh-add -d
a aplicação em chaves carregadas automaticamente (e ssh-add -t X
alterar a vida útil das chaves carregadas automaticamente) restauraria o comportamento que a maioria dos usuários espera.
Mais precisamente, sobre o problema:
O culpado é gpg-keyring-daemon
:
- Ele subverte a operação normal do ssh-agent, principalmente para que ele possa abrir uma caixa bonita na qual você pode digitar a senha para uma chave ssh criptografada.
- E vasculha seu
.ssh
diretório e adiciona automaticamente as chaves que encontra ao seu agente.
- E não permitirá que você exclua essas chaves.
Como odiamos isso? Não vamos contar os caminhos - a vida é muito curta.
A falha é agravada porque os clientes ssh mais novos tentam automaticamente todas as chaves do seu agente ssh ao se conectar a um host.
Se houver muitos, o servidor rejeitará a conexão.
E como o gnome-keyring-daemon decidiu por si próprio quantas chaves você deseja que o seu ssh-agent tenha, e as carregou automaticamente, E NÃO DEIXE DELE EXCLUÍ-LO, você está brindando.
Esse bug ainda está confirmado no Ubuntu 14.04.4, há dois dias (21 de agosto de 2014)
Uma possível solução alternativa:
- Faça
ssh-add -D
para excluir todas as suas chaves adicionadas manualmente . Isso também bloqueia as chaves adicionadas automaticamente, mas não é muito útil, pois gnome-keyring
solicitará que você as desbloqueie de qualquer maneira quando tentar fazer um git push
.
- Navegue até sua
~/.ssh
pasta e mova todos os seus arquivos de chave, exceto aquele com o qual você deseja se identificar, para uma pasta separada chamada backup. Se necessário, você também pode abrir o cavalo marinho e excluir as chaves de lá.
- Agora você deve poder fazer
git push
sem problemas.
Outra solução alternativa:
O que você realmente deseja fazer é desligar gpg-keyring-daemon
completamente.
Vá para System --> Preferences --> Startup Applications
e desmarque a SSH Key Agent (Gnome Keyring SSH Agent)
caixa " " - você precisará rolar para baixo para encontrá-la.
Você ainda receberá um ssh-agent
, mas agora ele se comportará de maneira saudável: nenhuma chave é carregada automaticamente, você executa o ssh-add para adicioná-las e, se quiser excluir as chaves, pode. Imagine isso.
Esses comentários realmente sugerem:
A solução é evitar gnome-keyring-manager
a inicialização, o que foi estranhamente difícil, finalmente alcançado com a remoção da permissão de execução do arquivo de programa.
Ryan Lue acrescenta outro caso interessante nos comentários :
Caso isso ajude alguém: eu até tentei excluir os arquivos id_rsa
e id_rsa.pub
completamente, e a chave ainda estava aparecendo.
Acontece que os gpg-agent
estava armazenando em cache em um ~/.gnupg/sshcontrol
arquivo ; Eu tive que excluí-los manualmente a partir daí.
Esse é o caso quando okeygrip
foi adicionado como aqui .
ssh-add -d
?