Como remover uma chave ssh?
~/.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
existe uma maneira de remover completamente uma chave SSH?
5 answers
Note que há pelo menos dois relatórios de erros para ssh-add -d/-D
não remover as chaves:
- "Debian Bug report #472477:
ssh-add -D
não remove a tecla SSH da memóriagnome-keyring-daemon
" - "Ubuntu:
ssh-add -D
apagar todas as identidades não funciona. Além disso, por que todas as identidades são auto-adicionadas?"
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 (essh-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
:Como odiamos isto? Não vamos contar os modos ... a vida é muito curta.
- 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
E não te vai deixar apagar essas chaves..ssh
directory, e adiciona automaticamente todas as chaves que encontrar ao seu agente.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 quegnome-keyring
irá pedir-lhe para as Desbloquear de qualquer forma quando tentar fazer umgit 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á paraSystem --> 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.
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.
A maneira mais simples seria
ssh-keygen -R hostname
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.
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