Ostatnio zacząłem używać kluczy SSH zamiast haseł (oczywiście dzięki GitHub), więc proszę pamiętać, że jestem całkiem nowy w tej całej koncepcji. Obecnie moje klucze po prostu leżą w ~ / .ssh, ale nie jestem pewien, czy to dobra praktyka. Na przykład, jeśli mam wiele komputerów, musiałbym zduplikować moje klucze prywatne, co moim zdaniem jest niepożądane. Lub, jeśli mój HDD pójdzie kaput, wtedy zgubię te klucze, co (jak sądzę) jest również niepożądane.
Więc jakie są najlepsze praktyki bezpiecznego przechowywania, kluczy i niezawodności kluczy SSH?
Wydaje się, że używanie karty inteligentnej jest opcją (zobacz Karty inteligentne do przechowywania kluczy gpg / ssh (Linux) - czego potrzebuję? ), Czy to jest najlepsze?
Aktualizacja: Powodem pytania było to, że wiele usług (takich jak GitHub, AWS EC2) zawiera przewodniki na temat konfigurowania kluczy SSH do korzystania z usługi, ale w niewielkim stopniu lub bez tła (np. Co zrobić, jeśli już wygenerowano klucz przez ssh-keygen
[1], jakie są zalecane środki bezpieczeństwa). I nie jest jasne, czy te informacje są w rzeczywistości nieistotne, czy oczekuje się, że będziesz je znać „domyślnie”.
Podsumowując odpowiedzi do tego momentu (ale proszę je przeczytać, a jeśli masz coś do dodania - proszę zrobić): wydaje się, że w tym przypadku dobrze jest zostawić swoje klucze prywatne w ~ / .ssh, o ile trzymaj ich przed innymi ludźmi; ale upewnij się, że masz inny sposób na dostęp do usługi w celu przesłania lub wygenerowania nowego klucza, jeśli go zgubisz (co zwykle ma miejsce).
[1] GitHub służył pomocą w zarządzaniu wieloma kluczami .
Odpowiedzi:
Nie, właściwie nie. Jeśli masz wiele komputerów, po prostu utwórz oddzielny klucz prywatny na każdym z nich. Dla każdego klucza prywatnego po prostu prześlij odpowiedni klucz publiczny do GitHub przy użyciu tego samego procesu.
Nie całkiem; jeśli zgubisz swój klucz prywatny, po prostu wygeneruj nowy i prześlij odpowiedni klucz publiczny.
Co do tego, co jest warte, masz rację, że duplikowanie klucza prywatnego jest wysoce niepożądane. Idealnie, klucz prywatny powinien być generowany w jednym pliku (
~/.ssh/id_rsa
na przykład) i nigdy nie powinien pozostawiać tego pliku - to znaczy, nigdy nie powinien być kopiowany, przenoszony, a zwłaszcza nie przesyłany przez sieć. (np. wykluczam je z kopii zapasowych) Ze względu na naturę asymetrycznych protokołów uwierzytelniania, musisz tylko martwić się o to, że Twój klucz prywatny nie jest dostępny dla innych. Jeśli pójdziesz trochę za burtę i sam się zorientujesz, to na ogół nie jest to wielka sprawa. (Nie należy tego mylić z kluczami prywatnymi szyfrowania asymetrycznego , np. Kluczami GPG, które prawdopodobnie chcesz zachować).źródło
Dodałbym, że ~ / .ssh / jest czytelny dla twojej przeglądarki, jeśli używasz tego samego konta użytkownika do uruchamiania obu.
Spróbuj! Skieruj przeglądarkę na klucz prywatny w katalogu domowym. Jest fajnie
Polecam więc przechowywanie kluczy ssh w katalogu osobistym innego konta użytkownika.
słowo na temat kluczy chroniących hasło
look_at_keys.html
źródło
Istnieje bardzo ładne narzędzie o nazwie KeePass2 ( http://keepass.info/ ) z rozszerzeniem ( http://lechnology.com/software/keeagent/ )
Możesz tam przechowywać Hasła, Klucze SSH i wiele innych (na oficjalnej stronie KeePass są o wiele bardziej przydatne rozszerzenia)
Jeśli chcesz logować się automatycznie za pomocą kluczy SSH, wystarczy zainstalować PuTTY, Pageant i KeePass w KeeAgent. Jeśli konfigurujesz go poprawnie, nie musisz konfigurować kluczy w PuTTY, Pageant lub FileZilla.
Sam go używam i jestem z tego bardzo zadowolony. Mam ponad 30 VPS i Root Server z pewną ilością różnych kluczy SSH i jedyne, co muszę zrobić, to otworzyć KeePass (to nie jest moje podstawowe hasło bezpieczne), a następnie muszę tylko wpisać hasło w konsoli.
źródło
Polecam przechowywanie kluczy prywatnych:
Powiedziałbym, że najlepszym miejscem byłoby:
Jeszcze lepiej, po prostu wydrukuj i umieść w ognioodpornym sejfie.
źródło
Mam plik tar, który zawiera moje ustawienia katalogu użytkownika (.bashrc, .ssh / i inne pliki konfiguracyjne), które przechowuję w bezpiecznym miejscu. Kiedy dostanę nowe konto powłoki gdziekolwiek, rozpakuję do niego plik tar.
Klucze prywatne należy umieszczać tylko na zaufanych serwerach, w przeciwnym razie należy utworzyć nowy klucz prywatny na serwerze tylko dla tego serwera i umożliwić mu dostęp do rzeczy, do których ma on mieć dostęp.
Osobiście czuję się swobodnie po prostu kopiując wszędzie mój plik .ssh / stuff (oznacza to również, że zwykły klucz ssh natychmiast uzyskuje dostęp do ssh, ponieważ jest już w pliku autoryzowanym_kluczy).
źródło
Możesz przechowywać klucze ssh w osobnym katalogu wewnątrz zaszyfrowanej partycji. Następnie możesz użyć ssh wskazującego na ten katalog za pomocą
-i
:Pełny opis (
man ssh
):Moje podejście do bezpieczeństwa polega na tym, że dzielę informacje na prywatne i ogólne. Nie chcę szyfrować całej partycji domowej, dlatego kopiuję tajne pliki (takie jak te
~/.ssh
wewnątrz) na zaszyfrowaną partycję.Myślę, że daje to dość skuteczne zabezpieczenia, ponieważ złośliwe oprogramowanie nie znajdzie niczego w ~ / .ssh i prawdopodobnie nie skanuje całego systemu lub profili powłoki, aby znaleźć tę lokalizację.
ustawia ścieżkę do pliku konfiguracyjnego.
PS Chciałbym utworzyć alias
alias ssh='ssh -i ... -F ...'
i umieścić go w twoim profilu.PPS Jeszcze tego nie sprawdziłem i nie wiem, jak inne programy (takie jak git) będą działać z tymi ustawieniami ssh.
źródło