Jak skonfigurować ssh do uwierzytelnienia użytkownika za pomocą kluczy zamiast nazwy użytkownika / hasła?
34
Dla każdego użytkownika: powinni wygenerować (na swoim komputerze lokalnym) parę kluczy za pomocą ssh-keygen -t rsa
( rsa
można je zastąpić dsa
lub rsa1
też, choć te opcje nie są zalecane). Następnie muszą umieścić zawartość swojego klucza publicznego ( id_rsa.pub
) ~/.ssh/authorized_keys
na logowanym serwerze.
Właściwie wolę ssh-copy-id , domyślnie skrypt znajdujący się na * nix (można go również łatwo zainstalować na Mac OS X ), który automatycznie robi to za Ciebie. Ze strony podręcznika:
źródło
Hum, nie rozumiem. Po prostu utwórz klucz i zacznij. :) HOWTO Dodatkowo możesz zabronić logowania za pomocą hasła. W np. / Etc / ssh / sshd_config:
źródło
Jest to dość prosta do zrobienia - jest prosta solucja należy znaleźć tutaj .
Główne punkty to:
ssh-keygen
na swoim komputerze. Wygeneruje to klucze publiczne i prywatne.~/.ssh/id_rsa.pub
)~/.ssh/authorized_keys
na zdalnym komputerze.Ważne jest, aby pamiętać, że zapewni to każdemu, kto ma dostęp do klucza prywatnego na twoim komputerze, ten sam dostęp do zdalnego komputera, więc podczas generowania pary kluczy możesz wybrać hasło tutaj dla dodatkowego bezpieczeństwa.
źródło
Użytkownicy systemu Windows mogą skonfigurować kit
źródło
Podsumowując to, co powiedzieli inni, konfiguracja kluczy SSH jest łatwa i nieoceniona.
Na komputerze, który będzie SSHing ze trzeba wygenerować parę kluczy:
Po prostu wciśnij enter tam, gdzie zapisano i wprowadź hasło, gdy zostaniesz o to poproszony - idealnie różni się od zwykłego hasła logowania zarówno na bieżącym hoście, jak i tym, do którego będziesz SSHing.
Następnie należy skopiować wygenerowany klucz po prostu do hosta, który chcesz SSH do . Większość dystrybucji Linuksa ma takie narzędzie
ssh-copy-id
:Jeśli Twoja dystrybucja tego nie ma, skopiuj klucz do hosta docelowego i dodaj go do (prawdopodobnie istniejącego)
.ssh/authorized_keys
pliku:Wreszcie, aby uzyskać maksymalną korzyść z kluczy SSH, będziesz chciał uruchomić agenta SSH. Jeśli korzystasz ze środowiska graficznego (Gnome, KDE itp.), To samo wylogowanie i ponowne uruchomienie spowoduje uruchomienie agenta SSH. Jeśli nie, można dodać następujące wpisy do pliku rc (muszli
.bashrc
,.profile
itp):źródło
Jest to przeznaczone jako lista kontrolna. Jeśli ktoś podąża za nim punkt po punkcie, należy uwzględnić najpopularniejsze hasła do logowania bez hasła. Większość tych punktów wymieniono gdzie indziej; to jest agregacja.
Na każdym komputerze pod kontem musi znajdować się
~/.ssh
katalog,chmod 700
z którego będą tworzone lub odbierane połączenia.Klucz (prywatny) musi zostać wygenerowany bez hasła lub można uruchomić agenta, który będzie przechowywać odszyfrowaną wersję klucza zawierającego hasło dla klientów. Uruchom agenta za pomocą
ssh-agent $SHELL
. Ta$SHELL
część zajęła mi trochę czasu. Zobacz stronę podręcznika, ponieważ istnieje wiele różnych szczegółów, jeśli chcesz użyć agenta.Nie zapominaj, że domyślnie słabe klucze (<2048 bit DSA) nie są akceptowane przez ostatnie wersje sshd.
Następujące elementy muszą być wykonane na maszynie po stronie klienta do pochodzić połączenia.
Klucz prywatny musi być umieszczony w
~/.ssh/id_rsa
lub~/.ssh/id_dsa
jako właściwe. Możesz użyć innej nazwy, ale musi ona być uwzględniona w opcji -i w komendzie ssh na maszynie inicjującej, aby jawnie wskazać klucz prywatny.Twój klucz prywatny musi być
chmod 600
.Sprawdź, czy folder domowy to
chmod 700
.Teraz za zezwolenie urządzeniu na otrzymanie żądania. Popularnym modelem jest to, że administrator daje ci dostęp do komputera, którego nie jesteś właścicielem (np. Udostępnionego hostingu). Dlatego w ssh chodzi o to, że oferujesz swój klucz publiczny komukolwiek, kto daje ci konto. Dlatego generalnie nie umieszczasz kluczy prywatnych na maszynie odbierającej żądania. Ale jeśli chcesz, aby ta maszyna również wykonywała wychodzące połączenia ssh, musisz traktować ją jak maszynę oryginalną, wykonując powyższe kroki.
~/.ssh/authorized_keys
pod kontem, które otrzyma połączenia. Tutaj możesz również umieścić inne klucze, które mogą łączyć się za pośrednictwem tego konta. Szczególnie trudna rzecz, jeśli jesteś w vi i wklejasz klucz do pliku z bufora wklejania w PuTTY, jest następujący: klucz zaczyna się od „ssh-”. Jeśli nie jesteś w trybie wstawiania, pierwsze „s” wprowadzą vi w tryb wstawiania, a reszta klawisza będzie wyglądać dobrze. Ale na początku klucza zabraknie litery „s”. Znalezienie tego zajęło mi kilka dni.chmod 600 ~/.ssh/authorized_keys
. Musi to być co najmniej gw.źródło
Jak powiedzieli inni, twoi użytkownicy powinni tworzyć dla siebie klucze na swoich komputerach klienckich za pomocą ssh-keygen i dodawać swój klucz publiczny do ~ / .ssh / uprawnionych_kluczy na komputerze, na którym chcą się zalogować.
Aby uzyskać bardziej szczegółowe informacje, gorąco polecam SSH, The Secure Shell .
źródło
Jest tu dobra rada, więc jej nie powtórzę. Po skonfigurowaniu jednego serwera, aby umożliwić Ci logowanie się przy użyciu kluczy, możesz skonfigurować inne, aby robiły to samo z tym jednym linerem:
Po prostu przejdź do katalogu domowego, zdefiniuj zmienną zdalną jako jedną lub wiele nazw serwerów i zrób kilka naraz. Hasło, o które prosi, będzie Twoim hasłem ssh do zdalnego serwera. Możesz oczywiście użyć uproszczonej wersji bez pętli for:
PAMIĘTAJ: Kopiuj tylko klucze publiczne. Nie chcesz, aby twoje prywatne klucze siedziały na jakimś serwerze, na którym każdy z sudo może je skopiować i brutalnie wymusić twoje hasło.
źródło