PPK・PEM変換ツール|SSH秘密鍵を相互変換する方法

🔑 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を使用)

  1. PuTTYを公式サイトからダウンロードしインストールする。
  2. PuTTYgen.exe を起動する(スタートメニュー → PuTTY → PuTTYgen)。
  3. メニューの ConversionsImport key を選択し、.ppkファイルを開く。
  4. メニューの ConversionsExport OpenSSH key をクリックする。
  5. パスフレーズなしの確認ダイアログが出たら 「はい」 をクリック(任意で設定可)。
  6. ファイル名を mykey.pem 等にして保存する。
⚠️ PPK v3形式はPuTTY 0.75以降が必要です。古いバージョンではImport keyに失敗する場合があります。

PEM → PPK(PuTTYgen GUIを使用)

  1. PuTTYgen.exe を起動する。
  2. ConversionsImport Key を選択し、.pemファイルを開く。
  3. 必要に応じてパスフレーズを設定する。
  4. 「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

PEM → PPK

# PEM形式秘密鍵をPPKに変換
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

秘密鍵から公開鍵を取り出す

# PEM秘密鍵から公開鍵を生成
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

PPK → PEM(OpenSSH秘密鍵)

puttygen server.ppk -O private-openssh -o server.pem

# 権限設定(セキュリティ上必須)
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
💡 変換後は必ず 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は廃止)

🔥よく使われる変換パターン

よくある質問(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を使用してください。