11 августа 2026 вышел OpenSSH 10.5 (portable: 10.5p1). Это не «косметический» релиз: в нём три security-фикса (ssh-agent, ssh, sshd), несколько полезных новинок для FIDO и диагностики ключей, а portable-сборка теперь жёстко требует ECC в libcrypto, включая NISTP521. Официальный анонс: Announce: OpenSSH 10.5 released, полный changelog: openssh.com/txt/release-10.5.
OpenSSH — стандартный клиент и сервер для SSH 2.0 и SFTP на Linux, BSD и большинстве VPS. Если у вас есть удалённый доступ к серверу, деплой по SSH, agent forwarding или FIDO-ключи, этот релиз стоит прочитать внимательно, а не ждать, пока дистрибутив сам подтянет пакет.
Почему релиз вышел быстрее обычного
В заметке к релизу команда OpenSSH прямо пишет: за последнее время пришло много security-отчётов, в том числе из AI-моделей и с AI-помощью. Часть таких находок не подтверждается в реалистичной threat model, но часть — реальные баги. Отдельно отмечено, что баги, найденные AI, потом иногда независимо находят другие исследователи. Вывод для проекта: пока делают более частые релизы, чтобы фиксы доходили до пользователей быстрее, а не ждали «большого» окна.
Для администратора это значит простое правило: security-фиксам в OpenSSH имеет смысл уделять внимание сразу, а не «когда-нибудь при apt upgrade».
Несовместимое изменение: ECC обязателен в portable
Portable OpenSSH (то, что обычно собирают на Linux) теперь требует поддержку Elliptic Curve Cryptography в libcrypto, включая кривую NISTP521. Это есть в дефолтных сборках LibreSSL, OpenSSL, BoringSSL и AWS LC, которые OpenSSH поддерживает. Конфигурация --without-openssl этим требованием не затронута.
На практике пакеты из нормальных дистрибутивов (Ubuntu, Debian, RHEL и т.п.) уже идут с OpenSSL/LibreSSL, где ECC включён. Риск скорее у тех, кто собирает OpenSSH вручную на урезанном libcrypto или на кастомных embedded-сборках. Если у вас «голый» openssl без ECC — 10.5 portable просто не соберётся/не сойдётся по зависимостям так, как раньше.
Security: три фикса, которые важны на практике
1. ssh-agent: lock + session-bind
Исправлено взаимодействие между блокировкой агента и расширением session-bind@openssh.com (им помечают forwarded agents). Когда агент был заблокирован (locked), binding-запросы отклонялись. В результате операции, которые должны были оставаться только локальными, могли выполняться удалённо: в том числе добавление PKCS#11-токенов и использование ключей с destination restrictions. Репорт: sn0x-sharma.
Если вы пользуетесь agent forwarding, ssh-add -x / lock агента, PKCS#11 или ключами с ограничениями по хостам — это один из главных поводов обновиться. Сценарий не «каждый VPS с openssh-server», а инфраструктура с форвардом агента и жёсткими политиками на ключи.
2. ssh: use-after-free при remote forwarding + multiplexing
В клиенте закрыт потенциальный realloc use-after-free: если remote forwarding добавляют через локальный multiplexing-сокет (ControlMaster / ControlPath), пока на сервере ещё висит pending open remote forwarding. Репорт и фикс: Brian Mingus (Cognatory).
Затрагивает в первую очередь тех, кто активно крутит -R / RemoteForward поверх ControlPersist-сессий, а не «просто ssh user@host раз в день».
3. sshd: keyword restrict и tunnel forwarding
Ключевое слово restrict в authorized_keys теперь корректно применяется и к tunnel forwarding. Tunnel forwarding по умолчанию и так административно выключен, но если вы полагаетесь на restrict как на «жёсткий минимум прав» для ключа, поведение до 10.5 могло быть неполным. Репорт: Erichen, Institute of Computing Technology, Chinese Academy of Sciences.
Отдельных CVE-номеров в release notes 10.5 нет — в тексте релиза это блок Security без CVE ID. Не выдумывайте идентификаторы: смотрите upstream notes и advisory дистрибутива, когда пакеты доедут.
Новые возможности
FIDO: touch-required и verify-required в ssh-keygen
В ssh-keygen при сбросе passphrase приватного FIDO-ключа можно выставлять или снимать флаги touch-required и verify-required. Удобно, когда политика «касание / PIN / биометрия» меняется уже после генерации ключа, без пересоздания всего ключа с нуля.
Порядок FIDO-ключей при pubkey auth
Клиент ssh меняет порядок перебора сертификатов/ключей при pubkey authentication: сначала FIDO без user presence (без touch), в конце — FIDO с verify (PIN/биометрия). Идея простая: сначала низкофрикционные authenticator’ы, потом «дорогие» по UX. На машинах с несколькими ключами/сертификатами поведение логина может чуть измениться — это ожидаемо, не баг.
ssh -Z: что реально попробует клиент
Добавлен режим ssh -Z user@host: печатает ключи, которые будут опробованы для public key authentication, в том порядке, в каком их возьмёт клиент. Удобный инструмент отладки, когда «ключ есть, а ssh его не берёт», IdentityFile / CertificateFile / FIDO / agent перепутаны, или непонятен порядок после обновления.
ssh -Z user@example.com
Ожидаемый результат: список identity в порядке попыток, без установки полноценной сессии «ради проверки».
sshd-session в process title
sshd через setproctitle помечает post-authentication monitor как sshd-session. Мелочь, но в ps / мониторинге процессов проще отличить стадии сессии.
Bugfixes, на которые стоит глянуть
ssh-keyscan: чтение server banner стало non-blocking — один «залипший» хост меньше блокирует массовый keyscan.sshd: ошибки packet path черезsshpkt_fatal()— в логах больше контекста о peer (адрес, порт, пользователь).sshd: при UpdateHostKeys — не больше одной signature-операции на hostkey proof.- GSSAPI option names, сломанные рефакторингом servconf в 10.4 (bz3974).
- Проверка типа pubkey против allowed algorithms до разбора ключа от peer — часть parsing/verification убрана из pre-auth attack surface (предложение Christopher Paul Rohlf, Anthropic).
ChannelTimeoutиRekeyLimitснова применяются внутри Match-блоков sshd_config.- Portable:
PAMServiceNameснова разрешён внутри Match (сломан в 10.4, bz3987).
Что сделать на сервере
1. Проверить текущую версию
ssh -V # на сервере sshd -V 2>&1 # или dpkg -l openssh-server openssh-client 2>/dev/null rpm -q openssh-server openssh-clients 2>/dev/null
2. Обновить, когда пакет доедет в репозиторий
Debian/Ubuntu (когда 10.5 появится в security/backports/вашем зеркале; до этого версия в apt может быть ниже upstream):
sudo apt update apt-cache policy openssh-server openssh-client sudo apt install --only-upgrade openssh-client openssh-server ssh -V
После обновления сервера обычно достаточно reload/restart sshd. Не закрывайте текущую SSH-сессию до проверки, что новый sshd принимает новые подключения (второй терминал / console провайдера).
# Debian/Ubuntu: часто unit называется ssh, не sshd sudo systemctl reload ssh || sudo systemctl reload sshd sudo systemctl status ssh --no-pager || sudo systemctl status sshd --no-pager
Сборка из исходников (только если вы сами ведёте portable-сборку; проверьте checksums на openssh.com / зеркалах OpenBSD):
# пример: portable tarball 10.5p1 - сверяйте SHA256 из release notes # SHA256 (base64) openssh-10.5p1.tar.gz = 1E0oqDnqna+WnMaRUP3lmRCys5Nh2tgaO9bL0ZIY2xE=
3. Если пользуетесь agent forwarding и FIDO
- Обновите и клиент, и (где уместно) окружение с ssh-agent.
- Перепроверьте политику lock агента и destination restrictions после 10.5.
- На клиентах с несколькими FIDO-ключами прогоните
ssh -Z user@hostи убедитесь, что порядок попыток ожидаемый. - Ключи в
authorized_keysсrestrict: перечитайте man, если используете tunnel options — поведение restrict для tunnel forwarding теперь жёстче/корректнее.
Где обычно ломается
- Обновили только
openssh-clientна ноутбуке, а jump-host / bastion со старым ssh-agent forwarding оставили как есть. - Ждут «магического» CVE-номера в NVD, а в upstream security-блок уже есть без CVE.
- Кастомная сборка без ECC в libcrypto — portable 10.5 уже не «как раньше».
- Match-блоки в sshd_config: после 10.4 часть директив (GSSAPI, PAMServiceName, ChannelTimeout, RekeyLimit) вела себя криво — 10.5 чинит, но конфиг всё равно стоит прогнать через
sshd -t.
sudo sshd -t # при ошибке синтаксиса sshd не стартует «тихо» - сначала правка, потом reload
Вывод
OpenSSH 10.5 от 11 августа 2026 — security-oriented релиз с тремя важными фиксами (agent lock + session-bind, UAF в клиенте при remote forward + mux, restrict и tunnel forwarding), плюс FIDO-флаги, ssh -Z и ужесточение требования ECC в portable. Для обычного VPS с паролем/ключом без agent forwarding срочность средняя, но обновление по-прежнему разумный baseline. Для инфраструктуры с agent forwarding, PKCS#11, destination-restricted keys и FIDO — ставьте в очередь обновлений сразу, как только пакет появится в вашем дистрибутиве или у вас принята сборка из upstream.