🔑 PPK / PEM 変換ツール
PuTTY形式(.ppk)とOpenSSH形式(.pem)のSSH秘密鍵を相互変換・手順解説
⚡クイック変換モード
🔄SSH鍵 変換ツール
📋変換履歴(最近5件)
まだ変換履歴がありません。
📖PPK形式とPEM形式の違い
🪟 PPK形式(PuTTY Private Key)
- 拡張子: .ppk
- PuTTY独自のフォーマット
- 秘密鍵と公開鍵が1ファイルに同梱
- 主にWindows環境で使用
- PuTTY・Tera Term・WinSCPで利用可
- PPK version 2 / version 3あり
🐧 PEM形式(Privacy Enhanced Mail)
- 拡張子: .pem / .key
- Base64エンコードのコンテナ形式
- OpenSSL・OpenSSHで標準的に使用
- Linux・macOS環境で主流
- AWS・GCP・Azure等のクラウドで標準
- 秘密鍵・公開鍵・証明書を格納可能
🆕 OpenSSH新形式(OPENSSH PRIVATE KEY)
- 拡張子: .pem / 拡張子なし
- OpenSSH 6.5以降のデフォルト形式
- Ed25519・ECDSAに必須
- bcrypt KDFによる強力な鍵保護
- ssh-keygen -t ed25519 で生成
🔐 PKCS#8形式
- 拡張子: .p8 / .pem
- RFC 5958準拠の標準形式
- Java・Python等で広く利用
- 複数の鍵タイプに対応
- openssl pkcs8 コマンドで変換
📊変換組み合わせ一覧表
| 変換元 | 変換先 | 使用ツール | ユースケース | 難易度 |
|---|---|---|---|---|
| PPKv2/v3 | PEMOpenSSH秘密鍵 | puttygen / PuTTYgen GUI | WindowsからLinux/Macへ移行、AWSなどクラウド接続 | ★☆☆ 簡単 |
| PEM秘密鍵 | PPKPuTTY形式 | PuTTYgen GUI / puttygen | Linux鍵をWindowsのPuTTY・WinSCPで使用 | ★☆☆ 簡単 |
| PEMRSA秘密鍵 | OPENSSH新形式 | ssh-keygen -p -m OpenSSH | 旧形式から最新OpenSSH形式へ移行 | ★★☆ 普通 |
| OPENSSH新形式 | PEMRSA秘密鍵 | ssh-keygen -p -m PEM | 古いライブラリやツールとの互換性確保 | ★★☆ 普通 |
| PEM秘密鍵 | PKCS8 | openssl pkcs8 | Java・Node.js等での使用 | ★★☆ 普通 |
| PEM秘密鍵 | DERバイナリ | openssl rsa -outform DER | バイナリ形式が必要な環境 | ★★☆ 普通 |
| PPKv3 | PPKv2 | PuTTYgen GUI(古いPuTTY用) | 古いPuTTYバージョンとの互換性 | ★★☆ 普通 |
| 任意秘密鍵 | PUBLIC公開鍵 | ssh-keygen -y -f / openssl rsa -pubout | 秘密鍵から公開鍵を再生成 | ★☆☆ 簡単 |
🛠️OS別 変換手順
PPK → PEM(PuTTYgen GUIを使用)
- PuTTYを公式サイトからダウンロードしインストールする。
- PuTTYgen.exe を起動する(スタートメニュー → PuTTY → PuTTYgen)。
- メニューの
Conversions→Import keyを選択し、.ppkファイルを開く。 - メニューの
Conversions→Export OpenSSH keyをクリックする。 - パスフレーズなしの確認ダイアログが出たら 「はい」 をクリック(任意で設定可)。
- ファイル名を
mykey.pem等にして保存する。
⚠️ PPK v3形式はPuTTY 0.75以降が必要です。古いバージョンではImport keyに失敗する場合があります。
PEM → PPK(PuTTYgen GUIを使用)
- PuTTYgen.exe を起動する。
Conversions→Import Keyを選択し、.pemファイルを開く。- 必要に応じてパスフレーズを設定する。
- 「Save private key」 ボタンをクリックし .ppkとして保存する。
事前準備:puttyのインストール
brew install putty
PPK → PEM
# PPKをOpenSSH PEM形式に変換
puttygen mykey.ppk -O private-openssh -o mykey.pem
# パスフレーズ付きPPKの場合(変換時に入力を求められる)
puttygen mykey.ppk -O private-openssh -o mykey.pem –old-passphrase pass:
# 権限を適切に設定(必須)
chmod 400 mykey.pem
puttygen mykey.ppk -O private-openssh -o mykey.pem
# パスフレーズ付きPPKの場合(変換時に入力を求められる)
puttygen mykey.ppk -O private-openssh -o mykey.pem –old-passphrase pass:
# 権限を適切に設定(必須)
chmod 400 mykey.pem
PEM → PPK
# PEM形式秘密鍵をPPKに変換
puttygen mykey.pem -O private -o mykey.ppk
# パスフレーズを付与して変換
puttygen mykey.pem -O private -o mykey.ppk –new-passphrase pass:yourpassphrase
puttygen mykey.pem -O private -o mykey.ppk
# パスフレーズを付与して変換
puttygen mykey.pem -O private -o mykey.ppk –new-passphrase pass:yourpassphrase
PEM → OpenSSH新形式
# 既存PEMをOpenSSH新形式に変換(上書き)
ssh-keygen -p -m OpenSSH -f mykey.pem
# 別名で保存する場合
cp mykey.pem mykey_openssh
ssh-keygen -p -m OpenSSH -f mykey_openssh
ssh-keygen -p -m OpenSSH -f mykey.pem
# 別名で保存する場合
cp mykey.pem mykey_openssh
ssh-keygen -p -m OpenSSH -f mykey_openssh
秘密鍵から公開鍵を取り出す
# PEM秘密鍵から公開鍵を生成
ssh-keygen -y -f mykey.pem > mykey.pub
# PPKから公開鍵を取り出す
puttygen mykey.ppk -O public-openssh -o mykey.pub
ssh-keygen -y -f mykey.pem > mykey.pub
# PPKから公開鍵を取り出す
puttygen mykey.ppk -O public-openssh -o mykey.pub
事前準備:putty-toolsのインストール
# Debian / Ubuntu
sudo apt-get install putty-tools
# RHEL / CentOS / Fedora
sudo yum install putty
# インストール確認
puttygen –version
sudo apt-get install putty-tools
# RHEL / CentOS / Fedora
sudo yum install putty
# インストール確認
puttygen –version
PPK → PEM(OpenSSH秘密鍵)
puttygen server.ppk -O private-openssh -o server.pem
# 権限設定(セキュリティ上必須)
chmod 400 server.pem
# SSH接続テスト
ssh -i server.pem user@hostname
# 権限設定(セキュリティ上必須)
chmod 400 server.pem
# SSH接続テスト
ssh -i server.pem user@hostname
PEM → PPK
puttygen server.pem -O private -o server.ppk
OpenSSH形式の変換(ssh-keygen)
# OpenSSH新形式 → PEM形式(RSAのみ対応)
ssh-keygen -p -m PEM -f id_rsa
# PEM形式 → OpenSSH新形式
ssh-keygen -p -m OpenSSH -f id_rsa
# PKCS#8形式に変換
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in id_rsa -out id_rsa_pkcs8.pem
# PEM → DER形式
openssl rsa -in id_rsa.pem -outform DER -out id_rsa.der
ssh-keygen -p -m PEM -f id_rsa
# PEM形式 → OpenSSH新形式
ssh-keygen -p -m OpenSSH -f id_rsa
# PKCS#8形式に変換
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in id_rsa -out id_rsa_pkcs8.pem
# PEM → DER形式
openssl rsa -in id_rsa.pem -outform DER -out id_rsa.der
💡 変換後は必ず
chmod 400 鍵ファイル名 で権限を設定してください。権限が広すぎると「WARNING: UNPROTECTED PRIVATE KEY FILE!」エラーが発生します。🗝️鍵タイプ別 対応状況
| 鍵タイプ | ビット数 | PPK対応 | PEM(PKCS#1)対応 | OpenSSH新形式 | セキュリティ強度 | 推奨度 |
|---|---|---|---|---|---|---|
| RSA | 2048 / 3072 / 4096 | ✅ 対応 | ✅ 対応 | ✅ 対応 | 2048=標準 / 4096=高 | ⭐⭐⭐⭐(互換性最高) |
| ECDSA | 256 / 384 / 521 | ✅ 対応 | ✅ 対応 | ✅ 対応 | 256=高 | ⭐⭐⭐⭐(高速・安全) |
| Ed25519 | 256(固定) | ✅ 対応(PuTTY 0.68+) | ❌ PKCS#1非対応 | ✅ 必須 | 非常に高い | ⭐⭐⭐⭐⭐(最推奨) |
| DSA | 1024 | ✅ 対応 | ✅ 対応 | ✅ 対応 | 低(非推奨) | ⭐(非推奨・廃止傾向) |
| RSA1 | 可変 | ⚠️ 旧バージョンのみ | ⚠️ 旧バージョンのみ | ❌ 非対応 | 非常に低い | ❌(SSH-1は廃止) |
🔥よく使われる変換パターン
AWS EC2: PPK → PEM
WinSCP用: PEM → PPK
Ed25519鍵をPuTTYで使う
Tera Term用: PEM → PPK
GCP: PPK → PEM変換
秘密鍵から公開鍵を抽出
❓よくある質問(FAQ)
WindowsでPuTTY・Tera Term・WinSCPを使う場合はPPK形式、Linux・macOSのOpenSSHやAWS EC2・GCP・AzureなどのクラウドサービスではPEM形式が標準です。最近はどの環境でもOpenSSH新形式(BEGIN OPENSSH PRIVATE KEY)への移行が進んでいます。
秘密鍵ファイルのパーミッションが広すぎる場合に発生します。Linuxの場合は
chmod 400 mykey.pem または chmod 600 mykey.pem を実行してください。Windowsの場合はファイルのプロパティ → セキュリティ → アクセス許可を自分のアカウントのみに制限してください。PPK version 3はPuTTY 0.75以降でサポートされています。古いバージョンのPuTTYをお使いの場合はアップデートしてください。PPK v3はArgon2をKDFに使用しておりセキュリティが強化されていますが、古いツールとの互換性はありません。PuTTYgenでv2形式として保存し直すことで古いクライアントでも使用できます。
Ed25519鍵はPKCS#1形式のPEM(BEGIN RSA PRIVATE KEY)には変換できません。これはEd25519がRSAとは異なる数学的構造を持つためです。Ed25519はOpenSSH新形式(BEGIN OPENSSH PRIVATE KEY)またはPKCS#8形式(BEGIN PRIVATE KEY)に変換可能です。PPK形式への変換はPuTTY 0.68以降で対応しています。
AWSコンソールでは.pemと.ppkの両方のキーペア形式をダウンロードできます。Linux/macOSのターミナルから接続する場合は.pem、WindowsのPuTTYから接続する場合は.ppkをダウンロードするのが最も効率的です。なお、2022年以降AWSではEC2 Instance ConnectやSystems Manager Session Managerも活用できます。
はい、可能です。puttygen コマンドの場合は
--old-passphrase pass:yourpassphrase オプションでパスフレーズを指定します。PuTTYgen GUIの場合は読み込み時にパスフレーズ入力ダイアログが表示されます。変換先にもパスフレーズを設定したい場合は --new-passphrase pass:newpassphrase を追加してください。puttyツールがインストールされていないか、PATHが通っていない可能性があります。Ubuntuは
sudo apt-get install putty-tools、macOSは brew install putty、Windowsではputtygen.exeのフルパス(例: C:\Program Files\PuTTY\puttygen.exe)を指定するか、PuTTYgenのGUIを使用してください。