Jak przenieść moje klucze SSH na inną maszynę?

42

Mam konta na dwóch komputerach: H1 i H2. Utworzyłem klucze ssh na H1 i zainstalowałem na S1. Mogę teraz ssh do S1 z H1. Chcę zrobić to samo z H2. Jak zainstalować klucze ssh wygenerowane na H1 na H2?

Bruce
źródło
2
Ponieważ ssh-copy-idjest to bardziej głupie (bez zastępowania istniejących kluczy lub przypadkowego kopiowania klucza prywatnego zamiast klucza publicznego ) i mniej znane rozwiązanie, rozważ zaakceptowanie jednej z tych odpowiedzi jako odpowiedzi zaakceptowanej.
agtoever

Odpowiedzi:

28

Edytowane: jeśli posiadasz oba komputery, możesz udostępnić swój klucz prywatny. Ale to rozwiązanie nie jest bezpieczne w przypadku skradzionego notebooka lub maszyn, których nie posiadasz.

Możesz skopiować swoje klucze prywatne z H1 do H2, jeśli chcesz użyć tego samego klucza prywatnego, aby móc zalogować się z H2 do S1. Kiedy jesteś w H1, wykonaj polecenia:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

Ostrzeżenie! Spowoduje to usunięcie i zastąpienie dowolnego klucza prywatnego, który miałeś w H2.

Lepszym sposobem jest wygenerowanie nowych kluczy prywatnych na H2 ( ssh-keygen) i zainstalowanie ich części publicznej na S1 za pomocą ssh-copy-idutil. W tym bezpieczniejszym przypadku będziesz mieć dwa zestawy kluczy; jeden służy do logowania H1-S1, a drugi do logowania H2-S1. W S1 będą autoryzowane dwa klucze publiczne. Będziesz mógł odwołać dowolne z nich lub oba (na przykład, gdy notebook zostanie skradziony lub właściciel urządzenia zdecyduje o wyłączeniu konta i ponownym użyciu wszystkich plików).

osgx
źródło
8
Kopiowanie klucza prywatnego nie jest dobrym pomysłem. Posiadanie jednego klucza w wielu lokalizacjach 1. zwiększa jego podatność na zagrożenia, 2. zwiększa ryzyko utraty kontroli nad wszystkimi lokalizacjami, 3. nie pozwala na wyłączenie dostępu z jednej lokalizacji. Z punktu widzenia bezpieczeństwa należy wygenerować nową parę kluczy w każdej lokalizacji - rozwiązanie od Mu Qiao.
pabouk
27

Posługiwać się ssh-copy-id

STRESZCZENIE

ssh-copy-id [-i [plik_tożsamości]] [użytkownik @] maszyna

OPIS

ssh-copy-id to skrypt, który używa ssh do zalogowania się na zdalnym komputerze i dołączenia wskazanego pliku tożsamości do pliku ~ / .ssh / Author_keys tego komputera.

Mu Qiao
źródło
1
@ Chcę zrobić ssh z H2 do S1. Chcę przenieść i zainstalować mój prywatny i publiczny klucz z H1 do H2. Czy to zrobi?
Bruce
3
@Bruce nie, musisz ponownie wygenerować klucze na h2 i użyć tego polecenia, aby skopiować klucze. Innym podejściem jest udostępnianie katalogu domowego h1 i h2.
Mu Qiao,
9

Użyj dwóch kluczy prywatnych

Skonfiguruj H2 przy użyciu tego samego procesu (ale nie tego samego klucza prywatnego), co podczas konfigurowania H1:

  • Nigdy nie ma dobrego powodu, aby skopiować klucz prywatny z innego komputera. Jeśli jeszcze nie wygenerowałeś nowego klucza prywatnego na H2, zrób to teraz. Wygeneruj również odpowiedni klucz publiczny. W terminalu na H2

rodzaj: ssh-keygen -t rsa

  • Skopiuj klucz publiczny H2 na serwer. W terminalu na H2

rodzaj: ssh-copy-id [email protected]

(ale użyj swojej rzeczywistej nazwy użytkownika na S1 i nazwie hosta S1, a następnie wpisz swoje hasło na S1, gdy o to poprosi).

Spowoduje to zainstalowanie klucza publicznego stacji roboczej w ~/.ssh/authorized_keyspliku dla tego użytkownika na serwerze.

  • Nie ma kroku 3. Od teraz możesz zalogować się do S1 z poziomu H2, a także zalogować się do S1 z poziomu H1.

Detale

Zakładam, że tak naprawdę pytasz

  • Mam serwer („S1”)
  • Loguję się na mój serwer z mojego osobistego laptopa („H1”)
  • Chcę również zalogować się do mojego serwera ze stacji roboczej („H2”).

Jak to zrobić?

  • Podejrzewam, że mógłbym po prostu zalogować się przy użyciu tego samego hasła z obu miejsc. To nie może być właściwy sposób, ponieważ wszyscy twierdzą, że uwierzytelnianie za pomocą klucza publicznego jest znacznie lepsze niż hasła. (za)
  • Przypuszczam, że mógłbym po prostu skopiować klucz prywatny z laptopa na stację roboczą. To nie może być właściwy sposób, ponieważ wszyscy mówią, że klucz prywatny nigdy nie powinien opuszczać komputera klienta.

Ludzie wbijali sobie w głowę, że jedno konto na serwerze ma jedną nazwę użytkownika i, oczywiście, jedno autoryzowane hasło.

Systemy klucza publicznego, takie jak ssh, są lepsze niż system haseł: jedno konto na serwerze ma jedną nazwę użytkownika i dowolną liczbę autoryzowanych kluczy publicznych , wszystkie wymienione w ~/.ssh/authorized_keyspliku.

( więcej szczegółów ).

David Cary
źródło
Wybacz mi, że się powtarzam .
David Cary
0

Czy ssh-copy-id wykona za ciebie zadanie: http://linux.die.net/man/1/ssh-copy-id ?

Alex Wilson
źródło
@ Chcę zrobić ssh z H2 do S1. Chcę przenieść i zainstalować mój prywatny i publiczny klucz z H1 do H2. Czy to zrobi?
Bruce
2
Jeśli jesteś zalogowany do S1 lub H1 (które teraz mają twój klucz), używając ssh-copy-id pozwoli ci przenieść swój klucz publiczny (nie prywatny) do H2. Ogólnie najlepiej jest ograniczyć liczbę komputerów, na których zainstalowany jest klucz prywatny. Staraj się trzymać go na kilku bezpiecznych komputerach, aby zapobiec jego utracie.
Jak skopiować mój klucz prywatny do H2?
Bruce
0

Do przenoszenia kluczy SSH z jednego komputera na drugi. Wystarczy skopiować cały folder z ~ / .ssh z H1 (stary komputer) do folderu zawartości ~ / .ssh nowego komputera H2.

Spróbuj teraz:

ssh [email protected] (twój S1 ip)

Najprawdopodobniej otrzymasz ostrzeżenie o uprawnieniu, aby naprawić to uruchomienie:

chmod 400 ~ / .ssh / id_rsa

Teraz znowu:

ssh [email protected] (twój S1 ip)

Teraz będzie działać dobrze.

shaurya uppal
źródło