GitHub tightens SSH and Git protocol security on Enterprise Server

GitHub is rolling out its Git protocol security hardening to GitHub Enterprise Server, starting with version 3.6. The changes, which mirror those already deployed on GitHub.com, tighten allowed cryptographic algorithms and key types for SSH, and disable the unencrypted Git protocol by default.

Administrators get some flexibility here: several of the restrictions are configurable, so you can choose a rollout that suits your environment. If your remotes use https://, the changes won't affect you at all.

What's being removed or restricted

The security updates touch four areas of SSH key handling and algorithm negotiation, plus the git:// transport:

  • All DSA keys will no longer be supported.
  • Newly added RSA keys will have to meet a minimum strength requirement to be accepted.
  • The HMAC-SHA-1 algorithm is being removed from the allowed list.
  • The unencrypted Git protocol is deprecated and will be off by default.

Additionally, Ed25519 host keys can be enabled by administrators. These changes apply to GitHub Enterprise Server 3.6 and affect users connecting through SSH or git:// only.

Why these algorithms are being phased out

The reasoning is straightforward: cryptography only stays secure when the algorithms and key lengths remain adequate against evolving threats. DSA and SHA-1 are considered legacy, with known weaknesses and shorter key lengths that make them easier to attack with modern hardware. The unencrypted Git protocol, meanwhile, lacks the privacy, integrity, and authenticity guarantees that SSH and HTTPS provide.

Configurable options for administrators

Unlike the GitHub.com rollout, GitHub Enterprise Server 3.6 makes several settings adjustable to accommodate different security postures:

  • The cut-off date for RSA keys using SHA-1 is configurable. By default, it's midnight August 1, 2022, UTC; RSA keys uploaded after that date must use SHA-2. If your environment is ready, you can also disable RSA with SHA-1 entirely.
  • Ed25519 host keys are not automatically used for production. Administrators must enable them explicitly to avoid host key warnings in non-OpenSSH clients.
  • The unencrypted Git protocol can be re-enabled if needed, though it defaults to off.

In every case, the defaults are secure; the options simply give you room to operate under different constraints.

Checking your setup before upgrading

If you're running GitHub Enterprise Server 3.4 or newer, you have a tool at hand to assess readiness. The ghe-find-insecure-git-operations utility scans log entries for use of insecure algorithms. It filters out entries where the client would automatically switch to a secure algorithm once the server configuration changes, so you only see flag-worthy activity.

Client compatibility should be fine if you're on OpenSSH 7.2p2 or later, PuTTY 0.75 or later, or a Go SSH client from March 15, 2022 onward — provided you're not using DSA client keys. Those are rare by now and haven't been a default option in any mainstream SSH client for more than a decade.

Most users on a current version of OpenSSH, whether from Git for Windows, macOS, or a Linux distro released in the last five years, should see no impact.

Looking ahead

GitHub plans to monitor usage of RSA with SHA-1 and the legacy Git protocol across its platforms, and will communicate plans for full deprecation as those numbers decline.