Назад | Перейти на главную страницу

SSH игнорирует ключ в агенте и продолжает запрашивать пароль для дешифрования ключа

В моем ssh_config, Я настроил SSH для использования определенного ключа при подключении к хосту. Я хочу попробовать SSH только этот ключ, а не любой другой ключ, который он может найти (в ssh-агенте или другом месте), поэтому я указал IdentitiesOnly, слишком.

Host *.foobar.com
   IdentityFile ~/.ssh/keys/id_ed25519
   IdentitiesOnly yes

Теперь ключ защищен паролем для большей безопасности. Чтобы не вводить пароль каждый раз, я добавил его в ssh-agent (вместе с другим ключом):

$ ssh-add -l
256 SHA256:1seMMJNjoexbRqNlVDe9kxkWm8s7fKAEuo+dP+hYut0 (ED25519)
2048 SHA256:p5SXMJNjoexbRqNl8roRamdzz+HFVlRKxtQoEW3vLu0 (RSA)

Однако, когда я пытаюсь подключиться, SSH продолжает спрашивать у меня пароль для расшифровки ключа. Зачем? Когда я изменил конфигурацию, чтобы принудительно использовать другой ключ от агента, это сработало.

Оказывается, хотя для подключения к хостам необходимы только закрытые ключи, использование ssh-agent для правильной работы требуются открытые ключи. Я предполагаю, что SSH идентифицирует ключи, доступные в агенте, по их публичной части - без них он думает, что ключ недоступен.

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

~/.ssh/keys
├── id_ed25519
├── id_rsa
└── id_rsa.pub

После добавления публичного ключа id_ed25519.pub (соответствует закрытому ключу id_ed25519) все заработало как положено.