GitHub is switching off SHA-1 SSH keys. Find out now whether yours is one of them.
The keys at risk are the old ones, on the machines nobody logs into, in the pipelines that have run untouched for three years. Those are also the ones that will fail loudest.
- Announced
- 22 September 2026
- 14 October 2026
- New RSA keys must be at least 3072 bits, signing and authentication
- 4 November 2026
- First brownout of ssh-rsa and diffie-hellman-group-exchange-sha256
- 9 December 2026
- Second brownout
- Final removal
- The changelog prints a date that predates its own brownouts, so treat it as unconfirmed
- Also on 14 October
- mlkem768x25519-sha256 enabled on github.com
What is being removed
GitHub is removing the ssh-rsa signature type, which means RSA keys signed with SHA-1, and the diffie-hellman-group-exchange-sha256 key exchange algorithm. This is not the same as removing RSA keys. An RSA key can be used with a modern SHA-2 signature algorithm, rsa-sha2-256 or rsa-sha2-512, and those are unaffected. What is going away is the SHA-1 signature variant.
The distinction matters because it means the answer to "am I affected" is not visible from looking at your key file. The same key can negotiate either signature type depending on what the client and server agree on, which is determined by your OpenSSH version and configuration, not by the key itself.
The dates
From 14 October 2026, all new RSA SSH keys uploaded to GitHub must be at least 3072 bits, for both signing and authentication. Existing keys are not retroactively rejected by this particular rule, but it does mean you cannot upload a replacement 2048-bit key after that date.
Two brownouts follow, on 4 November and 9 December 2026. A brownout is a deliberate temporary outage of the deprecated mechanism: connections relying on ssh-rsa fail for a window, then work again. It exists so you discover the problem on a date GitHub chose rather than on the date of final removal.
The changelog also lists a final removal date, but it prints a year that falls before the brownouts listed above it on the same page. That is almost certainly a publishing error, and we are not going to guess the intended year. Check the changelog itself before you rely on a final date.
One addition rather than a removal: the same 14 October date enables mlkem768x25519-sha256, a post-quantum key exchange, on github.com.
How to find out what you actually negotiate
Do not audit this from your laptop alone. Your laptop probably has a recent OpenSSH and will negotiate something modern without you ever knowing there was a question. The risk lives in the environments you do not interactively use.
Run a verbose SSH connection from each environment and read what it reports, rather than inferring from key types.
- Run ssh -v git@github.com from your CI image, not just your laptop, and read the negotiated server host key algorithm and key exchange
- Do the same on any deploy box, bastion, build agent or container image that clones over SSH
- Check older base images specifically. An image pinned to an old distribution release carries an old OpenSSH
- List repository deploy keys and organisation SSH keys and note the type and bit length of each
- Check any automation that uses a key generated years ago and has not been touched since, which is where 2048-bit RSA tends to survive
What to do about what you find
The simple answer for almost every case is to move to ed25519. It is smaller, faster, has no bit-length question to get wrong, and is supported everywhere GitHub is. Generate with ssh-keygen -t ed25519, add the new key, confirm it works, then remove the old one.
Where you genuinely need RSA, for example because some other system in the chain requires it, generate at 3072 bits or more so the key remains uploadable after 14 October.
Also worth doing while you are in there: deploy keys and organisation keys accumulate. An audit prompted by a deprecation is a good moment to delete the ones belonging to a former contractor, a retired CI system, or a project that shipped two years ago.
What to do
- 1Run ssh -v git@github.com from every CI image and deploy environment, not only your laptop.
- 2Rotate any key negotiating ssh-rsa, and any RSA key under 3072 bits, to ed25519.
- 3Upload replacement RSA keys before 14 October 2026 if you need them at 2048 bits for some other system, because after that date they will be refused.
- 4Diary 4 November 2026 as a fire drill and watch your pipelines that day.
- 5Delete deploy keys and organisation keys that no longer belong to anyone.
Common questions
Is GitHub removing RSA SSH keys?
No. It is removing the ssh-rsa signature type, which is RSA signed with SHA-1, and the diffie-hellman-group-exchange-sha256 key exchange. RSA keys using rsa-sha2-256 or rsa-sha2-512 are unaffected.
What changes on 14 October 2026?
All new RSA SSH keys uploaded to GitHub after that date must be at least 3072 bits, for both signing and authentication. The same date also enables the mlkem768x25519-sha256 post-quantum key exchange on github.com.
What is a brownout?
A deliberate temporary disabling of the deprecated mechanism, so affected users discover the problem before permanent removal. GitHub has scheduled brownouts on 4 November and 9 December 2026.
When is final removal?
The changelog states a date, but the year printed falls before the brownouts listed above it on the same page, which suggests a publishing error. We are not quoting a year for it. Check the GitHub changelog directly before relying on a final date.
How do I check which algorithm my machine uses?
Run ssh -v git@github.com from that environment and read the negotiated server host key algorithm and key exchange in the verbose output. The key file alone does not tell you, because the signature type is negotiated at connection time.
Sources
Read against the primary documentation rather than secondary coverage. Where a figure comes from a provider's own docs, it is quoted as published on 2026-09-25.
Related
More from Signals
Open the tool.
Ten production categories, three minutes, and a ranked list of what to fix first.
Check your own stack