В моем 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
) все заработало как положено.