Використовуйте вказаний ключ від ssh-агента


11

Уздовж лінії , як сказати мерзотника , який приватний ключ для використання? Я хотів би використовувати певний ключ ssh у даній ситуації.

Моя проблема полягає в тому, що навіть коли я вказую ssh '-i щось', використовує ключі від мого ssh-агента в тому порядку, який вони додаються.

Моя конкретна ситуація:

  • У мене є два користувачі github, у кожного з яких є власний ключ, який я хотів би - наприклад, через ssh-config - для кожного клона вказати, який ключ використовувати:

    Хост USER1.git

    Ім'я хоста github.com

    Користувач git

    IdentityFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

все ще використовуватиме USER2.id_rsa, якщо це ключ, який вперше додано до ssh-агента.

Відповіді:


5

Нарешті я змусив його працювати:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • Відступ рахується.
  • Зробіть ssh-add -lі переконайтесь, що обидва ключі були додані.
    • Скопіюйте / вставте кожен шлях ssh-add -lу відповідний рядок, ~/.ssh/configщоб уникнути помилок. Якщо ~/.ssh/configдля USER1 є помилка шляху ідентифікації, замість цього буде використаний неправильний ключ (ключ USER2).

Я отримав інструкції в BitBucket. Вони повинні працювати для GitHub, оскільки єдиною різницею є HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Щоб це працювало на віддаленому сервері за допомогою переадресації агента, спробуйте пропозицію @ stijn-hoop нижче (в розділі коментарів цієї відповіді).


3
Останнє повідомлення про переадресацію агента дивіться у цій відповіді: superuser.com/questions/273037/…
Stijn Hoop

1

Використовуйте IdentitiesOnly yesнижче цих хостів у .ssh / config.


1
але тоді він не використовуватиме агент і змусить мене вводити пароль для всіх з'єднань github
svrist

1
Так, це працює. Ви не можете обирати між різними клавішами під час використання ssh-агента. Один із способів - запустити декілька ssh-агентів та переключитися між ними, використовуючи різні обгортки для різних операцій github, або просто перемикаючись між ssh-агентами (зміна SSH_AUTH_SOCK)
Cougar

6
Коментар, вказаний вище, є невірним - ви можете МОЖИТЕ вибирати посвідчення зі свого ssh-агента. Дивіться також відповідь, яку я вже згадував вище, superuser.com/questions/273037/…
Stijn Hoop

0

Сенс полягає у використанні файла відкритого ключа всередині IdentityFileдирективи.

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa.pub

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa.pub

Якщо ми вкажемо приватний ключ всередині конфігурації SSH, агент SSH не зможе вибрати потрібний ключ, якщо приватний ключ зашифрований.

Аналогічне запитання щодо stackexchange: https://unix.stackexchange.com/a/495785/264704

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.