关于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

原文地址:https://www.cnblogs.com/5201351/p/13055631.html