Jak przekonwertować klucz .ppk na klucz OpenSSH w systemie Linux?


188

Wiem, że można przekonwertować plik .ppk pod puttygen w systemie Windows, ale jak to zrobić w systemie Linux? Czy to możliwe ?

Odpowiedzi:


275

Zrób to z Putty.

  • Linux: za pomocą menedżera pakietów zainstaluj PuTTY (lub bardziej minimalne narzędzia PuTTY):

    • Ubuntu sudo apt-get install putty-tools
    • Podobny do Debiana apt-get install putty-tools
    • Na podstawie RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • itp.
  • OS X: Zainstaluj Homebrew , a następnie uruchombrew install putty

Umieść klucze w jakimś katalogu, np. W folderze domowym. Teraz przekonwertuj klucze PPK na pary kluczy SSH: wyszukiwanie pamięci podręcznej

Aby wygenerować klucz prywatny :

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

i aby wygenerować klucz publiczny :

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Przenieś te klucze do ~/.sshi upewnij się, że uprawnienia są ustawione na prywatny dla twojego klucza prywatnego:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Jeśli już próbowałeś wykonać operację „ klonowania git ”, być może będziesz musiał to zrobić

chmod 666 ~/.ssh/known_hosts

cześć, mam już plik .pub, więc trzeba ponownie utworzyć klucz publiczny
— Amit Bera,

1
Jeśli przyszedłeś tutaj, aby dowiedzieć się, jak to zrobić w systemie Windows, uruchom „puttygen yourkey.ppk”, a następnie w menu Konwersje wybierz „Eksportuj klucz OpenSSH”, aby uzyskać klucz prywatny.
— Ryan Shillington

1
rozwiązanie @jous jest o wiele ładniejsze, ponieważ nie potrzebujesz klucza prywatnego do konwersji klucza publicznego + nie musisz instalować szpachli
— Tobi

Musiałem dodać ten klucz do mojego ./ssh/configpliku Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
— vladkras,

Niektóre formaty krzywych eliptycznych (ECDS itp.) Są jeszcze dostępne tylko w narzędziach do betonów.
— Daniel W.

39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i Flaga jest importowana z formatu innego niż openssh
  • -f Flaga oznacza odczyt z pliku wejściowego

Źródło: a blogpost na burnz.wordpress.com


17
Pliki .ppk to pełne pary kluczy, nie sądzę, aby powyższe polecenie lub post na blogu dotyczyły tego.
— Peter Becker

2
Myślę, że miałem na myśli, że to działa, jeśli użyjesz przycisku „Zapisz klucz publiczny” puttygen. ssh-keygen nie rozumie prawdziwych plików .ppk, ponieważ brakuje im znaczników „---- BEGIN SSH2 PUBLIC KEY ----”. Klucz publiczny można znaleźć w pliku .ppk między wierszami „Linie publiczne: ..” i „Linie prywatne: ..”.
— jous

1
Działa to dla mnie z plikiem klucza publicznego - puttygen wydaje się wymagać klucza prywatnego. wygląda na to, że wszystko, co zrobiła, to przestawienie części base-64 na jedną linię
— Jasen

2
Nie wydaje się, aby obejmowało to klucze prywatne, dlatego chciałbym przeprowadzić konwersję, mam już gdzieś zapisany klucz publiczny ...
— Gert van den Berg

Tak, pliki ppk, które widziałem, miały odpowiednie znaczniki, a to zadziałało dobrze .
— tylerl

5

Uzyskaj klucz prywatny:

otwórz plik .ppk w puttygen:

puttygen ~/.ssh/id_dsa.ppk

eksportuj jako openssh:

Konwersje → Eksportuj klucz OpenSSH

Uzyskaj klucz publiczny:

otwarty jak przed kluczem prywatnym z puttygen, klucz publiczny znajduje się pod kluczem publicznym do wklejenia do pliku autoryzowanych kluczy OpenSSH


4

Przygotowałem pojemnik Docker, aby ułatwić życie:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Gdzie:

  • /path/to/file.ppk - lokalna ścieżka do pliku ppk
  • /path/to/output - lokalna ścieżka do miejsca, w którym należy umieścić klucz prywatny i publiczny

1
świetny. dzięki za zdjęcie! tymczasem jego --volume=/path/to/file.ppk:/tmp/id.ppki nieid_dsa.ppk
— pHiL
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.