本文へスキップ

SSH鍵の生成

SSH Key Generator

コメントを付けたOpenSSHの鍵ペアを作り、フィンガープリントも表示します。秘密鍵はパスフレーズなしで出力されるので、必要ならssh-keygen -pで自分でかけてください。

同じ鍵の生成ツールを、OpenSSHのタブで開いたものです。`authorized_keys`の1行と、それに対応する`openssh-key-v1`の秘密鍵を、ブラウザの中で作ります。既定はEd25519で、求めるホストのためにECDSAとRSAもあります。

🔒 ブラウザの中だけで動きますsshkeyscrypto
アルゴリズム

小さく、速く、現代的です。2014年以降、SSHの既定値です。

OpenSSH 公開鍵の行の末尾に付きます。

鍵はこのブラウザ自身の WebCrypto(crypto.subtle.generateKey)がこのタブの中で生成し、タブの外へは出ません。送信も記録も保存もしません。出力形式はこのプロジェクトのテストで OpenSSH 自身と突き合わせて確かめています。できるなら、秘密鍵を置く機械そのもので生成してください。ブラウザのタブに存在した鍵は、そのタブのメモリに存在した鍵です。

使い方

  1. コメントを付けます

    公開鍵の行の末尾に付きます。慣例は`you@machine`です。2年後、項目が十数個ある`authorized_keys`の中で、どの行が自分のものなのかを見つけさせてくれるのが、これです。

  2. 公開鍵をサーバーに入れます

    1行を、ホストの`~/.ssh/authorized_keys`に付け足すだけです。秘密鍵は手元に残ります。

  3. 秘密鍵を保存して、締めます

    `id_key`としてダウンロードしたら、`chmod 600 id_key`をしてください。sshは、ほかのアカウントから読める秘密鍵を拒否します。そして`ssh-keygen -p -f id_key`でパスフレーズを掛けます。

よくある質問

秘密鍵が暗号化されていないのはなぜですか

`openssh-key-v1`の鍵を暗号化するにはbcrypt-pbkdfが要りますが、ここでそれをするには、すべてのパラメータについてOpenSSHと突き合わせて検証できないKDFの実装を掲げることになります。手元で`ssh-keygen -p`を使ってパスフレーズを掛けるほうが、OpenSSH自身のコードを使うことになるので明確に優れています。

本当にブラウザでSSHの鍵を作ってもいいのですか

使い捨てのホスト、実習の環境、あるいは手元に端末が無いときなら、理にかなった便利さです。何も送信しませんし、出力の形式はこのプロジェクトのテストで`ssh-keygen`自身と突き合わせています。本番を開ける鍵なら、その鍵を持つことになる機械の端末を使ってください。

サーバーがまだパスワードを尋ねてきます

たいていは権限です。ホスト側で`~/.ssh`は700、`authorized_keys`は600でなければならず、手元の秘密鍵は600でなければなりません。`ssh -v`がどの検査で引っかかったのかを教えてくれますが、ほとんど常にこれです。

1つの鍵を複数のサーバーに使ってもいいですか

使えますし、よくあるやり方です。対価は被害の広がりです。秘密鍵が1つ漏れれば、その鍵を登録したすべての場所が開きます。環境ごとに鍵を分ければ——ノートパソコンから本番へ、CIからステージングへ——登録の行が1つずつ増えるだけで、被害の範囲を狭められます。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。