Jak uzyskać klucz publiczny z klucza prywatnego SSH?

444

Wygenerowany przez klucz prywatny SSH ssh-keygenzawiera część klucza publicznego. Jak odzyskać ten klucz publiczny z klucza prywatnego? Zgubiłem swój klucz publiczny i muszę umieścić zawartość tego klucza publicznego w authorized_keyspliku serwerów i nie chcę tworzyć nowej pary kluczy.

Alternatywnie: jak utworzyć id_rsa.pubplik z id_rsapliku?

Lekensteyn
źródło
pbcopy > ~/.ssh/id_rsa.pubups.
Nick T
@NickT - pbcopy to komenda MacOSX. Ponadto jest to bezużyteczne, jeśli uruchomiłeś ponownie komputer, wylogowałeś się lub skopiowałeś coś innego do schowka.
jsnfwlr

Odpowiedzi:

681

Znalazłem odpowiedź na temat błędu serwera: utworzyć publiczny klucz SSH z klucza prywatnego?

Opcja -ygeneruje klucz publiczny:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Na marginesie, komentarz klucza publicznego został utracony. Mam witrynę, która wymagała komentarza (Launchpad?), Więc musisz edytować ~/.ssh/id_rsa.pubi dołączyć komentarz do pierwszego wiersza ze spacją między komentarzem a kluczowymi danymi. Przykładowy klucz publiczny pokazano poniżej.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

W przypadku kluczy, które zostały dodane do agenta SSH (program, który działa w tle i unika potrzeby ponownego wprowadzania hasła pliku ssh-add -Lkluczy w kółko), możesz użyć polecenia, aby wyświetlić listę kluczy publicznych dla kluczy, które zostały dodane do agent (przez ssh-add -l). Jest to przydatne, gdy klucz SSH jest przechowywany na karcie inteligentnej (a dostęp do pliku klucza prywatnego nie jest możliwy).

Lekensteyn
źródło
1
Pamiętaj, że plik klucza prywatnego ~/.ssh/id_rsamusi być ograniczony do Twojej nazwy użytkownika. użyj $ sudo chmod 600 ~/.ssh/id_rsai wprowadź swoje poświadczenia root, aby je ograniczyć, a następnie możesz wydrukować plik klucza publicznego. W przeciwnym razie otrzymasz nieograniczone ostrzeżenie o pliku klucza prywatnego.
Mark Mikofski,
12
@MarkMikofski Nie musisz sudo, musisz już posiadać klucz prywatny. W przeciwnym razie nie możesz go przeczytać w pierwszej kolejności.
Lekensteyn,
7
@Lekensteyn dzięki, oczywiście masz rację! 400Jest również zalecane, ponieważ nie trzeba pisać, aby wpisać plik klucza prywatnego. Poprawione polecenie powinno brzmieć$ chmod 400 ~/.ssh/id_rsa
Mark Mikofski,
Komentarz klucza prywatnego został utracony. Zobacz stackoverflow.com/questions/38290929/…
weberjn
1
@weberjn Klucz prywatny ( id_rsaplik) nie ma komentarza, ale rzeczywiście komentarz w pliku klucza publicznego ( id_rsa.pub) został utracony.
Lekensteyn
14

To rozwiązanie jest przeznaczone specjalnie dla użytkowników korzystających z systemu Windows do SSH na swoich zdalnych komputerach, w tym obrazów w chmurze na Amazon AWS i GCE.

(Zrzeczenie się)

Ostatnio użyłem tego rozwiązania do zdalnego logowania do nowych wdrożonych obrazów maszyn wirtualnych na GCE.


Narzędzia użyte:

  1. puttygen
  2. WinSCP

Kroki do wykonania:

  1. Wygeneruj parę kluczy publiczny / prywatny za pomocą puttygen.
  2. Prześlij klucz publiczny na swój serwer w chmurze lub w zdalnej lokalizacji.

Opis (jak to zrobić):

  1. Wygeneruj klucz / parę lub użyj istniejącego klucza prywatnego:

    Jeśli masz klucz prywatny:

    Otwórz puttygen, naciśnij przycisk ładowania i wybierz plik klucza prywatnego (* .pem).

    Jeśli nie masz klucza prywatnego:

    • Open puttygen,
    • Wybierz żądany typ klucza SSH2 DSA (możesz użyć RSA lub DSA) w sekcji Parametry ... ważne jest, aby pozostawić puste pole hasła,
    • Naciśnij przycisk generuj i postępuj zgodnie z instrukcjami, aby wygenerować parę kluczy (publiczny / prywatny).

    Przykładowa generacja klucza pic

  2. Utwórz nowy plik „klucze autoryzowane” (w Notatniku):

    Skopiuj dane klucza publicznego z sekcji „Klucz publiczny do wklejenia do pliku kluczy autoryzowanych OpenSSH” generatora kluczy PuTTY i wklej dane klucza do pliku „kluczy autoryzowanych”.

    Upewnij się, że w tym pliku jest tylko jeden wiersz tekstu.

  3. Prześlij klucz na serwer Linux:

    • Otwórz WinSCP,
    • Wybierz protokół pliku SFTP i zaloguj się przy użyciu poświadczeń SSH.
    • Po sukcesie zobaczysz strukturę katalogu domowego na zdalnym komputerze.

    Prześlij plik autoryzowanych_kluczy do katalogu domowego na zdalnym komputerze.

  4. Ustaw odpowiednie uprawnienia:

    Utwórz .sshkatalog (jeśli nie istnieje)

    Skopiuj authorized_keysplik do katalogu .ssh (spowoduje to zastąpienie dowolnego istniejącego authorized_keyspliku; zwróć uwagę na to).

    Jeśli plik istnieje, po prostu dodaj zawartość tego pliku do istniejącego pliku.

    Uruchom polecenia, aby ustawić uprawnienia:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Teraz będziesz mógł ssh na zdalnym komputerze bez konieczności wprowadzania poświadczeń za każdym razem.

Dalsza lektura:

  1. Generowanie i przesyłanie kluczy SSH w systemie Windows

  2. Uwierzytelnianie bez hasła przy użyciu klucza OpenSSH, certyfikatów .pem i .pub

devprashant
źródło
Jeśli Twój katalog domowy jest zakodowany, zrób to: askubuntu.com/questions/439184/…
devprashant
2
chociaż twoja odpowiedź nie jest tak naprawdę istotna dla pytania, głosuję za nią z powodu twojego entuzjazmu.
Truong Nguyen,