Ключ ssh сохраняется даже после удаления личного ключа из ~ / .ssh - почему?

18

Я сгенерировал ключи SSH (открытый и закрытый) и сохранил их в ~/.ssh/myServer/.

Я добавил открытый ключ к ~/.ssh/authorized_keysфайлу сервера, и все отлично работает!

Пытаясь понять, как работают ключи, я удалил их и с удивлением обнаружил, что все еще могу подключиться к серверу.

Почему я все еще могу подключиться без пароля?

poltj18
источник

Ответы:

24

Добро пожаловать в удивительный мир OS X Keychain и ssh-agent ! Со страницы руководства:

ssh-agent - это программа для хранения закрытых ключей, используемая для аутентификации с открытым ключом (RSA, DSA, ECDSA). Идея состоит в том, что ssh-agent запускается в начале сеанса X или сеанса входа в систему, а все другие окна или программы запускаются как клиенты для программы ssh-agent. Посредством использования переменных переменных среды можно найти агент и автоматически использовать его для аутентификации при входе на другие машины с использованием ssh (1).

Ваш закрытый ключ был кэширован в агенте и извлекается оттуда для аутентификации вашего сеанса. OS X через Keychain выполняет автоматическое кэширование ssh-agent, потому что это «удобно для пользователя». Это может быть немного тревожно, но в основном это удобно.

Время жизни по умолчанию для кэшированных ключей - навсегда. Это, вероятно, не лучший вариант по умолчанию. Он очистит кэшированные ключи при цикле выхода из системы / входа в систему или перезагрузки. Или вы можете вызвать сброс, убив текущего агента, используя:

ssh-add -D

Вы можете получить список всех учетных данных, кэшированных агентом, выполнив:

ssh-add -l

Это сделает то же самое, но покажет полные открытые ключи:

ssh-add -L
Ян С.
источник
Вот это да! Большое спасибо! Я был действительно смущен относительно того, что происходило. Я понимаю теперь!
poltj18
2
@ FAYNUS, если это решит проблему для вас, пожалуйста, нажмите зеленую галочку справа, чтобы пометить его как «принятый ответ»! Добро пожаловать, чтобы спросить другого!
Ян С.