Como remover uma chave ssh?

Tenho uma chave SSH antiga carregada no servidor. O problema é que eu perdi meu diretório ~/.ssh (com os arquivos id_rsa e id_rsa.pub originais).

consequentemente, quero remover a chave SSH antiga directamente no servidor e enviar uma nova.

tentei o seguinte comando sem sucesso:

$> ssh-add -D

enter image description here

existe uma maneira de remover completamente uma chave SSH?

Author: VonC, 2014-08-23

5 answers

Note que há pelo menos dois relatórios de erros para ssh-add -d/-D não remover as chaves:

A questão exacta é:

ssh-add -d/-D apaga apenas as teclas adicionadas manualmente do porta-chaves gnome.
Não há como apagar teclas adicionadas automaticamente.
Este é o bug original, e ainda está definitivamente presente.

Então, por exemplo, se você tem duas identidades SSH diferentes carregadas automaticamente associadas a duas contas GitHub diferentes -- digamos para trabalho e para casa -- não há nenhuma maneira de mudar entre elas. O githubt faz o primeiro que corresponde, por isso você sempre aparece como seu usuário 'home' para o GitHub, sem nenhuma maneira de fazer upload de coisas para projetos de trabalho.

Permitindo ssh-add -d aplicar às teclas carregadas automaticamente (e ssh-add -t X para alterar o tempo de vida das teclas carregadas automaticamente), iria repor o comportamento que a maioria dos utilizadores espera.


Mais precisamente, sobre a questão:
O culpado é ... gpg-keyring-daemon:
  • subverte a operação normal do ssh-agent, principalmente para que ele possa aparecer uma caixa bonita na qual você pode digitar a frase-senha para uma chave SSH encriptada.
  • e ele mexe através do teu .ssh directory, e adiciona automaticamente todas as chaves que encontrar ao seu agente.
  • E não te vai deixar apagar essas chaves.
Como odiamos isto? Não vamos contar os modos ... a vida é muito curta.

A falha é agravada porque os clientes SSH mais recentes automaticamente Tentam todas as chaves do seu agente SSH quando se ligam a um servidor.
Se houver muitos, o servidor irá rejeitar a conexão.
E desde que o gnome-keyring-daemon decidiu por si mesmo quantos as chaves que queres que o teu agente ssh tenha, e que as tenha autoloaded, e que não te deixe apagá-las, estás tramado.

Este bug ainda está confirmado no Ubuntu 14.04.4, ainda há dois dias (21 de agosto de 2014)


Uma possível solução:

  • faça ssh-add -D Para Apagar Todas as suas manualmente teclas adicionadas. Isto também bloqueia. as teclas adicionadas automaticamente, mas não é muito útil, uma vez que gnome-keyring irá pedir-lhe para as Desbloquear de qualquer forma quando tentar fazer um git push.
  • navegue para a sua pasta ~/.ssh e mova todos os seus ficheiros chave, excepto o que deseja identificar para uma pasta separada chamada cópia de segurança. Se necessário, você também pode abrir o seahorse e excluir as chaves de lá.
  • Agora você deve ser capaz de fazer {[[11]} sem um problema.

Outra solução:
O que realmente queres fazer é desligar tudo.
Vá para System --> Preferences --> Startup Applications, e deseleccione a caixa " SSH Key Agent (Gnome Keyring SSH Agent)" -- vai ter de descer para o encontrar.

Você ainda vai ter um ssh-agent, só que agora ele vai se comportar de forma sÃ: sem chaves autoloaded, você corre ssh-add para adicioná-las, e se você quiser apagar chaves, você pode. Imaginar.

Este comentário sugere realmente:

A solução é evitar que gnome-keyring-manager se inicie, o que foi estranhamente difícil ao finalmente ser conseguido removendo a permissão de execução do ficheiro do programa.

 77
Author: VonC, 2017-03-20 10:18:25

A menos que eu esteja mal-entendido, você perdeu o seu directório {[[[0]} contendo a sua chave privada na sua máquina local e por isso você quer remover a chave pública que estava num servidor e que permitiu o login baseado em Chaves. Nesse caso, será armazenado no ficheiro .ssh/authorized_keys da sua pasta pessoal no servidor. Você pode apenas editar este arquivo com um editor de texto e excluir a linha relevante se você pode identificá-lo (ainda mais fácil se for a única entrada!). Espero que essa chave não fosse o teu único método de acesso. para o servidor e você tem alguma outra maneira de acessar e editar o arquivo. Pode adicionar manualmente uma nova chave pública ao ficheiro authorised_keys ou usar ssh-copy-id. De qualquer forma, você vai precisar de senha auth configurada para a sua conta no servidor, ou alguma outra identidade ou método de Acesso para chegar ao Arquivo authorized_keys no servidor.

ssh-add adiciona identidades ao seu agente ssh que lida com a gestão das suas identidades localmente e "a ligação ao agente é encaminhada através de logins remotos SSH, e o utilizador pode, assim, usar os privilégios dados pelas identidades em qualquer lugar da rede de forma segura."(man page), então eu não acho que é o que você quer neste caso. Não tem nenhuma maneira de obter sua chave pública em um servidor sem que você tenha acesso a esse servidor através de um login ssh tanto quanto eu sei.

 5
Author: Tim, 2014-08-23 18:47:14

A maneira mais simples seria

ssh-keygen -R hostname
 5
Author: R J, 2014-08-24 00:56:52

Abri a aplicação "senhas e chaves" na minha unidade e removi as chaves indesejadas das teclas de segurança -> chaves OpenSSH E eles foram automaticamente removidos de ssh-agent-l também.

 1
Author: Anton Balashov, 2017-06-13 11:21:21

Se está a tentar realizar uma operação relacionada com o ssh e obter o seguinte erro:

$ git fetch
no such identity: <ssh key path>: No such file or directory

Pode remover a chave ssh em falta do seu agente ssh com o seguinte:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
 0
Author: Derek Soike, 2018-06-07 17:30:40