PPK 形式(Putty)のキーペアを PEM 形式(OpenSSH)に変換してみた

PPK 形式(Putty)のキーペアを PEM 形式(OpenSSH)に変換してみた

Clock Icon2020.02.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コンサルティング部の望月です。

EC2 キーペアで PPK 形式(Putty)が選択できるようになりました。これで、PuTTY 派の人も手元で PEM 形式(OpenSSH)のキーペアを変換する必要がなくなりました。

PuTTY派 歓喜! ppk形式のEC2キーペアが作成できるようになりました

そのため、場合によっては、作業のためキーペアをもらったら PPK 形式だったなんてことが、今後発生する可能性があります。

そんな場面に出くわした macOS ユーザーが困らないようにこちらのエントリーをお届けします。

やってみた

前提

PPK 形式のキーペアを PEM 形式に変換

Homebrew に putty というパッケージがあるため、こちらをインストールします。

$ brew info putty
putty: stable 0.73 (bottled), HEAD
Implementation of Telnet and SSH
https://www.chiark.greenend.org.uk/~sgtatham/putty/
……

$ brew install putty

変換を行なうためには、先程インストールした putty パッケージに入っている puttygen コマンドを利用します。
以下、ヘルプになりますが PEM 形式に変換するには -O private-openssh オプションを指定します。

$ 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)

puttygen コマンドを実施することで、PEM 形式へ変換されました。
あとは、変換した pem で SSH を行うことで、ログインすることができます。

$ cat <キーペア>.ppk
PuTTY-User-Key-File-2: ssh-rsa
……

$ puttygen <キーペア>.ppk -O private-openssh -o <キーペア>.pem

$ cat <キーペア>.pem
-----BEGIN RSA PRIVATE KEY-----
……
-----END RSA PRIVATE KEY-----

PPK 形式のキーペアで SSH する

ちなみに putty パッケージには plink コマンドもあり、こちらのコマンドを利用すれば、PPK 形式のキーペアを使って SSH ログインを行うことができます。

$ plink -i <キーペア>.ppk -ssh ec2-user@<IP address> -ssh
Using username "ec2-user".
Access granted. Press Return to begin session.
Last login: Thu Feb  6 09:56:11 2020 from xxx.xxx.xxx.xxx

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
3 package(s) needed for security, out of 24 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-xx-xx-xx-xx ~]$

まとめ

これで突然 PPK 形式のキーペアがやってきても、怖くないですね!!
また、AWS Systems Manager のセッションマネージャーを利用すれば、こういったキーペアの管理といったことも不要になります。
最近は私もセッションマネージャーで作業をすることが多いですし、皆様もセッションマネージャー使っていきましょう!!!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.