Pack Camo

RSA・SSH鍵ペア生成ツール

RSA・ECDSA・Ed25519の鍵ペアをPEMとOpenSSH形式で、端末上で生成。

処理はすべて端末内で完結し、アップロードは一切ありません。

鍵ペアを生成しています…

何もインストールせずにSSH・RSA鍵ペアを生成

このツールは、ブラウザのWeb Crypto APIでEd25519、ECDSA(P-256、P-384、P-521)、RSA(2048・3072・4096ビット)の新しい鍵ペアを生成し、必要な形式で書き出します。<code>ssh-keygen</code> と同じ形式のOpenSSH秘密鍵と <code>authorized_keys</code> 用の行、OpenSSL・TLS・JWTライブラリ向けのPKCS#8/SPKI PEMファイル、公開JWK、そして <code>SHA256:</code> フィンガープリントです。鍵はお使いの端末で生成され、秘密鍵がこのページの外に出ることはありません。

SSH鍵ペアの生成方法

  1. 1鍵の種類を選びます。SSHなら現在の標準は Ed25519。古いサーバーやPEM・JWT署名鍵には RSA を選びます。
  2. 2必要なら コメント(通常は user@host)を入力します。あとで authorized_keys の中で鍵を見分けやすくなります。
  3. 3生成 を押します。秘密鍵を id_ed25519(または id_rsa、id_ecdsa)、公開鍵を同じ名前に .pub を付けてダウンロードします。
  4. 4両方を ~/.ssh/ に移動し、chmod 600 ~/.ssh/id_ed25519 を実行して、公開鍵の行をサーバーの ~/.ssh/authorized_keys かGitホスティングのSSHキー設定に追加します。

どの鍵の種類を選ぶべき?

Ed25519
小さく(公開鍵は68文字)、高速で、実装ミスにも強い方式。OpenSSH 6.5以降、GitHub、GitLab、現行のすべてのサーバーが対応。今のSSHには最適です。
ECDSA(P-256、P-384、P-521)
NIST曲線。コンプライアンス要件で求められる場合や、一部のハードウェアトークンやクラウドの鍵管理サービスなどEd25519が使えない環境で必要です。
RSA
最も互換性の高い選択肢。非常に古いSSHサーバーや多くのTLS・JWT(RS256)ライブラリでも使えます。2030年以降も使う鍵なら3072ビット以上に。2048ビットが現在も許容される最低ラインです。

各形式の説明

OpenSSH秘密鍵
<code>-----BEGIN OPENSSH PRIVATE KEY-----</code>。<code>ssh-keygen</code> が標準で書き出す形式です。ここでは暗号化なしで生成されます。パスフレーズはあとで <code>ssh-keygen -p -f id_ed25519</code> で追加できます。
OpenSSH公開鍵
1行の <code>ssh-ed25519 AAAA… comment</code>。<code>authorized_keys</code>、GitHub、GitLab、クラウドのコンソールに登録します。
PKCS#8秘密鍵(PEM)
<code>-----BEGIN PRIVATE KEY-----</code>。OpenSSL、Java、Node.js、Go、多くのJWTライブラリが鍵の種類を問わず読み込む標準コンテナです。
SPKI公開鍵(PEM)
<code>-----BEGIN PUBLIC KEY-----</code>。X.509のSubjectPublicKeyInfo形式で、署名の検証やJWT検証の設定に使われます。
JWK
公開鍵をJSON(RFC 7517)で表したもの。<code>kid</code> サムプリント付きで、JWKSエンドポイントにそのまま公開できます。

フィンガープリント

フィンガープリントは、SSHワイヤ形式の公開鍵をSHA-256でハッシュし、パディングなしのBase64で表したもの(SHA256:…)です。ssh-keygen -lf id_ed25519.pub が表示し、GitHubが各鍵の横に表示し、SSHが新しいホストを信頼するか尋ねるときに表示する値です。フィンガープリントを比べれば、2つの公開鍵が同じ鍵かどうかを確認できます。

ブラウザで鍵を生成しても安全?

鍵はブラウザ組み込みの暗号機能 crypto.subtle.generateKey で生成され、OSの安全な乱数生成器を使います。ssh-keygen と同じ乱数源です。ネットワークには何も送信されません。このページを読み込んでから回線を切り、オフラインで鍵を生成することもできます。

本番システムを守る鍵は、やはり実際に使うマシン上で ssh-keygen -t ed25519 を実行するか、ハードウェアキーで生成するのが最も安全です。このツールはテスト環境、CIのデプロイキー、JWT署名鍵、OpenSSHのないマシンに最適です。こうした鍵に基づく証明書を確認するなら、証明書デコーダーをどうぞ。

よくある質問

オンラインでSSH鍵を作るには?
Ed25519を選び、メールアドレスなどのコメントを入力して生成を押し、秘密鍵(id_ed25519)と公開鍵(id_ed25519.pub)をダウンロードします。両方を ~/.ssh に置き、.pub の行をサーバーやGitホスティングに追加してください。
Ed25519はRSAより優れていますか?
SSHではそうです。Ed25519の鍵ははるかに短く、高速で、RSA-3072と同等の安全性があります。RSAはEd25519に対応していないシステムにだけ使いましょう。
ブラウザでEd25519が使えないのはなぜ?
Web Crypto APIのEd25519対応はFirefox 129、Safari 17、Chrome 137からです。古いブラウザなら更新するか、ECDSAかRSAを選んでください。
秘密鍵にパスフレーズを付けられますか?
鍵はパスフレーズなしで生成されます。自分のマシンで ssh-keygen -p -f ~/.ssh/id_ed25519 を実行すると、ファイルがその場で暗号化されます。
PuTTYの .ppk 形式に変換するには?
PuTTYgenを開いてLoadを選び、ダウンロードしたOpenSSH秘密鍵を選択して秘密鍵として保存します。PuTTYgenはOpenSSH形式をそのまま読み込めます。
サーバーに置くのはどのファイル?
公開鍵だけです。.pub ファイルの1行を ~/.ssh/authorized_keys に追記します。秘密鍵は自分のパソコンに置いたままにし、絶対に共有しないでください。
SSHで秘密鍵のパーミッションが緩すぎると言われるのはなぜ?
SSHは他のユーザーが読める秘密鍵を拒否します。秘密鍵ファイルに chmod 600、~/.ssh ディレクトリに chmod 700 を実行してください。
鍵はサーバーに送信されますか?
いいえ。鍵はこのページ上でブラウザのWeb Crypto APIによって生成され、ダウンロードかコピーするまでメモリ上にだけ存在します。