Możesz skopiować swój klucz publiczny na zdalne komputery. Tak długo, jak mają włączone uwierzytelnianie za pomocą klucza publicznego, a Twój klucz publiczny jest obecny na zdalnym komputerze, możesz ssh
do nich wchodzić bez konieczności podawania hasła.
Najpierw musisz wygenerować publiczną / prywatną parę kluczy, taką jak:
ssh-keygen -t rsa
Postępuj zgodnie z instrukcjami. Gdy pojawi się pytanie, czy chcesz zabezpieczyć klucz za pomocą hasła, powiedz TAK! Złą praktyką jest nie zabezpieczanie kluczy hasłem, a pokażę ci, jak raz na jakiś czas wprowadzać hasło.
Jeśli masz już parę kluczy, możesz pominąć powyższy krok.
Teraz, zakładając, że Twój klucz ssh istnieje na komputerze Mac, ponieważ ~/.ssh/id_rsa.pub
możesz go zainstalować na komputerze zdalnym, uruchamiając:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
W przypadku konkretnego przykładu serwera cytowanego powyżej polecenie wygląda następująco:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Musisz wprowadzić hasło, root@123.456.789.012
aby wykonać tę kopię, ale powinien to być ostatni raz, kiedy musisz to zrobić. Zakładając, że serwer zdalny sshd
jest skonfigurowany do przeprowadzania uwierzytelniania klucza publicznego-prywatnego, kiedy ssh do skrzynki teraz nie powinien prosić o hasło do root
konta - zamiast tego poprosi o hasło do twojego klucza . Czytaj dalej, aby dowiedzieć się, jak zrobić z tego coś, czego nie musisz cały czas wprowadzać.
Powtórz powyższe czynności dla każdej maszyny, do której chcesz podłączyć się za pomocą kluczy zamiast hasła.
Pamiętaj, że każdy , kto przechwyci twój ~/.ssh/id_rsa
plik, może ssh na tym komputerze, jak root
bez podawania hasła do zdalnego komputera. Hasło chroniące plik klucza zapewnia, że będzie musiał znać hasło, aby użyć tego klucza. Upewnij się, że plik jest bezpieczny. Skorzystaj z szyfrowania dysku na komputerze Mac i trzymaj ~/.ssh/
mocno uprawnienia do pliku i katalogu.
Aby ułatwić korzystanie z klucza bez konieczności każdorazowego wpisywania hasła, OS X uruchamia ssh-agent
proces w tle na twoim komputerze. Agent ten buforuje parę kluczy przy pierwszym użyciu, więc musisz tylko raz wprowadzić hasło. Jeśli śpisz tylko na komputerze Mac, nigdy go nie uruchamiaj ponownie, możesz przejść długie okresy bez konieczności podawania hasła.
Możesz wstępnie buforować wszystkie klucze SSH za ssh-agent
pomocą polecenia:
ssh-add
Teraz musisz tylko pamiętać hasło klucza , a nie wiele różnych haseł do kont. Zazwyczaj przechowuję moje hasła w 1Password (bez powiązania), co dodatkowo upraszcza liczbę haseł, które muszę zapamiętać. Następnie po prostu szukam ich w 1Password i wycinam i wklejam je w terminalu, gdy ponownie uruchamiam komputer Mac i uruchamiam ssh-agent
ponownie.
Jeśli połączysz kopiowanie klucza do zdalnych komputerów z rozwiązaniem do zarządzania połączeniami Terminal.app w tym pytaniu , będziesz mieć coś bardzo zbliżonego do PuTTY dla połączenia GUI.
Po stronie serwera sprawdź /etc/ssh/sshd_config
i upewnij się:
PubkeyAuthentication yes
jest włączony w konfiguracji (domyślnie jest w OpenSSH). Możesz także ustawić:
PasswordAuthentication no
Gdy tam jesteś, uwierzytelnianie oparte na hasłach jest wyłączone, a klucze stają się jedynym sposobem na dostęp do urządzenia.
Będziesz musiał ponownie uruchomić sshd na komputerze, jeśli dokonasz jakichkolwiek zmian w pliku konfiguracyjnym.