Как заставить ssh использовать только один ключ из ssh-agent?

Как заставить ssh использовать только один ключ из ssh-agent?

Мне нужно использовать два разных ключа SSH при подключении к одному и тому же хосту.

Машина, которую мне нужно использовать для подключения (из-за ограничений IP-адреса), не является машиной, на которой хранятся ключи ssh, поэтому я использую здесь ssh-agent. Кроме того, эти ssh-подключения происходят под контролем скрипта, который запускается на промежуточной машине.

Если бы ключи ssh были локальными для этой машины, я полагаю, что я мог бы использовать ssh -i (или, может быть, ssh-add во вложенном агенте), чтобы указать идентификатор, который я хочу использовать, и я мог бы обновить скрипты и/или контекст скрипта, чтобы сделать то, что нужно для моего случая (вероятно, с помощью файла конфигурации, чтобы указать соответствующие детали).

Но поскольку ключей нет на машине, выполняющей ssh-соединение, ssh -i не срабатывает (файл закрытого ключа не существует на этой машине). И, аналогично, ssh-add хочет, чтобы я указал ключ, указав имя файла закрытого ключа. (Или я подозреваю, что это так — я на самом деле не разобрался, как вкладывать ssh-agents, но документация по ssh-add заставляет усомниться в том, что это был бы правдоподобный подход.)

Итак, мой вопрос: как заставить ssh использовать только тот ключ, который я указываю при подключении к целевой системе?

[Конечно, другим людям тоже нужно использовать эти скрипты, но это проблема, которую я смогу решить, когда заставлю их работать у себя.]

Другими словами, у меня такая ситуация:

$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)

И в одном контексте мне нужен ssh для использования key2_rsa, а в другом контексте мне нужен ssh для использования key3_rsa.

Использование неправильного ключа в данном случае приводит к сбою соединения с целевой системой (поскольку она распознает другой ключ как имеющий доступ к машине, но не имеющий доступа к этой подсистеме).

Как мне это сделать?

решение1

ssh -iтакже принимает файлы, содержащиепубличныйключи, и если соответствующий ключ будет найден в агенте, он будет опробован в первую очередь.

Кроме того, если -o IdentitiesOnly=yesуказано, клиент будет использоватьтолькоэтот ключ и не будет возвращаться к каким-либо другим ключам, если он был отклонен. (Обратите внимание, что возврат к другиммеханизмы(например, GSSAPI или пароль, контролируется другой опцией.)

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