メインコンテンツへスキップ
見出し画像

GitHubのSSHが10月14日から変わる。RSA鍵3072ビット必須とssh-rsa廃止で確認すること

    2026年9月22日、GitHub Changelogで「Security improvements for SSH」が公開されました。GitHubへのSSH接続について、古い署名方式と鍵交換方式の削除、RSA鍵の最小サイズの引き上げ、耐量子の鍵交換方式の追加が予定されています。そのうちRSA鍵の要件は、2026年10月14日から有効になります。

    この記事では、Changelogと、GitHub・OpenSSHの公式ドキュメントをもとに、何が変わるのか、誰が影響を受けるのか、手元で何を確認すればよいのかを整理します。内容は2026年10月13日時点のものです。

    この記事が関係する人・関係しない人

    関係する人

    • SSHでGitHubに接続してGitを使っている人(リモートが git@github.com:... の形)

    • 2026年10月14日より後に、新しいRSAのSSH鍵をGitHubに登録する人(3072ビット以上が必要)

    • CIのランナーや、JSch・libssh2などを使うツールで、古いSSHクライアント・ライブラリを使っている人

    • GitHub Enterprise Serverで、認証なしのGitプロトコルを使っている人(削除はGHES 3.25から)

    関係しない人

    • Gitのリモートがすべて https:// で始まる人(Changelogで「影響はない」と明記されています)

    • Ed25519かECDSAの鍵だけを使っている人は、RSA関連の2点(3072ビットの要件と、ssh-rsa署名の削除)は関係しません

    自分が当てはまるかの確認方法

    リモートの形、持っている鍵の種類、OpenSSHのバージョン、GitHubへの接続を順に確認します。

    git remote -v            # git@github.com: なら SSH、https:// なら対象外
    ls -al ~/.ssh            # id_rsa.pub / id_ecdsa.pub / id_ed25519.pub のどれがあるか
    ssh -V                   # OpenSSHのバージョン(7.2p1 以上か)
    ssh -T git@github.com    # 接続の確認

    変更点は4つ

    • 新しいRSA鍵は3072ビット以上: 2026年10月14日より後にアップロードする新しいRSAのSSH鍵は、3072ビット以上が必要になります。署名用・認証用のどちらも対象です。128ビットセキュリティの要件に合わせた変更と説明されています

    • 署名方式 ssh-rsa(SHA-1)の削除: SHA-1を使うRSA署名は受け付けられなくなります。SHA-1を使う ssh-rsa-cert-v01@openssh.com 証明書も含みます

    • 鍵交換方式 diffie-hellman-group-exchange-sha256 の削除: 遅く、利用が少なく、将来の量子コンピューターで破られうる、という理由です

    • 耐量子の鍵交換 mlkem768x25519-sha256 の追加: github.com と、データレジデンシー付きのGitHub Enterprise Cloud(米国リージョンを除く)のSSHで使えるようになります

    All new RSA SSH keys uploaded after October 14, 2026 must be at least 3072 bits in size, both for signing and authentication.

    訳: 2026年10月14日より後にアップロードされる新しいRSAのSSH鍵は、署名用・認証用のどちらも、3072ビット以上でなければなりません。(GitHub Changelog「Security improvements for SSH」)

    スケジュール

    • 2026年10月14日: RSA鍵の新しいサイズ要件が有効に。mlkem768x25519-sha256 も有効化

    • 2026年11月4日: ssh-rsa 署名と diffie-hellman-group-exchange-sha256 の1回目のブラウンアウト(一時的に使えなくする期間)

    • 2026年12月9日: 2回目のブラウンアウト

    • 2027年1月13日: 2つとも削除

    GitHub Enterprise Server(GHES)では、削除はバージョン3.25から、mlkem768x25519-sha256 の追加は3.24からです。

    画像

    影響を受けるのは誰か

    対象は、SSHでGitを使っている場合(リモートが git@github.com:... の形)と、GHESで認証なしのGitプロトコルを使っている場合です。Changelogには、リモートが https:// で始まるなら影響はない、と明記されています。

    If your Git remotes start with https://, nothing here will affect you.

    訳: Gitのリモートが https:// で始まっているなら、ここに書いた内容の影響は受けません。(GitHub Changelog「Security improvements for SSH」)

    自分のリポジトリがどちらかは、次のコマンドで確認できます。

    git remote -v

    いちばん誤解しやすい点:「ssh-rsa」は2つの意味がある

    今回削除されるのは、署名方式としての ssh-rsa(RSA + SHA-1)です。鍵の種類としての ssh-rsa(公開鍵ファイルの先頭に書かれている文字列で、すべてのRSA鍵に付くもの)とは別物です。

    RSA鍵はどれもSHA-2で署名できるので、既存のRSA鍵を作り直す必要はありません。SSHクライアントが rsa-sha2-256 か rsa-sha2-512 で署名していれば、そのまま使えます。SHA-2に対応したクライアントの多くは、自動でこちらを選びます。

    You do not need to generate a new key, since all RSA keys are capable of signing with all hash algorithms.

    訳: すべてのRSA鍵はどのハッシュアルゴリズムでも署名できるので、新しい鍵を作る必要はありません。(GitHub Changelog「Security improvements for SSH」)

    また、3072ビットの要件は「10月14日より後にアップロードする新しい鍵」が対象です。すでに登録済みのRSA鍵の扱いについて、Changelogでは作り直しを求めていません。

    画像

    クライアントの最小バージョン

    Changelogでは、既定の設定のままRSA + SHA-2で署名できる最小バージョンとして、次が挙げられています。

    • OpenSSH: 7.2p1

    • JSch: 0.1.66(mwiede氏のフォーク版)

    • TeamCity: 2021.2.3

    • Go SSH: 0.16.0

    • libssh2: 1.11.0

    • PuTTY: 0.82

    手元のOpenSSHのバージョンは ssh -V で表示できます。CIのランナーや、JSchを使うJava系ツール、libssh2を使うツールなど、OpenSSH以外のSSH実装が入っている環境は見落としやすいので、合わせて確認しておくと安心です。どうしても更新できない場合は、Ed25519かECDSAの鍵に切り替える方法が案内されています。サポートされているEd25519とECDSAの鍵は、今後も使い続けられるとされています。

    手元で確認する手順

    1. どの鍵を持っているか

    ls -al ~/.ssh

    GitHub Docsでは、既定の公開鍵ファイル名として id_rsa.pub、id_ecdsa.pub、id_ed25519.pub が挙げられています。id_ed25519.pub や id_ecdsa.pub を使っていれば、今回のRSA関連の変更は関係ありません。

    2. 使っているクライアントが対応している方式

    OpenSSHの ssh -Q で、対応しているアルゴリズムを一覧できます。

    ssh -Q sig   # 署名方式(rsa-sha2-256 / rsa-sha2-512 があるか)
    ssh -Q kex   # 鍵交換方式(mlkem768x25519-sha256 があるか)

    OpenSSHのマニュアル(ssh_config)では、KexAlgorithms の既定値の先頭が mlkem768x25519-sha256 で、PubkeyAcceptedAlgorithms の既定値には rsa-sha2-512 と rsa-sha2-256 が含まれ、ssh-rsa は含まれていません。~/.ssh/config でこれらを独自に書き換えている場合は、その設定を見直してください。

    3. 接続を試す

    ssh -T git@github.com

    成功すると「Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.」と表示されます(終了コードは1)。うまくいかないときは -v を付けると、接続の途中経過が表示されます。-v は最大3つまで重ねて詳しくできます。

    ssh -vT git@github.com

    11月4日と12月9日のブラウンアウトの日に接続が失敗するなら、古い署名方式か鍵交換方式に頼っている可能性があります。

    新しく鍵を作るとき

    GitHubが推奨しているのはEd25519です。GitHub Docsの手順は次のとおりです。

    ssh-keygen -t ed25519 -C "your_email@example.com"

    Ed25519に対応していない環境向けに、GitHub Docsでは4096ビットのRSA鍵を作る手順も載っています。

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    OpenSSHの ssh-keygen は、-b を省略したときのRSA鍵の既定サイズが3072ビットです(最小は1024ビット)。古いスクリプトや社内手順に -b 2048 が残っていると、10月14日以降は作った鍵をGitHubに登録できません。手順書やセットアップスクリプトを一度検索しておくとよいでしょう。

    画像

    macOSでssh-agentとキーチェーンを使う場合、GitHub Docsでは ~/.ssh/config に次のように書く例が示されています(パスフレーズなしの鍵なら UseKeychain の行は不要)。

    Host github.com
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile ~/.ssh/id_ed25519
    eval "$(ssh-agent -s)"
    ssh-add --apple-use-keychain ~/.ssh/id_ed25519

    耐量子の鍵交換について

    mlkem768x25519-sha256 の追加では、利用者側の作業は不要とされています。この方式を優先するクライアントは自動で使い、対応していない古いクライアントは従来の鍵交換方式にフォールバックします。OpenSSHの既定設定では、この方式が鍵交換の第一候補になっています。

    まとめ

    • リモートが https:// なら影響なし。SSHの人が対象

    • 10月14日以降、新しく登録するRSA鍵は3072ビット以上。新規作成はEd25519がおすすめ

    • 既存のRSA鍵は作り直し不要。クライアントが rsa-sha2-256/512 で署名できればよい

    • SHA-1の ssh-rsa 署名と diffie-hellman-group-exchange-sha256 は、11月4日・12月9日のブラウンアウトを経て、2027年1月13日に削除

    • CIや古いツールに入っているSSH実装のバージョンも確認しておく

    日程や対象は変わる可能性があるので、最新の情報はGitHubの公式Changelogとドキュメントで確認してください。

    関連記事

    出典: GitHub Changelog「Security improvements for SSH」(2026年9月22日) https://github.blog/changelog/2026-09-22-security-improvements-for-ssh/ / GitHub Docs「Generating a new SSH key and adding it to the ssh-agent」 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent / GitHub Docs「Testing your SSH connection」 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection / GitHub Docs「Checking for existing SSH keys」 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys / OpenBSD manual: ssh-keygen(1) https://man.openbsd.org/ssh-keygen.1 、ssh(1) https://man.openbsd.org/ssh.1 、ssh_config(5) https://man.openbsd.org/ssh_config.5

    開発ツールの仕様変更・提供終了の情報を毎朝お届けしています。見逃したくない方は、フォローしてください。

     
     

    HARu

     
     
    バックエンドエンジニア。Claude・GitHub・ローカルLLMなど開発ツールの新機能や仕様変更を、公式ドキュメントをもとに日本語で整理しています。「自分に関係あるか」「何を直せばいいか」がすぐ分かる記事を毎朝更新。記事はClaudeと一緒に作っています。

    あなたへのおすすめ