O cliente ainda pode fazer login ssh sem senha no servidor após gerar novas chaves

O cliente ainda pode fazer login ssh sem senha no servidor após gerar novas chaves

Primeiro gerei chaves no cliente (Ubuntu 18.04)

$ ssh-keygen -t rsa -f .ssh/id_rsa

então copiei para o servidor (Ubuntu Server 18.04)

$ ssh-copy-id 192.168.1.58

Agora posso ver a chave no .ssh/authirized_keysservidor e posso fazer login sem senha.

Então gerei novas chaves no cliente e as chaves anteriores foram substituídas. Mas ainda consigo fazer login no servidor sem senha. Eu esperava que, como as chaves foram alteradas, o servidor não me verificasse. o que estou perdendo?

Editar:

Eu até removi as chaves

$ rm .ssh/id*
$ ls .ssh/
known_hosts

Ainda consigo fazer login

$ ssh 192.168.1.58
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

System information as of Mon Mar 23 08:51:34 UTC 2020

System load:  0.0                Processes:              106
Usage of /:   42.8% of 12.31GB   Users logged in:        1
Memory usage: 6%                 IP address for enp0s3:  192.168.1.58
Swap usage:   0%                 IP address for docker0: 172.17.0.1


0 packages can be updated.
0 updates are security updates.


Last login: Mon Mar 23 08:46:19 2020 from 192.168.1.59

$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1[...]nr6eR33QK1BYeNT0BjyhRztd me@ubnutu-vm
$ w
08:53:57 up  2:10,  2 users,  load average: 0.06, 0.02, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
me       tty1     -                07:12   21.00s  0.35s  0.32s -bash
me       pts/0    192.168.1.59     08:51    1.00s  0.06s  0.00s w

Editar 2:

Isto é de ssh -v:

...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:Db+pAR0Bc2kmZ9jju9zttSZDwfbEl4TM82AV7KSZ3DM /home/me/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.58 ([192.168.1.58]:22).
...

Embora não haja nenhum id_rsaarquivo na /home/me/.ssh/pasta. Então pensei que talvez algum tipo de cache estivesse envolvido e depois de reiniciar o cliente agora tenho que digitar a senha.

Isso ocorre ssh -vapós a reinicialização:

...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/me/.ssh/id_rsa
debug1: Trying private key: /home/me/.ssh/id_dsa
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:

Portanto, uma reinicialização foi necessária.

Responder1

Seguindo@fra-sanConselho de eu cavei um pouco mais fundo e foi isso que consegui:

Isto é dehttps://www.ssh.com/ssh/agent

Por padrão, o agente usa chaves SSH armazenadas no diretório .ssh no diretório inicial do usuário. O comando ssh-add é usado para adicionar identidades ao agente. Na forma mais simples, basta executar if sem argumento para adicionar os arquivos padrão ~/.ssh/id_rsa, .ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 e ~/.ssh/identity. Caso contrário, forneça o nome do arquivo de chave privada para adicionar como argumento.

O comando a seguir listará as chaves privadas atualmente acessíveis ao agente:

ssh-add -l

Depois de conectar ao servidor, ssh-add -lmostra isto:

$ ssh-add -l
2048 SHA256:rzgw39XLAT0NHof4RBXFU/ahKhFWlH8FqMgNxBX2SAE /home/me/.ssh/id_rsa (RSA)

Se as id_*chaves da .ssh/pasta mudarem ou forem excluídas, ssh-add -lainda mostrará a mesma saída e será usada para conexões futuras (pelo menos no meu caso).

Nesse ponto, uma reinicialização ou um dos seguintes comandos removerá a chave em cache:

$ ssh-add -d /home/me/.ssh/id_rsa
Identity removed: /home/me/.ssh/id_rsa (me@ubnutu-vm)

ou

$ ssh-add -D
All identities removed.

Agora o prompt de senha será mostrado para novas conexões.

Atualizar:

Isto é dehttps://man.openbsd.org/ssh_config.5#AddKeysToAgent:

AdicionarKeysToAgent

Especifica se as chaves devem ser adicionadas automaticamente a um agente ssh(1) em execução. Se esta opção for definida como sim e uma chave for carregada de um arquivo, a chave e sua senha serão adicionadas ao agente com o tempo de vida padrão, como se fosse por ssh-add(1). Se esta opção estiver configurada para perguntar, ssh(1) exigirá confirmação usando o programa SSH_ASKPASS antes de adicionar uma chave (veja ssh-add(1) para detalhes). Se esta opção estiver definida para confirmar, cada uso da chave deverá ser confirmado, como se a opção -c fosse especificada para ssh-add(1). Se esta opção estiver definida como não, nenhuma chave será adicionada ao agente. O argumento deve sersim,confirme,perguntar, ounão(o padrão).

informação relacionada