A chave ssh persiste mesmo depois de excluir a chave privada de ~ / .ssh - por quê?

18

Gerei chaves ssh (públicas e privadas) e as armazenei ~/.ssh/myServer/.

Eu adicionei a chave pública ao ~/.ssh/authorized_keysarquivo do servidor e tudo funciona muito bem!

Em meu esforço para tentar entender como as chaves funcionam, eu as excluí e fiquei surpreso ao descobrir que ainda conseguia me conectar ao servidor.

Por que ainda consigo conectar-me sem uma senha?

poltj18
fonte

Respostas:

24

Bem-vindo ao maravilhoso mundo do OS X Keychain e do ssh-agent ! Na página do manual:

O ssh-agent é um programa para armazenar chaves privadas usadas para autenticação de chave pública (RSA, DSA, ECDSA). A idéia é que o ssh-agent seja iniciado no início de uma sessão X ou de sessão de logon e todas as outras janelas ou programas sejam iniciados como clientes do programa ssh-agent. Através do uso de variáveis ​​variáveis ​​do ambiente, o agente pode ser localizado e usado automaticamente para autenticação ao efetuar login em outras máquinas usando ssh (1).

Sua chave privada foi armazenada em cache no agente e está sendo buscada a partir daí para autenticar sua sessão. O OS X, via Keychain, faz o cache automático do agente ssh para você porque é "amigável". Pode ser um pouco alarmante, mas é principalmente útil que isso aconteça.

O tempo de vida padrão das chaves em cache é para sempre. Provavelmente esse não é um ótimo padrão. Ele liberará as chaves em cache em um ciclo de logout / login ou uma reinicialização. Ou você pode forçar um flush matando o agente atual usando:

ssh-add -D

Você pode listar todas as credenciais armazenadas em cache pelo agente executando:

ssh-add -l

Isso fará o mesmo, mas mostrará as chaves públicas completas:

ssh-add -L
Ian C.
fonte
Uau! Muito obrigado! Eu estava realmente confuso sobre o que estava acontecendo. Agora eu entendi!
precisa saber é
2
@FAYNUS Se isso resolver o problema, pressione a marca de seleção verde no lado direito para marcá-la como a "resposta aceita"! Bem-vindo ao perguntar diferente!
Ian C.