Tighter SSH and Git security on GitHub
GitHub’s Git Systems team is updating the security requirements for SSH key types, host keys, and the Git protocol itself. The changes target users connecting via SSH or git://; HTTPS remotes are unaffected. Most users should see little to no disruption, but those on older SSH clients will need to upgrade.
SSH key and algorithm changes
GitHub will no longer accept DSA keys. DSA provides only an 80-bit security level, which is considered weak by modern standards, and fewer than 0.3% of GitHub requests use it. The DSA host key is also being retired.
RSA keys remain supported, but with stricter requirements. Older Git clients often use RSA with SHA-1 signatures, which are insecure. New RSA keys added to GitHub after the change must use SHA-2 signatures (rsa-sha2-256 or rsa-sha2-512). Keys with a valid_after date before November 2, 2021, can continue using SHA-1 for now.
A few legacy SSH algorithms are also being dropped:
hmac-sha1message authentication code- All CBC ciphers:
aes256-cbc,aes192-cbc,aes128-cbc
These are known to be vulnerable to practical attacks, and nearly all clients already offer stronger alternatives.
New host keys
GitHub will add ECDSA and Ed25519 host keys, which are based on elliptic-curve cryptography and provide strong security with smaller key sizes. The new fingerprints are:
- ECDSA:
SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM - Ed25519:
SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
The host keys themselves will be distributed in advance via OpenSSH’s UpdateHostKeys extension, which cryptographically proves GitHub owns the new keys.
End of unauthenticated Git
The unencrypted git:// protocol will be disabled. It offers no integrity or authentication and is susceptible to tampering. It’s read-only on GitHub, and very few users rely on it.
Timeline and preparation
The changes take effect after November 1, 2021. If you’re using a standard Git client with OpenSSH, verify you’re on version 7.2 or newer with ssh -V. OpenSSH 6.5 or newer works for Ed25519 keys; 5.7 or newer for ECDSA. PuTTY users should upgrade to 0.75 or later.
Add this to your ~/.ssh/config to ease the transition:
Host github.com
UpdateHostKeys yes
If you use libgit2 or other code built on libssh2, use libssh2 1.9.0 or newer with an ECDSA key, since libssh2 doesn’t yet support RSA with SHA-2. The Go SSH client has the same limitation, so an Ed25519 key is recommended there.
Check your SSH keys for DSA (ssh-dss) and regenerate them as Ed25519 if needed. You can also run the verification script from GitHub’s repository to confirm your configuration.
For git:// users, update any remote URLs to start with ssh://, https://, or [email protected]. Use git remote -v to inspect your remotes and change any that still use git://.
Troubleshooting
If SSH fails after the change, you’re likely on an older operating system or SSH library. Run ssh -vvv [email protected] to see which algorithms your client negotiates. Clients on OpenSSH before 7.2 or PuTTY before 0.75 will need updates. CentOS 6 and Ubuntu 14.* ship with outdated OpenSSH and are end-of-life, so they’re unsupported.
What’s next
GitHub will continue monitoring RSA with SHA-1 usage. Once adoption declines, it will announce plans to deprecate it fully.



