この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、コンサルティング部の望月です。
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 のセッションマネージャーを利用すれば、こういったキーペアの管理といったことも不要になります。
最近は私もセッションマネージャーで作業をすることが多いですし、皆様もセッションマネージャー使っていきましょう!!!