Bagaimana mengkonversi keypairs SSH yang dihasilkan menggunakan PuTTYgen (Windows) menjadi pasangan kunci yang digunakan oleh ssh-agent dan Keychain (Linux)

464

Saya telah membuat pasangan kunci menggunakan PuTTYgen dan telah masuk menggunakan Pageant, sehingga saya harus memasukkan frasa sandi saya hanya sekali ketika sistem saya boot.

Bagaimana saya mencapai ini di Linux? Saya pernah mendengar keychaintetapi saya mendengar bahwa ia menggunakan format pasangan kunci yang berbeda - Saya tidak ingin mengubah kunci Windows saya dan akan lebih baik jika saya dapat terhubung dengan mulus dengan cara yang sama di Windows dan Linux.

TCSGrad
sumber
Seharusnya tidak ada masalah menggunakan kunci di linux juga ... cukup salin mereka dan tambahkan pub ke kunci resmi ... meskipun diakui saya tidak sepenuhnya mengerti pertanyaan Anda.
Randall Hunt
17
Tidak, ada - Saya tahu ini banyak bahwa format kunci yang digunakan oleh PuttyGen dan ssh-agent berbeda, dan mereka harus dikonversi secara eksplisit - lihat jawaban terperinci Kaleb di bawah ini.
TCSGrad

Jawaban:

714

puttygenmendukung mengekspor kunci pribadi Anda ke format OpenSSH yang kompatibel. Anda kemudian dapat menggunakan alat OpenSSH untuk membuat ulang kunci publik.

  1. Buka PuttyGen
  2. Klik Muat
  3. Muat kunci pribadi Anda
  4. Buka Conversions->Export OpenSSHdan ekspor kunci pribadi Anda
  5. Salin kunci pribadi Anda ke ~/.ssh/id_dsa(atau id_rsa).
  6. Buat versi RFC 4716 menggunakan kunci publik ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. Konversi versi RFC 4716 dari kunci publik ke format OpenSSH:

    ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub
    

Lihat ini dan ini untuk informasi lebih lanjut.

Kaleb Pederson
sumber
12
Bagi mereka yang mendapatkan It is required that your private key files are NOT accessible by otherskesalahan seperti saya telah menjalankan cd ~/.sshdanchmod 700 id_rsa
ahli
77
Maksud Anda chmod 600 id_rsa . File tidak perlu dapat dieksekusi. :)
sig11
2
Jawaban ini adalah kunci untuk mendapatkan ssh dari baris perintah windows menggunakan kunci tanpa kata sandi untuk saya (khusus untuk akses git). Akan menyelamatkan saya berjam - jam kesakitan jika saya melihatnya sebelumnya! Terima kasih!
cori
2
Bisakah puttygen dieksekusi dari CLI?
CMCDragonkai
20
Saya berasumsi ini adalah sesuatu yang baru, tetapi jika Anda membuka kunci pribadi Anda di puttygen, maka secara otomatis akan menunjukkan kepada Anda sebuah string kunci publik yang kompatibel, dapat disalin, dan kompatibel dengan OpenSSH di UI.
UpTheCreek
161

Jika yang Anda miliki adalah kunci publik dari pengguna dalam format gaya Putty, Anda dapat mengubahnya menjadi format openssh standar seperti:

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Referensi

Salinan artikel

Saya selalu lupa ini jadi saya akan menulisnya di sini. Non-geeks, terus berjalan.

Cara paling umum untuk membuat kunci di Windows adalah menggunakan Putty / Puttygen. Puttygen menyediakan utilitas yang rapi untuk mengonversi kunci pribadi linux ke format Putty. Namun, yang tidak diatasi adalah ketika Anda menyimpan kunci publik menggunakan puttygen, itu tidak akan berfungsi pada server linux. Windows menempatkan beberapa data di area yang berbeda dan menambahkan jeda baris.

Solusinya: Saat Anda membuka layar kunci publik dalam membuat pasangan kunci Anda di puttygen, salin kunci publik dan tempelkan ke file teks dengan ekstensi .pub. Anda akan menghemat banyak sysadmin dari frustrasi membaca posting seperti ini.

NAMUN, sysadmin, Anda selalu mendapatkan file kunci yang tidak dapat membuang pesan kesalahan dalam auth log kecuali, tidak ada kunci yang ditemukan, mencoba kata sandi; meskipun kunci orang lain berfungsi dengan baik, dan Anda telah mengirim kunci ini kembali ke pengguna sebanyak 15 kali.

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Harus mengkonversi kunci publik puttygen yang ada ke format OpenSSH.

bukzor
sumber
2
Juga, Anda mungkin ingin menyalin komentar pengguna dari Comment:baris dan menempelkannya pada baris yang sama dengan kunci baru, dipisahkan dengan spasi. Saya tidak tahu mengapa ssh-keygen tidak akan melakukan ini secara default.
Tobia
2
Ini memberi saya kesalahan:decode blob failed: invalid format
Chris Stryczynski
Jika Anda membaca artikel asli, detail kuncinya adalah bahwa pendekatan ini hanya berfungsi jika Anda menyalin kunci dari puttygen ketika melalui UI-nya, itu tidak akan mengonversi kunci yang sudah dibuat dari file yang dihasilkan oleh puttygen.
slm
Bisakah saya menggunakan alat yang sama untuk mengubahnya dengan cara lain?
Olle Härstedt
ya, sepertinya Anda sedang melihat: ssh-keygen -e -f openssh_key.pub> putty.pub
Erik
148

Versi PuTTYgen yang lebih baru (milik saya adalah 0,64) dapat menunjukkan kunci publik OpenSSH yang akan ditempelkan di sistem linux dalam .ssh/authorized_keysfile, seperti yang ditunjukkan pada gambar berikut:

masukkan deskripsi gambar di sini

Zac
sumber
7
Jawaban ini mencakup cara mengatur otentikasi kunci pada remote yang menggunakan format OpenSSH. Tetapi untuk menggunakan kunci yang dihasilkan Putty pada klien Linux , jawaban ini tidak cukup. Saya mengikuti jawaban yang diterima dan itu bekerja dengan baik.
wberry
52

Atau jika Anda ingin mengambil kunci pribadi dan publik dari file kunci yang diformulasikan Putty Anda dapat menggunakan puttygenpada sistem * nix. Untuk sebagian besar sistem berbasis apt puttygenadalah bagian dari putty-toolspaket.

Mengeluarkan kunci pribadi dari keyfile yang diformat Putty:

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

Untuk kunci publik:

$ puttygen keyfile.pem -L

John Jawed
sumber
Jika karena alasan tertentu Anda HARUS melakukan ini pada kotak Windows (tidak dapat dengan aman mentransfer semua kunci ke * nix) dan memiliki begitu banyak kunci menggunakan GUI yang rumit, coba kompilasi sumber Unix di bawah Cygwin. Puttygen.exe itu akan memberi Anda "mode batch" CLI seperti yang dijelaskan di atas.
Toddius Zho
2
OSX:brew install putty
Juha Palomäki
1
Itu harus dibalik: puttygen inppk -O private-openssh -o outpemdan puttygen inppk -L(atau ssh-keygen -y -f outpem)
dave_thompson_085
27
sudo apt-get install putty

Ini secara otomatis akan menginstal alat puttygen.

Sekarang untuk mengonversi file PPK untuk digunakan dengan perintah SSH, jalankan perintah berikut di terminal

puttygen mykey.ppk -O private-openssh -o my-openssh-key

Kemudian, Anda dapat terhubung melalui SSH dengan:

ssh -v [email protected] -i my-openssh-key

http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-28603

Purnendu Singh
sumber
Ini tidak benar-benar menunjukkan lebih dari, apa yang sudah ada dalam jawaban oleh @John Jawed
Martin Prikryl
Argumen menjelaskan apa yang mereka wakili. +1
danronmoon
BAGUS! Ini bekerja. Selain itu, untuk menginstal dempul pada Macos: buatan pasang dempul
Dylan B
14

Baru-baru ini saya mengalami masalah ini karena saya pindah dari Putty untuk Linux ke Remmina untuk Linux. Jadi saya punya banyak file PPK untuk Putty di .puttydirektori saya karena saya sudah menggunakannya selama 8 tahun. Untuk ini saya menggunakan forperintah sederhana untuk bash shell untuk melakukan semua file:

cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;

Sangat cepat dan to the point, menyelesaikan pekerjaan untuk semua file yang dempul miliki. Jika ia menemukan kunci dengan kata sandi, ia akan berhenti dan meminta kata sandi untuk kunci itu terlebih dahulu dan kemudian melanjutkan.

jfreak53
sumber
2
Untuk ppl yang malas seperti saya, ini adalah salin-tempel untuk mendapatkan puttygen di ubuntu: sudo apt-get install putty-tools
Lennart Rolland
"sederhana" - Aku benci melihat rumit!
Alex Jansen
8

Mungkin lebih mudah untuk membuat kunci Anda di linux dan menggunakan PuTTYgen untuk mengkonversi kunci ke format Putty.

Faq Putty: A.2.2

Bradley Kreider
sumber
14
Sayangnya itu bukan pilihan jika Anda memiliki kunci yang ada yang harus Anda gunakan.
ahli
6

Saya pikir apa yang TCSgrad coba tanyakan (beberapa tahun yang lalu) adalah bagaimana membuat Linux berperilaku seperti mesin Windows-nya. Artinya, ada agen (kontes) yang menyimpan salinan kunci pribadi yang didekripsi sehingga frasa sandi hanya perlu dimasukkan sekali. Kemudian, klien ssh, dempul, dapat masuk ke mesin di mana kunci publiknya terdaftar sebagai "resmi" tanpa prompt kata sandi.

Analog untuk ini adalah bahwa Linux, bertindak sebagai klien ssh , memiliki agen yang memegang kunci privat yang didekripsi sehingga ketika TCSgrad mengetik "ssh host" perintah ssh akan mendapatkan kunci pribadinya dan pergi tanpa diminta kata sandi. host tentu saja harus memegang kunci publik di ~ / .ssh / berwenang_kunci.

Analog Linux untuk skenario ini dilakukan dengan menggunakan ssh-agent (analog pageant) dan ssh-add (analog untuk menambahkan kunci pribadi ke pageant).

Metode yang berhasil bagi saya adalah menggunakan: $ ssh-agent $ SHELL Itu $ SHELL adalah trik sulap yang saya butuhkan untuk membuat agen berjalan dan tetap berjalan. Saya menemukan bahwa di suatu tempat di internet dan itu berakhir beberapa jam memukuli kepala saya ke dinding.

Sekarang kita memiliki analog kontes berjalan, agen tanpa kunci dimuat.

Mengetik $ ssh-add dengan sendirinya akan menambahkan (secara default) kunci pribadi yang tercantum dalam file identitas default di ~ / .ssh.

Artikel web dengan lebih banyak detail dapat ditemukan di sini

kovacsbv
sumber
0

PPK → OpenSSH RSA dengan PuttyGen & Docker.

Kunci pribadi:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key

Kunci publik:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub

Lihat juga https://hub.docker.com/r/zinuzoid/puttygen

Uriy MerkUriy
sumber