Jak zainstalować klucz prywatny SSH generowany przez PuTTYgen?

50

Skonfigurowałem mój serwer Linux, aby akceptował połączenia z mojego domowego komputera, dodając do authorized_keyspliku klucz publiczny wygenerowany przez PuTTYgen .

Teraz próbuję połączyć się z tym samym komputerem, ale tym razem z innego komputera z systemem Ubuntu. Muszę użyć tego samego klucza prywatnego (z dziwnego powodu, nie pytaj ...) i nie bardzo rozumiem, jak zainstalować go na moim kliencie Ubuntu.

Czy muszę przekonwertować go na inny format?

Assaf Lavie
źródło

Odpowiedzi:

25

Nie jestem pewien, czy Twój klucz prywatny będzie działał w Ubuntu, ale warto spróbować. wystarczy skopiować klucze, aby /home/yourName/.ssh/nazwać klucz prywatny jako id_rsai klucz publiczny jako id_rsa.pub.

Jeśli to nie działa, możesz utworzyć własną parę kluczy ssh za pomocą ssh-keygeni skopiować nowy klucz publiczny na serwer, a następnie ssh w następujący sposób

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Nie grałem z tym, ale słyszę, że ssh-agent może być również używany do zarządzania kluczami ssh.

theTuxRacer
źródło
3
Działa to w Ubuntu. Pamiętaj jednak, aby nie nadpisywać istniejącego klucza id_rsa, jeśli już go masz (kopiując nowy klucz na nim), chyba że wiesz, że nie używasz starego.
David Oneill
5
W tej odpowiedzi całkowicie brakuje informacji, jak uzyskać id_rsaplik (poprzez konwersję klucza w PuTTYgen)
Martin Prikryl
38

Zbiegiem okoliczności po prostu musiałem to zrobić. Musisz przekonwertować klucze do formatu OpenSSH. Polecenie to:

ssh-keygen -i -f puttygen_key > openssh_key

następnie możesz skopiować zawartość openssh_keydo .ssh/authorized_keystak, jak w przypadku zwykłego klucza SSH.

Ta -iopcja mówi ssh-keygeno konwersji. Ta -fopcja informuje, gdzie znaleźć klucz do konwersji.

Działa to w przypadku niezaszyfrowanych kluczy. Klucz publiczny jest niezaszyfrowany, ale prywatny prawdopodobnie jest zaszyfrowany. Nie jestem pewien, czy istnieje sposób na odszyfrowanie klucza prywatnego, jego konwersję, a następnie ponowne zaszyfrowanie. Może być łatwiej używać nowych kluczy, jak sugeruje druga odpowiedź (i zaleciłbym użycie, ssh-agentchociaż jest to ortogonalne w stosunku do bieżącego problemu).

Loop Space
źródło
1
Ta odpowiedź rozwiązuje mój problem. Musiałem przekonwertować klucz. Dzięki
leticia
1
To rozwiązuje tylko część problemu poprzez konwersję klucza publicznego. Użyłem odpowiedzi @ user18617 również do konwersji klucza prywatnego.
ᴠɪɴᴄᴇɴᴛ
3
próbowałem tego, nie działało (błąd uudecode failed), należy wykonać następujące kroki Jak przekonwertować pary kluczy SSH wygenerowane za pomocą PuttyGen (Windows) na pary kluczy używane przez ssh-agent i KeyChain (Linux)
Lopez
@ ÉdouardLopez puttygen_keypowinien być Twoim kluczem publicznym, a nie kluczem prywatnym (* .ppk).
endolith
28

Andrew Stacey wyjaśnił, jak przekonwertować klucze do formatu OpenSSH w systemie Linux.

Jeśli chcesz zrobić to samo w systemie Windows, wykonaj następujące kroki:

  1. Uruchom PuTTYGen.
  2. Kliknij „Załaduj”.
  3. Wybierz swój klucz prywatny i wprowadź hasło.
  4. Z menu „Konwersje” wybierz „Eksportuj klucz OpenSSH”.
  5. Wybierz docelową nazwę pliku.
hheimbuerger
źródło
1
Chciałem tylko powiedzieć, że to działało dla mnie na moim Mac OS X, chociaż wiem, że jest to sekcja Ubuntu. Przekształciłem wygenerowany klucz prywatny w systemie Windows zgodnie z powyższym opisem, a następnie skopiowałem go na komputerze Mac do ~ / .ssh / id_rsa. chmod id_rsa 600, aby Mac nie narzekał na to.
Richard
24

Jak ponownie użyć par kluczy Putty w systemie Ubuntu jako kluczy OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Ponieważ celem kroku 4 jest dodanie twojego klucza publicznego do * ~. / Ssh / Author_keys *, więc możesz użyć swojego tajnego klucza Putty w ten sposób zamiast robić 4 jako krok pośredni:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys
użytkownik18617
źródło
1
o kroku 4: jeśli nazwa klucza prywatnego to mykey-sec.ppk, w tym przypadku nazwą pliku źródłowego będzie zazwyczaj mykey-sec.pub.
Kinjal Dixit,
2
Nazywanie klucza publicznego (prawdopodobnie w formacie RFC 4716) mykey-pub.ppkjest dość mylące, ponieważ .ppkplik ma zupełnie inny format i jest używany do par kluczy (nie tylko klucza publicznego).
Martin Prikryl
Ta ostatnia linia puttygen działała dla mnie idealnie po zainstalowaniu putty-tools na Debianie 9. Pozostałe linie i odpowiedzi tutaj nie działały.
Tim
Dziwnie byłem coraz puttygen: unknown output type `private‐openssh'a puttygen: cannot handle more than one input filewięc skopiowałem dokładnie znaków z kodu źródłowego i przemianowany na mój klucz publiczny do czegoś zupełnie innego
CPHPython
jako heads up, jeśli spróbujesz uruchomić polecenia w tej odpowiedzi i uzyskać „puttygen: nie może obsłużyć więcej niż jednego pliku wejściowego”, prawdopodobnie jest tak, ponieważ znak myślnika w „private-openssh” nie jest wklejony jako rzeczywisty myślnik ASCII więc puttygen tego nie rozpoznaje. Zamiast tego sam wpisz słowo, które powinno zadziałać.
Matt Styles
9

PuTTY / PuTTYgen używa własnego zastrzeżonego formatu pary kluczy. Nie działa w systemie Linux, w którym dominuje format kluczy OpenSSH.

  • W PuTTYgen możesz bezpośrednio zobaczyć (i skopiować + wkleić) klucz publiczny w formacie używanym przez authorized_keysplik OpenSSH .

  • Możesz użyć przycisku Zapisz klucz publiczny, aby zapisać klucz publiczny w .pubformacie (RFC 4716). W systemie Linux plik zwykle ma nazwę id_rsa.pub(lub id_dsa.pub). Ale to zwykle nie jest potrzebne.

  • Użyj Konwersje> Eksportuj klucz OpenSSH, aby wyeksportować klucz prywatny w formacie OpenSSH. W systemie Linux plik ma zwykle nazwę id_rsa(lub id_dsa) i jest przechowywany w .sshfolderze.

Zobacz oficjalny Korzystanie z PuTTYgen, generatora kluczy PuTTY .

Do konwersji można również użyć Linuksowej wersji PuTTYgen. Wersja systemu Linux jest wierszem poleceń, w przeciwieństwie do wersji systemu Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Zobacz puttygenstronę podręcznika systemu Linux .

Martin Prikryl
źródło
2

Znalazłem jeszcze jedno jasne rozwiązanie.

Po puttygenutworzeniu klucza przejdź do górnego menu - Konwersja i kliknij eksportuj klucz openssh

Zawartość pliku zaczyna się i kończy

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • dla użytkownika root Skopiuj ten plik klucza /root/.ssh/jako id_rsalubid_dsa

  • dla innego użytkownika Skopiuj ten plik klucza /home/user/.ssh/jako id_rsalubid_dsa

Uwaga :

  1. Nie trzeba edytować authorized_keys.
  2. Korzystam z Amazon Linux
  3. Zezwolenie na plik 0600
P-Kumar
źródło
1

* * Zachowaj ostrożność i upewnij się, że masz dostęp do konsoli przez konsolę, ponieważ jeśli nie zrobisz tego poprawnie, nie będziesz w stanie ponownie zalogować się do ssh, dopóki nie naprawisz go z konsoli.

Proces jest znacznie łatwiejszy niż myślisz. Załaduj ponownie parę kluczy publiczny / prywatny wygenerowaną w puttygen. W puttygen na środku ekranu zobaczysz okno z napisem: „Klucz publiczny do wklejenia do pliku Open SSH autoryzowanego_kluczy:”.

podświetl całą zawartość skrzynki i naciśnij control-c, aby ją skopiować.

SSH w polu linux i wklej go do pliku „/home/username/.ssh/authorized_keys”. Wolę używać nano i wystarczy kliknąć prawym przyciskiem myszy, aby go wkleić. Upewnij się, że wszystko pozostaje w jednej linii.

Zmodyfikuj plik / etc / sshd_config w razie potrzeby i zrestartuj usługę sshd: „service ssh restart”

Jeśli potrzebujesz przykładowego pliku sshd_config, daj mi znać, a ja mogę wysłać mój.

Zrobiłem to na serwerze LTS Ubuntu 8.04, 10.04 i 12.04 i działa to płynnie.

ErnestA
źródło
0

Nie jestem pewien, czy ten wątek jest nadal aktywny, ale natknąłem się na podobny problem z rocznicową edycją systemu Windows 10, która teraz obsługuje jądro Ubuntu. Używam wcześniej Putty do łączenia się z maszyną z systemem Linux. Aby wygenerować id_rsa w formacie linux, użyj puttykeygen i załaduj swój prywatny klucz putty, a następnie kliknij konwersję i wybierz drugą opcję.

Konwersje Putty KeyGenerator

otwórz nowo wygenerowany plik klucza i skopiuj całą jego zawartość, upewnij się, że treść zaczyna się od: ----- ROZPOCZNIJ KLUCZ PRYWATNY RSA ----- i kończy się na ----- KONIEC KLUCZ PRYWATNY RSA -----

vi id_rsa w katalogu ~ / .ssh i wklej skopiowaną zawartość, jest to wymagane, ponieważ linux inaczej nie zrozumie zawartości pliku.

To wszystko, spróbuj ssh na zdalnym serwerze, powinien działać.

binish
źródło