Jak można używać wielu kluczy prywatnych z ssh?

58

Byłem w stanie skonfigurować ssh do używania uwierzytelniania klucza prywatnego / publicznego. Teraz jestem w stanie to zrobić

ssh user@server1

I loguje się przy użyciu klucza prywatnego. Teraz chcę połączyć się z innym serwerem i użyć innego klucza. Jak to skonfigurować?

ssh user@server1

używa privatekey1

ssh user@server2

i używa privatekey2

Jozuego
źródło
7
Bez prawdziwego powodu - jeden to mitbox, a drugi to serwer roboczy i nie chciałem używać mojego klucza domowego w pracy.
Joshua,
żadna z odpowiedzi nie wydaje się odpowiadać na pełne pytanie, np. jak tworzyć różne klucze privatekey1 i privatekey2
jpwynn

Odpowiedzi:

49

Istnieje kilka opcji.

  1. Załaduj oba klucze do agenta ssh za pomocą ssh-add. Wtedy oba klucze będą dostępne podczas łączenia się z oboma serwerami

  2. Utwórz $HOME/.ssh/configplik i utwórz Hostsekcję dla serwera 1 i kolejną dla serwera 2. W każdej Hostsekcji dodaj IdentityFileopcję wskazującą odpowiedni plik klucza prywatnego

Tłumienie ognia
źródło
2
Agent ssh był świetnym pomysłem, także jeśli mam zarówno plik klucza publicznego, jak i prywatnego, tj. key1 i key1.pub, w ~ / .ssh automatycznie je załaduje.
Joshua,
57

Możesz to ustawić w swoim ~/.ssh/configpliku. Miałbyś coś takiego:

Host server1
IdentityFile ~/.ssh/key_file1

Host server2
IdentityFile ~/.ssh/key_file2

man ssh_config jest referencją

Rory
źródło
4
Możesz również określić Userdla każdego hosta, aby ograniczyć liczbę naciśnięć klawiszy. Wreszcie, gdy generujesz nowy klucz SSH dla każdego hosta, ssh-keygenupewnij się, że faktycznie wprowadziłeś alternatywną ścieżkę klucza.
Marco Ceppi
Czy istnieje opcja określenia domyślnego klucza, na przykład powiedzenie, host x ->key1a następnie reszta hostówkey2
azerafati
Tak, użyj sh Host * I dodaj wartości domyślne, niż zastąpienia, które zostaną dodane poniżej. Ponadto: w sh man_ssh_config szczególności część w sekcji „Host” w odniesieniu do gwiazdki „*” i wykrzyknika!
immeëmosol