Bagaimana cara mengubah kunci .ppk ke kunci OpenSSH di Linux?

188

Saya tahu itu mungkin untuk mengkonversi .ppk di bawah puttygen di Windows, tetapi bagaimana melakukannya di Linux? Apakah ini mungkin?

marioosh
sumber

Jawaban:

275

Lakukan dengan Putty.

  • Linux: dengan manajer paket Anda, instal Putty (atau tool Putty lebih minimal):

    • Ubuntu sudo apt-get install putty-tools
    • Seperti-Debian apt-get install putty-tools
    • Berbasis RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • dll.
  • OS X: Instal Homebrew , lalu jalankanbrew install putty

Tempatkan kunci Anda di beberapa direktori, misalnya folder rumah Anda. Sekarang konversi kunci PPK ke keypairs SSH: pencarian cache

Untuk menghasilkan kunci pribadi :

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

dan untuk menghasilkan kunci publik :

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

Pindahkan kunci-kunci ini ke ~/.sshdan pastikan izin diatur ke pribadi untuk kunci pribadi Anda:

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

Jika Anda sudah mencoba melakukan operasi ' git clone ' Anda mungkin perlu melakukan ini juga

chmod 666 ~/.ssh/known_hosts
Stanley Williams
sumber
hai saya sudah punya .pub maka perlu membuat kunci publik lagi
Amit Bera
1
Jika Anda datang ke sini mencari cara melakukannya di windows, jalankan "puttygen yourkey.ppk", dan kemudian di bawah menu Konversi pilih "Ekspor kunci OpenSSH" untuk mendapatkan kunci pribadi.
Ryan Shillington
1
solusi dari @jous jauh lebih baik karena Anda tidak perlu kunci pribadi untuk mengonversi kunci publik + Anda tidak perlu menginstal dempul
Tobi
Saya harus menambahkan kunci ini ke ./ssh/configfile sayaHost mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras
Beberapa format kurva elips (ECDS dll) hanya tersedia di alat beta putty.
Daniel W.
39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i bendera diimpor dari selain format openssh
  • -f flag berarti membaca dari file input

Sumber: posting blog di burnz.wordpress.com

jous
sumber
17
File .ppk adalah pasangan kunci lengkap, saya tidak berpikir perintah di atas atau posting blog berlaku untuk itu.
Peter Becker
2
Saya pikir maksud saya itu berfungsi jika Anda menggunakan tombol "Simpan kunci publik" puttygen. ssh-keygen tidak mengerti benar file .ppk karena mereka tidak memiliki penanda '---- BEGIN SSH2 PUBLIC KEY ----'. Anda dapat menemukan kunci publik di file .ppk di antara baris "Public-Lines: .." dan "Private-Lines: ..".
jous
1
Ini bekerja untuk saya dengan file kunci publik - puttygen tampaknya memerlukan kunci pribadi. sepertinya yang dilakukannya hanyalah mengatur ulang bagian base-64 menjadi satu baris
Jasen
2
Ini sepertinya tidak mencakup kunci privat, itulah sebabnya saya ingin melakukan konversi, saya sudah memiliki kunci publik yang disimpan di suatu tempat ...
Gert van den Berg
Ya, file ppk yang saya lihat memiliki spidol yang sesuai, dan ini berfungsi dengan baik .
tylerl
5

Dapatkan kunci pribadi:

buka file .ppk di puttygen:

puttygen ~/.ssh/id_dsa.ppk

ekspor sebagai openssh:

Konversi → Ekspor kunci OpenSSH

Dapatkan kunci publik:

terbuka seperti sebelum kunci pribadi dengan puttygen, kunci publik berada di bawah kunci publik untuk menempel ke file OpenSSH yang diotorisasi

Bar Horing
sumber
4

Saya menyiapkan wadah Docker untuk membuat hidup lebih sederhana:

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

Dimana:

  • /path/to/file.ppk - jalur lokal ke file ppk Anda
  • /path/to/output - jalur lokal ke tempat kunci pribadi dan publik harus ditempatkan
Czerasz
sumber
1
Bagus. Terima kasih untuk gambar! Namun sementara itu --volume=/path/to/file.ppk:/tmp/id.ppkdan tidakid_dsa.ppk
pH