PPK 形式(Putty)のキーペアを PEM 形式(OpenSSH)に変換してみた
こんにちは、コンサルティング部の望月です。
EC2 キーペアで PPK 形式(Putty)が選択できるようになりました。これで、PuTTY 派の人も手元で PEM 形式(OpenSSH)のキーペアを変換する必要がなくなりました。
そのため、場合によっては、作業のためキーペアをもらったら PPK 形式だったなんてことが、今後発生する可能性があります。
そんな場面に出くわした macOS ユーザーが困らないようにこちらのエントリーをお届けします。
やってみた
前提
- macOS ユーザー
- Homebrew がインストール済みであること
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 のセッションマネージャーを利用すれば、こういったキーペアの管理といったことも不要になります。
最近は私もセッションマネージャーで作業をすることが多いですし、皆様もセッションマネージャー使っていきましょう!!!