Как заставить ssh использовать только один ключ от ssh-agent?
262
rdm
Мне нужно использовать два разных ключа SSH при подключении к одному и тому же хосту.
Машина, которую мне нужно использовать для подключения (из-за ограничений ip-адреса), - это не машина, где хранятся ssh-ключи, поэтому я использую ssh-agent здесь. Также эти ssh-соединения происходят под управлением скрипта, который запускается на промежуточной машине.
Если бы ключи ssh были локальными для этой машины, я думаю, что я мог бы использовать ssh -i (или, может быть, ssh-add во вложенном агенте) для указания идентификатора, который я хочу использовать, и я мог бы обновить сценарии и / или контекст сценария до сделать правильную вещь для моего случая (вероятно, с помощью файла конфигурации, чтобы указать соответствующие детали).
Но, поскольку ключи не находятся на машине, выполняющей соединение ssh, ssh -i завершается ошибкой (файл закрытого ключа не существует на этой машине). И, аналогично, ssh-add хочет, чтобы я указал ключ, указав имя файла закрытого ключа. (Или я подозреваю, что это так - на самом деле я не выяснил, как вложить ssh-агентов, но документация по ssh-add заставляет усомниться в том, что это был бы правдоподобный подход.)
Поэтому мой вопрос: как мне заставить ssh использовать только тот ключ, который я указал при установлении контакта с системой назначения?
[Конечно, другие люди также должны использовать эти сценарии, но эту проблему я могу решить после того, как я заставлю ее работать на себя.]
И в одном контексте мне нужно ssh, чтобы использовать key2_rsa, а в другом контексте мне нужно ssh, чтобы использовать key3_rsa
Использование неправильного ключа приводит к сбою соединения с системой назначения (поскольку он распознает другой ключ как имеющий доступ к машине, но не имеющий доступа к этой подсистеме).
Как мне сделать эту работу?
Это своего рода дубликат https://superuser.com/questions/357602/use-a-specified-key-from-ssh-agent
grawity 6 лет назад
1
1 ответ на вопрос
2
grawity
ssh -iтакже принимает файлы, содержащие открытые ключи, и, если в агенте найден соответствующий ключ, он будет опробован раньше всего.
Кроме того, если -o IdentitiesOnly=yesуказано, клиент будет использовать только этот ключ и не будет использовать другие ключи, если он был отклонен. (Обратите внимание, что откат к другим механизмам, таким как GSSAPI или пароль, контролируется другой опцией.)