ssh -vv -D 1618 -C -N someserver
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/ubuntu/.ssh/id_rsa RSA SHA256:xxx agent
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: [email protected] RSA SHA256:180K+xxx agent
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: [email protected] ED25519 SHA256:xxxy agent
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: x-production-eb-key-pair RSA SHA256:xxxy+1ZNflh/xxxy agent
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: [email protected] RSA SHA256:/yG/xxxz+2eWo agent
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: [email protected] ED25519 SHA256:xxxv agent
debug2: we sent a publickey packet, wait for reply
Received disconnect from 10.240.0.1 port 22:2: Too many authentication failures
Já apaguei algumas chaves acima, ~/.ssh/*
mas ainda estou tentando, como isso é possível?
Você ainda pode usar as chaves porque há um agente SSH em execução. Aparentemente, várias identidades de chave privada foram adicionadas a ele. As identidades adicionadas são mantidas na memória. Uma identidade adicionada a partir de um arquivo normal (ou seja, de uma chave privada no disco) não exige que o arquivo esteja disponível posteriormente; você pode até "emprestar" uma chave de outro sistema ( exemplo ). O ato de deletar algumas chaves do sistema de arquivos não afetou seu agente SSH, ele já havia carregado as identidades.
A palavra
agent
no final de uma linha como esta:indica que esta tentativa de autenticação envolve o agente, não o arquivo.
…/.ssh/id_rsa
aqui indica apenas o arquivo que foi utilizado ao adicionar a identidade; o arquivo pode ainda existir ou não existir mais, isso é irrelevante.Programas como
ssh
podem se comunicar com o agente por meio de um soquete. Eles podem aprender o caminho para o soquete inspecionando a variável de ambiente chamadaSSH_AUTH_SOCK
. Vocêssh
herdou o ambiente do seu shell. Se você executarecho "$SSH_AUTH_SOCK"
no shell, verá o caminho para o soquete.Execute
ssh-add -l
oussh-add -L
para ver as identidades atualmente representadas pelo agente.Você pode remover uma identidade do agente com
ssh-add -d /path/to/key
, mas isso requer um caminho para o arquivo de chave (privado ou público) especificando a identidade que você deseja remover. Se você não tiver mais nenhum arquivo especificando a identidade que deseja remover, considere remover todas as identidades com essh-add -D
, em seguida, adicionar novamente todas as identidades que você não deseja remover. Você (re) adiciona uma chave executandossh-agent /path/to/key
.Veja
man 1 ssh-add
para detalhes.Executar
ssh
com vazio ou não definidoSSH_AUTH_SOCK
impedirá a comunicação com o agente:Isto é útil quando você deseja ignorar o agente sob demanda, sem alterar o estado do agente e sem perder a capacidade de usá-lo no futuro.