Jak przechowywać poświadczenia SSH w terminalu


33

Jestem nowy na MacBooku i prowadzę El Capitan.

Migruję użycie mojego komputera z komputera na MacBook. Jestem długoletnim użytkownikiem PuTTY i SuperPuTTY na PC.

Chcę tworzyć i zapisywać dane logowania na moich serwerach internetowych w MacBook Terminal, tak jak zrobiłem to w SuperPuTTY na PC.

Czy można zapisać dane logowania do serwera WWW w terminalu Mac?

Oto mój ogólny cel:

Chciałbym wiedzieć, czy istnieje prosty sposób w Mac Terminal do przechowywania następujących danych logowania do wiersza poleceń, a następnie użyj jakiegoś krótkiego kodu, aby połączyć się z moim serwerem internetowym przez Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Zarządzam 5 różnymi serwerami internetowymi i łączę się z nimi, więc uporządkowanie i uporządkowanie danych logowania przy użyciu metody szybkiego / szybkiego połączenia byłoby ogromną oszczędnością czasu. Zwłaszcza, że ​​moje hasła to tajemnicze ciągi 64 znaków.


Wyczyściłem komentarze, ponieważ wersja redagowana przez Tammy trzy straciła to z parku pod względem przejrzystości i przydatności. Dobra robota!
bmike

Odpowiedzi:


50

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 sshdo 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.pubmoż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.012aby wykonać tę kopię, ale powinien to być ostatni raz, kiedy musisz to zrobić. Zakładając, że serwer zdalny sshdjest skonfigurowany do przeprowadzania uwierzytelniania klucza publicznego-prywatnego, kiedy ssh do skrzynki teraz nie powinien prosić o hasło do rootkonta - 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_rsaplik, może ssh na tym komputerze, jak rootbez 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-agentproces 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-agentpomocą 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-agentponownie.

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_configi 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.


Dzięki @IamC - ta odpowiedź jest świetna i jestem pewien, że zadziała. Dziś rano utworzyłem tutaj konto wymiany stosów na kanale Mac Channel, aby sprawdzić, czy mogę w szybki i łatwy sposób zapisać dane logowania w Terminalu lub na komputerze Mac. Wygląda na to, że jest to niezwykle skomplikowane i nie jest dla mnie realnym rozwiązaniem. Oto dlaczego: <more>
tammy

<cd.> Mam dostęp z linii poleceń do wielu serwerów WWW (łącznie 5). Mam komputer stacjonarny w moim biurze z dostępem SSH (przez PuTTY) do tych serwerów sieciowych. W moim biurze domowym mam duży laptop z dostępem SSH (przez PuTTY) do tych serwerów sieciowych. Właśnie kupiłem MacBooka Air na podróże i wizyty u klientów. Jest idealny do tej konkretnej potrzeby. Miałem nadzieję, że połączenia SSH z serwerami będą tak łatwe, jak to możliwe za pośrednictwem PuTTY i SuperPuTTY na PC. <more>
tammy,

<cd.> Ale nie mogę przejść przez publiczny klucz autoryzacji, ponieważ musiałbym zmienić sposób, w jaki PuTTY działa na komputerach domowych w domu i biurze. Zadanie stało się zbyt trudne, aby komputer Mac działał jak mój komputer, więc myślę, że będę musiał trzymać się procesu kopiowania i wklejania, aby połączyć się z komputerem Mac. Dziękuję za pomoc Bardzo doceniam, że pomogłeś mi uprościć proces.
tammy,

2
@tammy możesz zostawić PasswordAuthentication yespo stronie serwera, a PuTTY będzie nadal działać tak jak zawsze na twoim komputerze z systemem Windows. To nie jest scenariusz ani - ani - można zezwolić na oba typy uwierzytelniania na serwerze. PuTTY obsługuje również autoryzację klucza publicznego / prywatnego, taką jak FWIW. Możesz skopiować ~/.ssh/id_rsa*pliki na komputer z systemem Windows i zaimportować je do PuTTY w celu uwierzytelnienia na serwerze. PuTTY, pod maską, używa dokładnie tych samych bibliotek OpenSSH do łączenia się, co sshw OS X.
Ian C.

1
ssh-addnadal działa nawet w Sierra (OS X 10.12). Dzięki
SaxDaddy,

4

Możesz użyć sshpass, aby zapisać hasło i nie będziesz musiał wstawiać za każdym razem, co nie jest dobrą praktyką (problemy z bezpieczeństwem).

Postępuj zgodnie z instrukcjami instalacji Mac OS X na: https://gist.github.com/arunoda/7790979

Po zainstalowaniu sshpass uruchom sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

zrób to samo dla swoich 5 serwerów internetowych i nie będziesz musiał wstawiać hasła za każdym razem.


1
Czuję się zbyt głupi w tym przypadku. Wydaje mi się, że używanie komputera z PuTTY i SuperPuTTY za bardzo mnie zdystansowało od podstawowego wiersza poleceń. Zredagowałem swoje OQ moim ogólnym celem. Spójrz.
tammy,

Zakładam, że możesz teraz połączyć się z root@123.456.789.012 i po prostu chcę zautomatyzować ten proces. Zasadniczo nie chcesz pisać za każdym razem ssh -p 2200 root@123.456.789.012i Password: **********************?
enzo

ssh-copy-idnie jest częścią standardowej dystrybucji OS X.
Ian C.

@IanC. Myślę, że zapomniałem, że zainstalowałem go z naparem. zmodyfikuje moją odpowiedź
enzo,

Masz to @maetsoh - właśnie to chcę osiągnąć tutaj.
tammy,

1

Oprócz klucza publicznego / prywatnego plik .ssh / config można skonfigurować w celu ułatwienia korzystania z poleceń ssh, takich jak aliasy, defaut użytkownik / port na serwer, opcje ssh, polecenia proxy ...

Zasadniczo wszystko, co można skomplikować w komendzie ssh, również może znajdować się w tym pliku.


0

Przeniesiłem Putty na Maca jako natywny pakiet aplikacji, więc nie potrzebujesz Macportów ani terminali, jeśli nie jesteś użytkownikiem technicznym.

Więcej informacji na temat zrzutów ekranu znajduje się tutaj: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Twoje zdrowie,


Witamy w Zapytaj inaczej! Odpowiedz bezpośrednio na pytanie. Jeśli wspomnę o produkcie, nad którym pracujesz, to w porządku, ale postaraj się być na ten temat, a nie wklejać tę samą reklamę marketingową na wielu postach.
bmike
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.