Czy można współdzielić plik klucza prywatnego między wieloma komputerami / usługami?

110

Więc wszyscy wiemy, jak używać klucza publicznego / prywatnego za pomocą SSH itp. Ale jaki jest najlepszy sposób ich użycia / ponownego wykorzystania? Czy powinienem trzymać je w bezpiecznym miejscu na zawsze? To znaczy, potrzebowałem pary kluczy, aby uzyskać dostęp do GitHub. Stworzyłem parę od podstaw i używałem jej przez pewien czas, aby uzyskać dostęp do GitHub. Następnie sformatowałem dysk twardy i zgubiłem tę parę. Wielka sprawa, stworzyłem nową parę i skonfigurowałem GitHub do używania mojej nowej pary. Czy jest to coś, czego nie chcę stracić?

Potrzebowałem również pary kluczy publicznych / prywatnych, aby uzyskać dostęp do systemów naszej firmy. Nasz administrator poprosił mnie o mój klucz publiczny, a ja wygenerowałem nową parę i dałem mu go. Czy ogólnie lepiej jest utworzyć nową parę w celu uzyskania dostępu do różnych systemów, czy lepiej jest mieć jedną parę i użyć jej ponownie w celu uzyskania dostępu do różnych systemów? Podobnie, czy lepiej jest utworzyć dwie różne pary i użyć jednej, aby uzyskać dostęp do systemów naszych firm z domu, a drugiej, aby uzyskać dostęp do systemów z pracy, czy też lepiej jest mieć tylko jedną parę i korzystać z niej z obu miejsc?

Behrang
źródło
To nie jest bezpośrednia odpowiedź na twoje pytanie, ale wskazane jest, aby mieć hasła dla każdego klucza. Idealnie, oddzielne hasła dla każdego klucza (użyj menedżera haseł). Powód jest następujący: jeśli włamano się do klucza prywatnego (skradziono laptopa, włamano się do komputera), masz trochę czasu, zanim klucz może zostać brutalnie wymuszony i możesz wymienić klucz publiczny na wszystkich komputerach, które go mają , zanim Twój napastnik będzie mógł. Źródło: help.ubuntu.com/community/SSH/OpenSSH/…
Xandor Schiefer

Odpowiedzi:

86

Zdecydowanie powinieneś mieć osobne klucze prywatne dla każdego pochodzenia . Zasadniczo oznacza to, że zasadniczo powinna istnieć jedna kopia każdego klucza prywatnego (nie licząc kopii zapasowych). Można używać tego samego klucza prywatnego z blisko spokrewnionego komputera, w sytuacjach, gdy włamanie się do jednego zasadniczo daje dostęp do drugiego (na przykład, jeśli są one w sobie shosts.equiv). Nie używaj tego samego klucza prywatnego na komputerach w różnych sferach (np. W domu i pracy), nigdy nie udostępniaj klucza prywatnego dwóm użytkownikom i nigdy nie udostępniaj klucza prywatnego między laptopem a żadnym innym komputerem.

W większości przypadków nie widzę sensu w posiadaniu różnych kluczy prywatnych do różnych miejsc docelowych. Jeśli klucz prywatny zostanie naruszony, wszystkie inne klucze prywatne przechowywane w tym samym katalogu na pewno również zostaną naruszone, więc pojawiłaby się komplikacja bez korzyści bezpieczeństwa.

Jeśli przestrzegasz tych zasad, każda para kluczy identyfikuje jedną parę (komputer, użytkownik), co ułatwia zarządzanie autoryzacją.

Mogę wymyślić dwa wyjątki od ogólnej zasady jednego klucza prywatnego dla każdego pochodzenia:

  • Jeśli masz klucz bez hasła, który daje dostęp tylko do określonego polecenia na określonym komputerze (np. Zautomatyzowanego mechanizmu tworzenia kopii zapasowych lub powiadomień), klucz ten musi różnić się od ogólnego klucza dostępu do powłoki.
  • Jeśli niektóre komputery są podłączone sporadycznie, możesz mieć stary klucz prywatny wraz z nowym kluczem prywatnym, dopóki nie obejdziesz się dokończyć wdrażania nowego klucza.
Gilles
źródło
5
Tak zawsze korzystałem z mojej pary kluczy. Nie rozumiałem, dlaczego GitHub opowiada się za wygenerowaniem nowej pary kluczy w instrukcjach konfiguracji. Zignorowałem to i użyłem mojej standardowej pary kluczy. Zakładam, że są konserwatywni.
toolbear74
Ok, więc mówisz „Nie używaj tego samego klucza prywatnego na komputerach w różnych królestwach”, ale co, jeśli DNS rozpoznaje nazwę hosta na dowolnym komputerze w zależności od twojej lokalizacji? Bez współdzielenia klucza prywatnego dostaję ostrzeżenia lub awarie, gdy próbuję ssh lub rsync do tej nazwy hosta, ponieważ ssh mylą się mając dwa oddzielne klucze dla tej samej nazwy hosta.
Michael
@Michael Nie rozumiem, jaki może być problem z kluczami użytkownika w opisywanym scenariuszu, o czym jest ten wątek. SSH pomyliłby się co do kluczy hosta , ale jako użytkownik widzisz klucz publiczny hosta, a nie klucz prywatny hosta, a udostępnianie klucza prywatnego hosta jest niebezpieczne - zalecałbym to tylko, jeśli hosty są całkowicie równoważne (redundancja w przypadku awarii jednego z nich) i prawdopodobnie nawet wtedy.
Gilles
Ach, okej Wygląda na to, że nie ma między nimi wyraźnego rozróżnienia, i zakłada się, że wiesz, o którym mowa.
Michael
1
@JSBach Posiadanie osobnych kluczy dla każdej dziedziny pozwala zdefiniować bardziej szczegółowe uprawnienia (klucz przechowywany w strefie o niskim poziomie bezpieczeństwa A jest dozwolony do użycia między komputerami A, ale logowanie do B wymaga silniejszego współczynnika uwierzytelnienia) i pozwala je odwołać osobno (królestwo A zostało naruszone, ale nadal mogę zalogować się do C z B). SSO to przypadek, w którym logujesz się do systemu o najwyższym poziomie bezpieczeństwa, a następnie możesz zalogować się gdzie indziej. Nie wiem, jakie ryzyko widzą, mając wiele kluczy na użytkownika. Byłby to temat dotyczący bezpieczeństwa informacji .
Gilles
4

Nie wiem, co jest najlepszym sposobem, ale mogę powiedzieć, która jest moja droga.

Jako sysadmin używam innego klucza, aby uzyskać dostęp do każdego serwera / usługi jako root. W ten sposób, jeśli klucz zostanie zgubiony lub zagrożony, ograniczam ryzyko do jednego serwera i nie muszę aktualizować wszystkich moich usług za pomocą zupełnie nowych kluczy.

Mówiąc o użytkownikach, używam innego klucza dla każdego z nich. Za pomocą tego klucza użytkownik może uzyskać dostęp do usługi, której potrzebuje jako użytkownik nieuprzywilejowany. W ten sposób mogę łatwo przyznać lub odwołać dostęp do pojedynczych usług każdemu użytkownikowi. W przypadku utraty klucza przez użytkownika mogę go usunąć ze wszystkich usług i ograniczyć ryzyko nieautoryzowanego dostępu.

MariusPontmercy
źródło
+1 Porozmawiam z szefem o nowej polityce używania klucza ;-) na serwer / usługę brzmi jeszcze bezpieczniej niż tylko na sieć
Diskilla
1

Wierzę, że możesz użyć klucza prywatnego w dowolnym miejscu, o ile umieścisz na nim hasło, co oznacza, że ​​jeśli chcesz udostępnić swój klucz prywatny kilku komputerom, powiedzmy laptop 1, 2, pulpit 1, 2, powinno być w porządku.

Z mojego doświadczenia wynika, że ​​moim głównym komputerem jest pulpit, na którym wykonuję większość pracy za pomocą wydajnego procesora, ale czasami muszę używać laptopa na telefonie komórkowym, rozwiązywać problemy w centrum danych i tym podobne, więc nadal mogę zalogować się do dowolnego hosta w którym znajduje się mój klucz publiczny.

Grant Skywalker
źródło
1
Przeczytaj najlepszą odpowiedź tutaj. Robisz to źle. To nie tak, że nie możesz tego zrobić, ale nie powinieneś.
PhilT
2
Nie rozumiem, dlaczego wszystkie opinie negatywne. Sieci uniwersyteckie (na przykład) często mają sieciowy katalog domowy, więc ten sam klucz prywatny jest używany wszędzie przez użytkownika, nawet na laptopach, które otrzymujesz. Tak długo, jak nie skopiujesz go niezaszyfrowanego przez Internet, myślę, że w porządku, jeśli rozumiesz ryzyko. Cholernie wygodniejsze w ten sposób, bez konieczności dodawania klucza publicznego do 2000 różnych miejsc tylko dlatego, że zalogowałeś się na innej maszynie.
Asfand Qazi
Głosowano, ponieważ nie powinieneś tracić przedstawiciela dla tej odpowiedzi. To osobiste preferencje, oczywiście użycie osobnego klucza na usługę i maszynę ostatecznie daje większą kontrolę, ale czasami jest to tylko strata czasu w zależności od przypadku użycia.
Daniel Dewhurst,
0

W mojej firmie korzystamy z tych kluczy specyficznych dla użytkownika. To oznacza przypadek drugi. Użytkownik ma swój własny klucz, który jest używany na każdym komputerze, którego używa do łączenia się z systemem firmy. moim zdaniem jest użycie jednego klucza dla jednego systemu. Oznacza to, że używasz tego klucza na każdym komputerze, którego potrzebujesz, aby połączyć się z określonymi sieciami. W twoim przypadku byłby to jeden klucz dla GitHub i jeden klucz dla systemu firmy. Więc jeśli administrator zapyta cię ponownie, dam mu ten sam klucz, co ostatnim razem. nie nowy. Ale nie wiem, czy istnieje wspólna polityka użytkowania tych kluczy i odtąd robię to źle. To na pewno możliwe ;-)

Diskilla
źródło
0

Wygenerowany klucz publiczny jest dla wszystkich. Umożliwi im to: a) sprawdzenie autentyczności, b) szyfrowanie

Klucz prywatny jest, no cóż, prywatny. To jest tylko dla ciebie. I to jest klucz, który należy gdzieś wykonać w bezpiecznym miejscu. Możesz go również zaszyfrować bezpiecznym hasłem, jeśli na przykład zapiszesz go w pamięci USB.

Klucz publiczny to twoja tożsamość w stosunku do innych. Więc nie ma problemu / lepiej używać jednej pary kluczy do wszystkiego, przynajmniej tam, gdzie nie chcesz używać wyraźnej nowej tożsamości, aby inni nie wiedzieli, że to ty.

Kissaki
źródło
3
Dzięki, ale twoja odpowiedź nie jest w większości związana z moim pytaniem. Zobacz odpowiedź @ Diskilla.
Behrang