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

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

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

Но, поскольку ключи не находятся на компьютере, выполняющем соединение ssh, ssh -i завершается ошибкой (файл закрытого ключа не существует на этом компьютере). И, аналогично, ssh-add хочет, чтобы я указал ключ, указав имя файла закрытого ключа. (Или я подозреваю, что это так - на самом деле я не выяснил, как вложить ssh-агентов, но документация по 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 ответ1

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .