Istnieją dwie maszyny Linux, A i B. Skrypty działa na muszą być w stanie zalogować się na B. więc generuje klucz publiczny (prawdopodobnie ssh-keygen
-generated id_rsa.pub
), a następnie korzysta z odpowiedniego klucza prywatnego (ponownie, prawdopodobnie id_rsa
), aby to połączenie SSH.
Jeśli cokolwiek, co powiedziałem powyżej, jest nieprawidłowe lub wprowadzane w błąd, zacznij od poprawienia mnie!
Zakładając, że mniej więcej celuję:
- W jaki sposób A „daje” B swój klucz publiczny (
id_rsa.pub
)? Czy to musi być proces ręczny, czy może być zautomatyzowany? Jeśli ręczny, jaki jest proces? Jeśli jest zautomatyzowane, jakie jest polecenie? Kiedy B „dostaje” ten klucz publiczny, dokąd idzie lub jest przechowywany? - Podczas inicjowania połączenia SSH z B, w jaki sposób A „używa” swojego klucza prywatnego (
id_rsa
) jako części tego połączenia?
linux
ssh
public-key-encryption
użytkownik3178622
źródło
źródło
Odpowiedzi:
ssh-keygen
generuje zarówno klucze publiczne, jak i prywatne, które początkowo znajdują się tylko lokalnie. Przekazywanie klucza publicznego innemu hostowi jest czymś, co użytkownik musiałby zrobić ręcznie, albo wysyłając go komuś odpowiedzialnemu za serwer B, albo jeśli masz konto z hasłem, możesz się zalogować i umieścić go tam. Aby umożliwić logowanie bez hasła do serwera B, musisz dodać swój klucz publiczny do pliku ~ / .ssh / Author_keys na serwerze B (jeden klucz publiczny w linii, w tym pliku może znajdować się dowolna liczba kluczy). Istnieje polecenie linuxssh-copy-id
, które skopiuje dla ciebie identyfikator i umieści go w pliku.Domyślnie ssh użyje pliku ~ / .ssh / id_XXX jako klucza prywatnego. XXX może być rsa, dsa lub dowolnym protokołem, dla którego wygenerowano klucz. IIRC, dsa jest stary i nie należy go używać. Jeśli chcesz użyć innego klucza prywatnego, możesz podać go w poleceniu ssh za pomocą
-i
. Tak długo, jak używany klucz prywatny pasuje do klucza publicznego na zdalnej maszynie (w pliku uprawnione_ klucze dla konta użytkownika, na które się logujesz), nie musisz podawać hasła.źródło
ssh-keygen
jest uruchomiony, wspominasz, że dwa klucze „znajdują się tylko lokalnie”? Gdzie?!? Jak w jakim folderze mogę nawigować i zobaczyćid_rsa.pub
iid_rsa
? (2) Myślałem, żessh-add
to polecenie dodania klucza publicznegoauthorized_keys
, nie? Jaka jest różnica międzyssh-copy-id
issh-add
? Dzięki jeszcze raz!~/.ssh/id_rsa
re '2', ssh-add nie służy do dodawania do kluczy autoryzowanych, lecz do dodawania do pęku kluczy. Nie korzystałem z ssh -dodał jednak. ssh-add polega na tym, że nie musisz wprowadzać frazy za każdym razem, gdy używasz klucza wymagającego frazy. Więc jeśli twoje klucze ssh nie wymagają hasła, to chyba nie ma powodu, aby używać ssh-add i myślę, że nadal będziesz musiał użyć ssh-copy-id lub wykonać ręczne kopiowanie klucza publicznego do authorized_keysTak
ale B potrzebuje klucza publicznego A, aby był wymieniony w pliku autoryzowanych kluczy B, aby A mógł połączyć się z B
możesz także usunąć id_rsa.pub i ssh do B i nadal będzie działać, ponieważ klucz publiczny jest generowany na nowo przy każdym połączeniu ssh i nie jest przechowywany w żadnym id_rsa.pub
instrukcja - coś w stylu
od-
lub nawet bardziej ręcznie, aby złamać polecenie
$
cat id_rsa.pub | ssh user@host 'cat>~/a.a'
następnie na B, upewnij się, że ~ / .ssh istnieje, a następnie wykonaj
cat a.a >> ~/.ssh/authorized_keys
i możesz cat autoryzowane klucze B przed i po, aby upewnić się, że klucz jest na liście.
Lub możesz wysłać wiadomość e-mail z id_rsa.pub na konto e-mail, a następnie z B, B może sprawdzić wiadomość e-mail i dołączyć zawartość pliku id_rsa.pub do swojego pliku autoryzowanych_kluczy
automatycznie
Komenda ssh-copy-id
Musisz mieć możliwość ssh, więc potrzebujesz dostępu do hasła
Zamiast robić ssh użytkownik @ host, robisz ssh-copy-id użytkownik @ host i pojawia się monit o hasło, wpisujesz je, jesteś w, skopiuje klucz publiczny. I następnym razem, gdy zrobisz ssh użytkownik @ host, użyje klucza.
B's ~ / .ssh / Author_keys
no cóż, niewiele wiem na ten temat, od czubka głowy, ale wszystko, co jest zaszyfrowane jednym kluczem, można odszyfrować drugim kluczem, a identyfikacja siebie różni się nieco od wysyłania danych ... i może być coś także o klucz tymczasowy.
źródło