Użyj określonego klucza z ssh-agent

11

Wzdłuż linii Jak powiedzieć git, którego klucza prywatnego użyć? Chciałbym użyć określonego klucza ssh w danej sytuacji.

Mój problem polega na tym, że nawet gdy podam „-i coś”, ssh używa kluczy z mojego agenta ssh w kolejności, w jakiej są dodawane.

Moja konkretna sytuacja:

  • Mam dwóch użytkowników github, każdy z własnym kluczem Chciałbym - na przykład poprzez ssh-config - dla każdego klonu określić, którego klucza użyć:

    Host USER1.git

    Nazwa hosta github.com

    Użytkownik git

    IdentityFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

nadal użyje USER2.id_rsa, jeśli jest to klucz dodany po raz pierwszy do ssh-agent.

Svrist
źródło

Odpowiedzi:

5

W końcu udało mi się to uruchomić:

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
  • Wcięcie się liczy.
  • Zrób ssh-add -li upewnij się, że oba klucze zostały dodane.
    • Skopiuj / wklej każdą ścieżkę ssh-add -ldo odpowiedniego wiersza w, ~/.ssh/configaby uniknąć literówek. Jeśli istnieje ~/.ssh/configliterówka ścieżki do pliku tożsamości dla USER1, wówczas zostanie użyty niewłaściwy klucz (klucz USER2).

Otrzymałem instrukcje w BitBucket. Powinny one działać dla GitHub, ponieważ jedyną różnicą jest HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Aby to działało na zdalnym serwerze przy użyciu przekazywania agentów, wypróbuj sugestię @ stijn-hoop poniżej (w sekcji komentarzy tej odpowiedzi).

rev dgo.a
źródło
3
Ostatni komentarz dotyczący przekazywania agenta znajduje się w tej odpowiedzi: superuser.com/questions/273037/…
Stijn Hoop
1

Użyj IdentitiesOnly yesponiżej tych hostów w .ssh / config.

Puma
źródło
1
ale wtedy nie użyje agenta i nie zmusi mnie do wprowadzenia hasła dla wszystkich połączeń github
svrist
1
Tak, tak to działa. Podczas korzystania z ssh-agent nie można wybierać między różnymi kluczami. Jednym ze sposobów jest uruchomienie wielu ssh-agentów i przełączanie się między nimi za pomocą różnych opakowań dla różnych operacji github lub po prostu przełączanie między ssh-agentami (zmiana SSH_AUTH_SOCK)
Cougar
6
Powyższy komentarz jest niepoprawny - MOŻESZ wybierać tożsamości od swojego agenta ssh. Zobacz także odpowiedź, o której już wspomniałem powyżej, superuser.com/questions/273037/...
Stijn Hoop
0

Chodzi o to, aby użyć pliku klucza publicznego wewnątrz IdentityFiledyrektywy.

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

Jeśli określimy klucz prywatny w konfiguracji SSH, agent SSH nie wybierze odpowiedniego klucza, jeśli klucz prywatny jest zaszyfrowany.

Podobne pytanie dotyczące stackexchange: https://unix.stackexchange.com/a/495785/264704

ttimasdf
źródło