
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_keys
servidor 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_rsa
arquivo 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 -v
apó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 -l
mostra 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 -l
ainda 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).