關於pem與ppk格式的密鑰的相互轉換


目前主流的密鑰(或者說私鑰)格式有兩種:OpenSSH格式的密鑰(.pem或者無后綴) 和 PuTTY格式的密鑰(.ppk)

pem好像是Privacy Enhanced Mail的縮寫,以前是利用公鑰加密進行郵件安全的一個協議,

而現在PEM這個協議僅僅在使用的就是.pem這種文件格式

ppk文件是Putty的私鑰。PuTTY Private Key 的縮寫。

 

目前putty基於密鑰登錄,只能使用ppk格式,而其他ssh客戶端,大多都只能使用通過的.pem格式

要實現.pem與.ppk格式的相互轉換,目前主要都是使用puttygen這個小程序,具體方法如下:

 

Window系統下的操作:

      格式轉換,都需要先導入文件,運行puttygen,點擊【Conversions】菜單項中的【Import key】,導入密鑰文件

  • .pem----轉---->.ppk

           導入后,點擊【Save private key】 ,即可生成putty默認支持.ppk格式了

  • .ppk----轉---->.pem

           導入后,點擊【Conversions】菜單項下的  【Export OpenSSH Key】,最后選擇保存路徑!

          

 

 

Linux系統下的操作:

Linux系統下,轉換也需要安裝putty軟件包(由epel源提供,因此先安裝epel-release),安裝后包含了puttygen命令行工具

注意:puttygen命令對於輸入格式,是可以自動檢測到的,也可以-t選擇指定(when generating (ed25519, ecdsa, rsa, dsa, rsa1))

  • .pem----轉---->.ppk
[root@5201351 ~]# puttygen id_rsa.pem -o id_rsa.ppk       #也可以-O private指定輸出ppk格式,不過putty默認也是輸出ppk格式,可以省略
  • .ppk----轉---->.pem
[root@5201351 ~]# puttygen id_rsa.ppk -o id_rsa.pem -O private-openssh        #輸出其他非ppk格式,必須-O指定類型,否則報錯

如果需要對.pem格式與ppk格式進行批量的轉換,目前筆者能想到最好的方法就是使用puttygen命令結合for或while循環遍歷處理

 

關於puttygen命令可能會用到的選項幫助如下:

[root@5201351 ~]# puttygen --help
PuTTYgen: key generator and converter for the PuTTY tools
Release 0.73
Usage: puttygen ( keyfile | -t type [ -b bits ] )
                [ -C comment ] [ -P ] [ -q ]
                [ -o output-keyfile ] [ -O type | -l | -L | -p ]
  -t    specify key type when generating (ed25519, ecdsa, rsa, dsa, rsa1)
  -b    specify number of bits when generating key
  -C    change or specify key comment
  -P    change key passphrase
  -q    quiet: do not display progress bar
  -O    specify output type:
           private             output PuTTY private key format
           private-openssh     export OpenSSH private key
           private-openssh-new export OpenSSH private key (force new format)
           private-sshcom      export ssh.com private key
           public              RFC 4716 / ssh.com public key
           public-openssh      OpenSSH public key
           fingerprint         output the key fingerprint
  -o    specify output file
  -l    equivalent to `-O fingerprint'
  -L    equivalent to `-O public-openssh'
  -p    equivalent to `-O public'
  --old-passphrase file
        specify file containing old key passphrase
  --new-passphrase file
        specify file containing new key passphrase
  --random-device device
        specify device to read entropy from (e.g. /dev/urandom)

 

 

尊重別人的勞動成果 轉載請務必注明出處:https://www.cnblogs.com/5201351/p/13055631.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM