SSHMount Field Notes

Ed25519 or RSA in 2026?

“RSA is disabled” is not what happened. OpenSSH turned off one signature algorithm whose name only looks like it means RSA — and the difference decides whether your key needs replacing.

The short version. Generate Ed25519. If you already have an RSA key, it is probably still fine — what OpenSSH turned off in 2021 was the old ssh-rsa signature algorithm, not RSA keys. That distinction is the single most misunderstood thing about this topic, and it is why "my RSA key stopped working" and "RSA is insecure" are two different statements, only one of which is true.

Why did my RSA key suddenly stop working?

Almost certainly because the server is old, not because your key is. OpenSSH 8.8, released on 26 September 2021, disabled one specific signature algorithm by default. The release note gives the reason in its own words: "This release disables RSA signatures using the SHA-1 hash algorithm by default. This change has been made as the SHA-1 hash algorithm is cryptographically broken, and it is possible to create chosen-prefix hash collisions for <USD$50K". The algorithm switched off is named ssh-rsa, and the confusion begins with that name: it sounds like it means "RSA", but it means "RSA signed with SHA-1". The same RSA key can also be used with rsa-sha2-256 and rsa-sha2-512, which are not affected and are what any maintained server has been using for years.

A key is not an algorithm

An RSA key file on your disk does not have a hash algorithm baked into it. The hash is chosen at connection time, by negotiation between your client and the server. So when a connection fails with a message about no matching host key type or no acceptable signature algorithm, the thing that is too old is the software at one end of the connection, not the bytes in ~/.ssh/id_rsa. A server that can only do ssh-rsa is running an OpenSSH from before 2017 or an embedded SSH implementation that was never updated. That is worth knowing for its own sake: it tells you something about the machine you are logging into, and it is usually a bigger problem than the connection you are trying to make.

Which key type should I generate in 2026?

TypeStatusUse it?
ed25519 Supported since OpenSSH 6.5 (2014). Fixed size, fast, short public key. Yes — the default choice.
ed25519-sk Ed25519 backed by a FIDO2 security key. Requires the hardware to be present to authenticate. Yes, when you want the key to be unusable without a physical token.
rsa (3072-bit or more) Still fine as a key, provided both ends negotiate rsa-sha2-256 or rsa-sha2-512. Keep an existing one. Prefer Ed25519 for anything new.
ecdsa Works, and widely supported. Its curve constants have long attracted more distrust than Ed25519's. No strong reason to choose it over Ed25519.
dsa Gone. OpenSSH 9.8 (1 July 2024) "disables DSA by default at compile time"; OpenSSH 10.0 (9 April 2025) removed it, "completing the deprecation process that began in 2015". No. It is not an option any more.

The practical reason to prefer Ed25519 over RSA has less to do with strength than with predictability. An Ed25519 key is always the same size, so there is no decision to make and no way to accidentally generate something too small. The public key is short enough to paste into a single line without wrapping, which quietly removes a whole class of copy-paste failures when adding it to authorized_keys. And because support arrived in OpenSSH 6.5 in 2014, effectively every server you will meet in 2026 accepts it. The exceptions are the same ancient or embedded implementations that would have given you trouble anyway.

Generating one

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

The comment after -C is free text stored in the public key. Use something that identifies the machine rather than the person — you will be reading it later in a server's authorized_keys file, trying to work out which laptop a key belongs to so you can decide whether to remove it. "laptop-2026-work" answers that question. An email address, which is the conventional default, does not.

What if I genuinely have to reach an old server?

You can re-enable the old algorithm for that one host, and the OpenSSH project tells you how while making its opinion clear. The release note says it may be necessary to "selectively re-enable RSA/SHA1 to allow connection and/or user authentication via the HostkeyAlgorithms and PubkeyAcceptedAlgorithms options", and then adds: "We recommend enabling RSA/SHA1 only as a stopgap measure until legacy implementations can be upgraded or reconfigured with another key type (such as ECDSA or Ed25519)." Scope it to the host that needs it and nothing else. A global Host * block that re-enables SHA-1 signatures turns a single legacy exception into a permanent downgrade for every server you connect to.

Host legacy-box.internal
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa

The leading + matters. It adds the algorithm to the default list rather than replacing the list with just that one entry, which is what happens if you leave the plus out and is almost never what you want.

How do I find out what I already have?

List the fingerprints of every key in your .ssh directory and you get the type of each one in the output, in brackets at the end of the line. This is a better starting point than looking at filenames, because filenames lie: an id_rsa that someone regenerated years ago may not be RSA, and a key with no conventional name at all may be the one your server actually accepts. The same command run against a public key file tells you the fingerprint you can compare with what a server or a hosting provider has on record for you.

for k in ~/.ssh/*.pub; do ssh-keygen -l -f "$k"; done

If a key you rely on turns out to be RSA and the servers you use are current, there is no emergency. Rotating to Ed25519 is a good idea and not an urgent one. If a key turns out to be DSA, that is different: OpenSSH 10.0 removed the code, so it will stop working the moment either end is upgraded, and you should replace it now rather than discover the problem during an outage.

Disclosure. This site is published by OnePasswordManager Ltd, developers of the SSHMount app for macOS. Nothing on this page needs that app or any other: ssh-keygen ships with macOS. We name ourselves on every page because the alternative — a site about key handling that hides who wrote it — is exactly the thing you should not trust. How this site is run.

Sources

Every technical claim above is checked against one of these. Where a manual page is quoted, it is the copy shipped by the vendor named, not a third-party summary of it.

  1. OpenSSH 8.8 release notes — disabling RSA/SHA-1 signatures, 26 September 2021 — https://www.openssh.com/txt/release-8.8
  2. OpenSSH release notes — DSA disabled at compile time in 9.8, removed in 10.0 — https://www.openssh.com/releasenotes.html
  3. ssh-keygen(1), the manual page shipped with macOS — https://keith.github.io/xcode-man-pages/ssh-keygen.1.html