題 如何在Linux下將.ppk密鑰轉換為OpenSSH密鑰?


我知道可以在Windows中的puttygen下轉換.ppk,但是如何在Linux上執行此操作?這可能嗎 ?


162
2018-01-12 17:56


起源




答案:


用Putty做吧。

  • Linux的: 使用您的軟件包管理器,安裝PuTTY(或更簡潔的PuTTY工具):

    • Ubuntu的 sudo apt-get install putty-tools
    • Debian的樣 apt-get install putty-tools
    • 基於RPM yum install putty
    • Gentoo的 emerge putty
    • 的Archlinux sudo pacman -S putty
    • 等等
  • OS X: 安裝 家釀然後跑 brew install putty

將密鑰放在某個目錄中,例如你的主文件夾。 現在將PPK密鑰轉換為SSH密鑰對:緩存搜索

生成 私人的 鍵:

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

並生成 上市 鍵:

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

將這些鍵移動到 ~/.ssh 並確保您的私鑰的權限設置為私有:

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

如果你已經嘗試過'git clone'操作你也可能需要這樣做

chmod 666 ~/.ssh/known_hosts

239
2018-01-12 18:03



嗨我已經有一個.pub然後需要再次創建公鑰 - Amit Bera
如果您來到這裡尋找如何在Windows中執行此操作,請運行“puttygen yourkey.ppk”,然後在“轉換”菜單下選擇“導出OpenSSH密鑰”以獲取私鑰。 - Ryan Shillington
來自@jous的解決方案更好,因為你不需要私鑰來轉換公鑰+你不需要安裝putty - Tobi
我不得不把這個鑰匙添加到我的 ./ssh/config 文件 Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes - vladkras
一些橢圓曲線格式(ECDS等)僅在beta putty工具中可用。 - DanFromGermany


ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i標誌是從openssh格式以外導入的
  • -f標誌表示從輸入文件中讀取

資料來源:a 博文 在burnz.wordpress.com


35
2018-03-06 14:53



.ppk文件是完整的密鑰對,我不認為上面的命令或博客文章適用於此。 - Peter Becker
我想我的意思是,如果你使用puttygen的“保存公鑰”按鈕,它會起作用。 ssh-keygen不了解真正的.ppk文件,因為它們缺少'---- BEGIN SSH2 PUBLIC KEY ----'標記。您可以在“Public-Lines:..”和“Private-Lines:..”行之間的.ppk文件中找到公鑰。 - jous
這對我來說有一個公鑰文件 - puttygen似乎需要一個私鑰。它似乎只是將base-64部分重新排列成一行 - Jasen
這似乎沒有涵蓋私鑰,這就是為什麼我想要進行轉換,我已經在某處保存了公鑰... - Gert van den Berg


獲取私鑰:

在puttygen中打開.ppk文件:

puttygen ~/.ssh/id_dsa.ppk

導出為openssh:

轉換→導出OpenSSH密鑰

獲取公鑰:

像之前一樣打開 私鑰 與puttygen,公鑰是在 用於粘貼到OpenSSH authorized_keys文件的公鑰


5
2017-10-15 08:47





我準備了一個Docker容器,讓生活更簡單:

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

哪裡:

  • /path/to/file.ppk  - ppk文件的本地路徑
  • /path/to/output  - 應放置私鑰和公鑰的本地路徑

4
2018-03-07 11:43



大。 thx為圖像!然而同時它 --volume=/path/to/file.ppk:/tmp/id.ppk 並不是 id_dsa.ppk - pHiL