Как я могу заставить SSH использовать только ключи, предоставленные ssh-agent?

237
sschuberth

Мне нужно sshиспользовать только ключи, предоставленные ssh-agentи игнорировать любые файлы идентификации в ~/.ssh. Какой лучший способ сделать это?

Предыстория: мне нужно пройти аутентификацию на сервере Git через SSH. У меня есть, ~/.ssh/id_rsaкоторый аутентифицируется должным образом, но связанный с ним пользователь Git не имеет правильных разрешений доступа к хранилищу. Поэтому мне нужно использовать другой ключ, который я могу предоставить только через ssh-agent, для аутентификации в качестве правильного пользователя Git. Тем не менее, поскольку SSH, по-видимому, отдает предпочтение локальным файлам идентификации над предоставленными агентом, я всегда заканчиваю тем, что аутентифицируюсь как неправильный пользователь.

0

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

0
grawity

Нет никакой возможности сделать именно это (кроме переименования id_rsa в id_whothing).

Но вопрос, как представляется, «как мне сделать sshпредпочитает конкретный агент только ключ». На самом деле ответить немного проще - вы можете сделать это, используя ту же IdentityFileопцию (-i), что и всегда.

Сначала используйте ssh-add -Lдля извлечения открытого ключа из агента в файл; затем укажите IdentityFileна извлеченный открытый ключ. ssh примет его даже без приватной части и автоматически использует ssh-agent для аутентификации.

Интересно, что `-i` также принимает открытые ключи (если соответствующий закрытый ключ предоставлен агентом). Я не видел это где-то документально, вы можете предоставить ссылку? Но что еще более важно, мой агент управляет несколькими ключами, и я бы предпочел, чтобы SSH выбирал соответствующий из них автоматически вместо того, чтобы вручную извлекать открытый ключ для правильного. sschuberth 8 лет назад 0
И как именно SSH должен автоматически «выбрать соответствующий ключ», если вы отказываетесь сообщить ему, какой ключ выбрать? Он не может получить эту информацию от сервера - все, что он может сделать, это попробовать все имеющиеся у него ключи и посмотреть, принимает ли сервер один из них. grawity 8 лет назад 0
Точно, SSH должен попробовать их все, но только те, которые предоставлены агентом. sschuberth 8 лет назад 0

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