Клиент по-прежнему может войти на сервер по SSH без пароля после генерации новых ключей

Клиент по-прежнему может войти на сервер по SSH без пароля после генерации новых ключей

Сначала я сгенерировал ключи на клиенте (Ubuntu 18.04)

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

затем я скопировал его на сервер (Ubuntu Server 18.04)

$ ssh-copy-id 192.168.1.58

Теперь я вижу ключ на .ssh/authirized_keysсервере и могу войти без пароля.

Затем я сгенерировал новые ключи на клиенте, и предыдущие ключи были перезаписаны. Но я все еще могу войти на сервер без пароля. Я ожидал, что поскольку ключи были изменены, сервер не будет проверять меня. Что я упускаю?

Редактировать:

Я даже ключи снял

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

Я все еще могу войти

$ 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

Редактировать 2:

Это из 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).
...

id_rsaХотя в папке нет файла /home/me/.ssh/. Поэтому я подумал, что, возможно, замешан какой-то кэш и после перезагрузки на клиенте теперь приходится вводить пароль.

Это ssh -vпосле перезагрузки:

...
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:

Поэтому потребовалась перезагрузка.

решение1

Следующий@фра-санЯ копнул немного глубже и вот что я получил:

Это изhttps://www.ssh.com/ssh/agent

По умолчанию агент использует ключи SSH, хранящиеся в каталоге .ssh в домашнем каталоге пользователя. Команда ssh-add используется для добавления идентификаторов в агент. В простейшей форме просто запустите if без аргумента, чтобы добавить файлы по умолчанию ~/.ssh/id_rsa, .ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 и ~/.ssh/identity. В противном случае укажите имя файла закрытого ключа для добавления в качестве аргумента.

Следующая команда выведет список закрытых ключей, доступных в данный момент агенту:

ssh-add -l

После подключения к серверу ssh-add -lвыдает следующее:

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

Если id_*ключи в .ssh/папке изменятся или будут удалены, ssh-add -lвывод все равно будет тот же и он будет использоваться для будущих подключений (по крайней мере, в моем случае).

В этот момент перезагрузка или одна из следующих команд удалит кэшированный ключ:

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

или

$ ssh-add -D
All identities removed.

Теперь для новых подключений будет отображаться запрос пароля.

Обновлять:

Это изhttps://man.openbsd.org/ssh_config.5#AddKeysToAgent:

ДобавитьКлючиАгенту

Указывает, следует ли автоматически добавлять ключи в работающий ssh-agent(1). Если эта опция установлена ​​в значение yes и ключ загружен из файла, ключ и его парольная фраза добавляются в агент со сроком действия по умолчанию, как если бы это было сделано с помощью ssh-add(1). Если эта опция установлена ​​в значение ask, ssh(1) потребует подтверждения с помощью программы SSH_ASKPASS перед добавлением ключа (см. ssh-add(1) для получения подробной информации). Если эта опция установлена ​​в значение confirmed, каждое использование ключа должно быть подтверждено, как если бы для ssh-add(1) была указана опция -c. Если эта опция установлена ​​в значение no, ключи не добавляются в агент. Аргумент должен бытьда,подтверждать,просить, илинет(по умолчанию).

Связанный контент