OpenSSH 10.1: Everything new in security, networking, and configuration

  • Warnings and support for post-quantum algorithms with WarnWeakCrypto.
  • QoS Review: DSCP by default, EF for interactive traffic, and ToS deprecation.
  • Operational hardening: Agent sockets in ~/.ssh/agent and input filters.
  • Practical improvements: SIGINFO, RefuseConnection, PKCS#11 Ed25519 and key bugfixes.

OpenSSH 10.1

Beyond the version label, OpenSSH 10.1 consolidates the path started with the 10 series: migration to post-quantum cryptography, QoS modernization with DSCP, and hardening of historically sensitive areas (agents, keys, registries, and parameter parsing). Below you'll find a thorough review of all the new features (with context where it adds value), as well as practical guidelines for adopting them without surprises.

The following is the list with the What's new in this version, also available in the official notes.

Release Highlights and Context

The official release of OpenSSH 10.1 (2025-10-06) highlights three axes: Preventive security against quantum cryptography, DSCP networks, and input sanitization. It also connects specific changes with a high operational impact: from agent socket routes to new diagnostic signs.

A key reminder of the project: A future release will ignore SHA‑1 based SSHFP logsWhile ssh-keygen -r now generates SSHFP fingerprints only with SHA‑256 by default, closing the door to weak hashes for DNSSEC and host key verification.

Non-Post-Quantum Cryptography Warning and New WarnWeakCrypto Option

OpenSSH 10.1 introduces a warning when the connection negotiates a key exchange that is not resistant to post-quantum attacksThe goal is to focus on the risk of "store now, decrypt later" and accelerate the transition in sensitive environments.

This behavior is controlled with WarnWeakCrypto (available in ssh_config), which is enabled by default. If you're doing a gradual migration or maintaining legacy hosts, You can selectively disable the warning with Match blocks. For example:

Match host unsafe.example.com WarnWeakCrypto no

Cryptography and state of the art: PQC, hybrids and SSHFP

In 10.0, the client switched to using by default mlkem768x25519‑sha256, a hybrid post-quantum algorithm that combines ML-KEM (KEM NIST FIPS 203) with X25519. This hybrid strategy ensures that even if a cryptanalytic breakthrough were to emerge on the PQ side, you wouldn't be worse off than with classic ECDH because the channel retains the strength of X25519.

With 10.1, in addition to the warning explained above, the transition is reinforced: OpenSSH will continue to ignore SSHFP with SHA‑1 in the future.; the tool ssh-keygen already issues SSHFP with SHA‑256 exclusively. Operationally, the recommended action is regenerate and publish SSHFP fingerprints in SHA‑256 for your hosts.

Frequently Asked Questions: Why insist now if quantum computers can't yet break SSH? Because attackers can capture today and decrypt tomorrow. Using post-quantum KEX already mitigates that vector. And if you're worried about the youth of PQ algorithms, remember that the hybrid modality maintains the classic security level as a base.

Network Modernization: DSCP/IPQoS and Traffic Prioritization

This release consolidates a deep QoS overhaul. On both client and server, Interactive traffic defaults to class EF (Expedited Forwarding), which helps reduce latencies on Wi‑Fi and congested media. Non-interactive traffic switches to using the system default DSCP mark, without raising priority.

In practice, both ssh(1) and sshd(8) change dynamically the brand used according to the type of channels present: if the same connection combines a shell and a sftp, the non-interactive transfer phase will use the non-interactive value during the operation and return to EF when appropriate. This is controlled by the key IPQoS en ssh_config y sshd_config.

Furthermore, Support for older IPv4 ToS is being withdrawn in the IPQoS option (lowdelay, throughput, reliability stop having effect). If you were still using them, migrates to DSCP nomenclature (e.g., ef, cs0, af11, etc.).

Input hardening: users, URIs, and expansions

In the security section, 10.1 fixes a subtle case where, if you built command lines with external data and at the same time used ProxyCommand with %r/%u expansions, an attacker could sneak in shell expressions. To mitigate this, ssh(1) now prohibits control characters in CLI-passed or expanded users, and also blocks the null character in URIs ssh://.

Compatibility Note: A validation point has been relaxed to avoid breaking legitimate cases. Literal usernames defined in configuration files (without %) expansions are exempt, on the basis that the local config is considered trusted.

Live signals and information: SIGINFO and visibility

Another practical debugging tip: ssh(1) and sshd(8) gain SIGINFO handlers that record the status of active channels and sessions. In production, this facilitates flow diagnostics, multiplexing, forwarding and X11 without the need to attach a debugger or invasively increase verbosity.

Along the same lines of transparency, when a certificate authentication fails, sshd now logs enough information to identify the certificate (as well as why it was denied). If you work with PKI and user/host certificates, this improvement greatly shortens resolution times.

ssh-agent and keys: sockets, sanitization, and PKCS#11

To prevent cross access in environments with restricted mounting of /tmp, the agent sockets (and those forwarded by sshd) self move from /tmp to ~/.ssh/agent. Thus, a process with limited permissions on /tmp no longer accidentally inherits the ability to sign with your keys from the agent.

This change has another derivative: before the OS could clean obsolete sockets, now ssh‑agent incorporates its own cleanup from old sockets. In addition, the agent adds new flags: -U y -u to control cleanliness at startup, -uu to ignore hostname on cleanup, and -T to force the historical location in /tmp if you really need it.

In the key plane, the client and the agent ED25519 hosted on PKCS#11 tokens are now supportedIf you rely on HSMs or cryptographic keys, you'll gain flexibility without sacrificing strength.

ssh‑add and certificates: self‑cleaning expiration

When you add certificates to the agent, Its expiration is now set with a grace period of 5 minutesThe idea is simple: allow transactions to be completed in the queue and then, delete the agent certificate automatically. If your flow demands total control, ssh‑add -N disable this behavior.

RefuseConnection: client-side controlled disconnects

There are scenarios where you are interested in aborting a connection from the client itself with a clear message (for example, operational redirects or deprecation notices). OpenSSH 10.1 adds RefuseConnection a ssh_config: if encountered while processing a hot section, the client terminates with an error and displays the text you have defined.

Code quality and live security

The team continues to clean up the codebase. 10.1 lists memory leaks fixed, atomia improvements when writing known_hosts with high attendance and several race conditions resolved in processes such as MaxStartups or X11 sessions.

A crypto cleaning note: support for XMSS is removed (experimental and never by default). Preparing the ground for post-quantum signature schemes more mature ones that will come in future versions.

Portability and ecosystem: PAM, FreeBSD, macOS, Android…

Portability changes affect many fronts: extra checks in PAM environments (such as ensuring that the user does not change during the process), integration improvements with FreeBSD (tun forwarding and compatibility), MacOS (robust detection of functions and headers) and Android (struct passwd with non-null fields).

Compatibility headers are also added for platforms without certain standard libraries, reducing the number of #ifdef dispersed. Finally, they are refined seccomp sandbox policies on Linux to cover syscalls like futex_time64 in 32‑bit, and support is added to AWS‑LC as an alternative to OpenSSL/LibreSSL.

QoS in Action: Practical Examples and IPQoS Migration

If you used the old ToS aliases (lowdelay, throughput...), now they will be ignored and you will see a debug message suggesting DSCP. The typical migration would be to go from IPQoS lowdelay a IPQoS ef for interactive sessions; if you also do heavy SFTP, you could define profiles by Match en ssh_config/sshd_config to separate traffic.

Remember that the engine automatically selects and updates It marks in real time based on open channels, so most of the work is already done for you by OpenSSH.

Installing OpenSSH 10.1 on Linux (source)

While distributions integrate the version, you can compile from the official source. Download the tarball from the project mirrors, unzip, and compile:

tar -xvf openssh-10.1.tar.gz

Enter the directory and configure prefixes and configuration routes if you need it. For example:

cd openssh-10.1 ./configure --prefix=/opt --sysconfdir=/etc/ssh

Compile and install as usual (depending on permissions, maybe with superuser):

make

make install

Enable OpenSSH on Windows with PowerShell

In modern Windows environments (Server 2019/Windows 10 1809+), You can install the OpenSSH client and server as system features. Check capacities and status:

Get-WindowsCapability-Online | Where-Object Name -like 'OpenSSH*'

Install the components as you need:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Start and enable the SSH server service, and check the inbound firewall rule:

Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' Get-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -ErrorAction SilentlyContinue

To connect from another Windows or Linux host, use the standard client: ssh dominio\usuario@servidor. On first access, accepts the host fingerprint and authenticate with your password.

Operational guide: diagnostics and good practices

For environments with user/host certificates, take advantage of improved logging of denials in sshd to debug CAs and extensions. If a session gets stuck or you suspect multiplexing, launches SIGINFO to the process of listing active channels without raising the global log level.

If you depend on agents, check where the sockets live now (~/.ssh/agent) and activate automatic cleaning in your deployment model. On shared or NFS workstations, consider using the agent flag to set hostname hashes in the path when necessary.

Most relevant bug fixes

In 10.1 they are solved Minor regressions in X11 when combined with heart rate mitigations (ObscureKeystrokeTiming), a case of MaxStartups' poor accounting that could flood slots, and the writing of known_hosts now it is done in atomic operations to avoid interleaved lines with high concurrency.

Other fixes improve diagnostics when loading keys, handling of config size limits (from 256KB to 4MB), audit output and exotic corner cases in local forwards and control sequences. In addition, messages and output from ssh -G y sshd -T.

Recommended migration checklist

This quick list It includes the tasks that the project itself suggests and what emerges from the changes:

  • Crypto: check that your KexAlgorithms allows hybrid PQ and generates new SSHFP in SHA‑256 with ssh-keygen -r.
  • QoS: check out IPQoS on client/server; migrate legacy ToS to DSCP; leverage EF for interactive sessions.
  • Agents: adapts scripts and variables to sockets under ~/.ssh/agent; values ​​automatic cleaning by the agent itself.
  • Large configs: If you generate bulk configs, the limit goes up to 4MB; apply it wisely and controls the validation.
  • Parsers: avoid building command lines from untrusted input; use config locals with literals when you have strange cases in usernames.

Those who manage mixed fleets will appreciate that 10.1 squeeze the security where it hurts the least (parsers, agents, warnings) and at the same time improve the daily experience (Dynamic QoS, SIGINFO, certificate logging). If you were already on 10.0, the transition is straightforward; if you're coming from 9.x, take the time to tune DSCP, regenerate SSHFP to SHA‑256, and enable hybrid KEXs to protect yourself from the quantum threat without sacrificing performance.

openssh
Related article:
OpenSSH 9.0 arrives with SFTP instead of scp, improvements and more