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

227
rdm

Мне нужно использовать два разных ключа 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

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

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

0
Это своего рода дубликат https://superuser.com/questions/357602/use-a-specified-key-from-ssh-agent grawity 6 лет назад 1

1 ответ на вопрос

2
grawity

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

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

Похожие вопросы