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 ?

marioosh
źródło

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
Stanley Williams
źródło
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

jous
źródło
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

Bar Horing
źródło
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
czerasz
źródło
1
świetny. dzięki za zdjęcie! tymczasem jego --volume=/path/to/file.ppk:/tmp/id.ppki nieid_dsa.ppk
pHiL