Ed25519・RSAのSSH鍵PairをBrowser内で生成する
PUBLIC KEYとPRIVATE KEYを分け、SHA-256 Fingerprintと自己検証結果を確認して保存できます。
GitHub用Ed25519 SSH鍵を生成する結論:Ed25519 Key Pairを作り、GitHub SettingsへPUBLIC KEYだけを追加する
GitHub公式は通常の新規Keyとしてssh-keygen -t ed25519を案内し、非対応Legacy System向けにRSA 4096 bit例を示しています。
GitHubへBEGIN OPENSSH PRIVATE KEYを貼り付けません。PUBLIC KEYはssh-ed25519またはssh-rsaで始まります。
GitHubのSSH UserはAccount名ではなくgitです。Test Commandはssh -T [email protected]です。
GitHub登録前にKeyを識別する
端末名をCommentやGitHubのTitleへ付け、FingerprintでAgent内とAccount内のKeyを照合します。
同じKeyをAuthenticationとSigningの両方へ使う場合も、GitHub UI上のKey Type設定を確認します。
| 確認項目 | 確認方法 | 判断 |
|---|---|---|
| Key Type | Ed25519対応 | 通常Ed25519 |
| 登録内容 | 先頭文字列 | PUBLICのみ |
| SSH User | 接続Command | git |
| Fingerprint | GitHub一覧と照合 | 同一Key |
GitHubへSSH公開鍵を登録する
- Key Pairを生成します。
- PUBLIC KEYをCopyします。
- GitHub SettingsのSSH and GPG keysを開きます。
- New SSH keyへTitleとPUBLIC KEYを登録します。
- PRIVATE KEYをssh-agentへ追加しssh -Tで確認します。
ssh-agent操作はOS Terminalで行います。Browser ToolからOS Agentへ追加はできません。
接続確認Command
ssh-add ~/.ssh/id_ed25519
ssh -T [email protected]
ssh -vT [email protected]
PUBLIC KEYとPRIVATE KEYを取り違えない
| 種類 | 代表的な見分け方 | 置く場所 | 取扱い |
|---|---|---|---|
| PUBLIC KEY | ssh-ed25519 AAAA... またはssh-rsa AAAA...、File名末尾.pub | GitHub、GitLab、Serverのauthorized_keys | 登録・共有可能 |
| PRIVATE KEY | BEGIN OPENSSH PRIVATE KEYで始まる、File名に.pubがない | SSH Clientを使う自分の端末 | Secret。公開・送信・Commitしない |
GitHubやServerへ貼り付けるのはPUBLIC KEYです。PRIVATE KEYは接続元端末だけで保持します。公開鍵を知られても対応する秘密鍵を作れるという意味ではありませんが、秘密鍵が漏れた場合は対象鍵を登録先から削除し、新しいKey Pairへ交換します。
BrowserでSSH鍵を生成する手順
- 接続先がEd25519へ対応しているか確認し、通常はEd25519を選びます。
- 互換性要件がある場合だけRSA 3072または4096 bitを選びます。
- 端末や用途を識別できるCommentと、既存鍵へ上書きしない保存名を入力します。
- 生成後に「署名・検証 成功」、Key Type、SHA-256 Fingerprintを確認します。
- PUBLIC KEYとPRIVATE KEYを別々に保存し、PRIVATE KEYへOS側で適切な権限を設定します。
現行ツールのPRIVATE KEYはPassphraseで暗号化されていません。組織PolicyがPassphraseを必須とする場合はOpenSSHのssh-keygen等を利用してください。
保存後にOpenSSHで形式とPairを確認する
ssh-keygen -y -f ~/.ssh/id_ed25519 > derived.pub
ssh-keygen -lf ~/.ssh/id_ed25519.pub -E sha256
ssh-keygen -yはOpenSSH形式の秘密鍵から公開鍵を標準出力へ再導出します。生成時のPUBLIC KEYと鍵本体が一致するか比較します。-l -E sha256はPublic Key Fingerprintを表示します。Commentは鍵本体ではないため、比較時はAlgorithmとBase64部分を確認します。
DevelopToolsのSSH鍵生成ツールでできること
| 項目 | 現行ツールの仕様 |
|---|---|
| Algorithm | Ed25519、RSA 3072 bit、RSA 4096 bit |
| 生成元 | HTTPSのSecure ContextでWeb Crypto APIを使用。Math.randomは使用しない |
| 公開鍵 | OpenSSH authorized_keys形式。ssh-ed25519またはssh-rsaで始まり、任意Commentを付加 |
| 秘密鍵 | 暗号化なしのOpenSSH Private Key形式。BEGIN OPENSSH PRIVATE KEYで開始 |
| 検証 | 生成直後にRandom Dataへ署名・検証し、公開鍵BlobからSHA-256 Fingerprintを計算 |
| 保存 | 公開鍵は設定名.pub、秘密鍵は設定名でDownload。公開鍵だけClipboardへCopy可能 |
| 保持 | 鍵を生成したPage内のMemoryと表示に保持し、Reset・設定変更・pagehideで参照を破棄 |
| 非対応 | Passphrase暗号化、PEM・PKCS#8出力、RSA 2048、ECDSA、FIDO/U2F、既存鍵読込、ssh-agent操作 |
| 通信・永続化 | 鍵生成Moduleはfetch等を使わず、localStorage・sessionStorage・IndexedDBへ鍵を保存しない |
Toolは鍵Pairの生成、OpenSSH形式化、Fingerprint計算、署名・検証までをBrowser内で行います。GitHub登録、authorized_keys編集、File Permission変更、ssh-agent追加、SSH接続は実行しません。
秘密鍵を安全に扱うための確認事項
- PRIVATE KEYをGitHub、Issue、Chat、Source Code、CI Logへ貼り付けない
- Download後はOwnerだけが読めるPermissionまたはACLを設定する
- Repository配下へ置かず、誤Commit対策だけに.gitignoreを過信しない
- 漏えいが疑われる場合は登録先からPublic Keyを削除し、新しいKey Pairへ交換する
- 共有端末では生成後にResetし、Download FolderやClipboardの残存も確認する
現行SSH鍵PageはThird-party Scriptを無効にし、鍵生成Moduleには外部送信・永続化処理がありません。ただし端末自体のMalware、Browser Extension、Screen Recording、Download FolderのBackup等まではToolから防げません。「Onlineなら絶対安全」とは判断せず利用環境も確認します。
一次資料で接続先とOpenSSHの仕様を確認する
- OpenBSD Manual:ssh-keygen(1)
- OpenBSD Manual:ssh-agent(1)
- GitHub Docs:Generating a new SSH key
- GitHub Docs:Adding a new SSH key
- GitHub Docs:Permission denied (publickey)
- MDN:SubtleCrypto.generateKey()
- MDN:SubtleCrypto.exportKey()
GitHubの手順はGitHub接続用、OpenSSH ManualはClient・Server共通の鍵操作用です。OS、Hosting Service、sshd Policyで手順が異なるため、接続先の現在の公式資料を優先します。
具体例:Work LaptopのKeyをGitHubへ追加する
CommentとGitHub Titleへwork-laptopを付けます。
複数端末がある場合も、GitHub一覧でどのKeyか識別できます。
- Ed25519生成
- Private保存
- Public Copy
- GitHub登録
- Agent追加
- ssh -T
成功MessageにGitHub User名が出るため、想定Accountか確認します。
よくある質問
- 生成した鍵はDevelopToolsのServerへ送信されますか?
- 現行SSH鍵PageはWeb Crypto APIでBrowser内生成し、鍵生成ModuleはNetwork送信やStorage保存を行いません。公開鍵Copyと鍵File Downloadは利用者の操作時だけ実行します。
- GitHubへPRIVATE KEYを登録しますか?
- いいえ。登録するのはssh-ed25519またはssh-rsaで始まるPUBLIC KEYです。BEGIN OPENSSH PRIVATE KEYで始まる秘密鍵は自分のClient端末だけで保持します。
- Passphrase付き秘密鍵を生成できますか?
- 現行ツールは暗号化なしOpenSSH Private Keyだけに対応します。Passphrase付きOpenSSH鍵が必要な場合はssh-keygen等を利用してください。