OpenSSH 10.3p1 がリリースされました

2 Apr, 2026 - 13 minutes

2026/04/02, OpenSSH 10.3p1 がリリースされました.

# https://www.openssh.com/releasenotes.html#10.3p1

Potentially-incompatible changes
--------------------------------

互換性がなくなる可能性がある変更

 * ssh(1), sshd(8): remove bug compatibility for implementations
   that don't support rekeying. If such an implementation tries to
   interoperate with OpenSSH, it will now eventually fail when the
   transport needs rekeying.

   ssh(1), sshd(8): 再鍵交換をサポートしない実装に対する
   バグ互換性を削除する。そのような実装が OpenSSH と相互運用しようとすると、
   トランスポートが再鍵交換を必要とする際に最終的に失敗するようになる。

 * sshd(8): prior to this release, a certificate that had an empty
   principals section would be treated as matching any principal
   (i.e. as a wildcard) when used via authorized_keys principals=""
   option. This was intentional, but created a surprising and
   potentially risky situation if a CA accidentally issued a
   certificate with an empty principals section: instead of being
   useless as one might expect, it could be used to authenticate as
   any user who trusted the CA via authorized_keys. [Note that this
   condition did not apply to CAs trusted via the sshd_config(5)
   TrustedUserCAKeys option.]

   sshd(8): このリリース以前は、空のプリンシパルセクションを持つ証明書は、
   authorized_keys の principals="" オプションを通じて使用された場合、
   任意のプリンシパルに一致する (つまりワイルドカードとして) 扱われていた。
   これは意図的なものだったが、CA が誤って空のプリンシパルセクションを持つ
   証明書を発行した場合に、予想外で潜在的にリスクのある状況を生み出した。
   予想されるように使用不能になるのではなく、authorized_keys を通じて
   CA を信頼するすべてのユーザーとして認証するために使用できた。
   [この条件は sshd_config(5) の TrustedUserCAKeys オプションを通じて
   信頼された CA には適用されなかったことに注意。]

   This release treats an empty principals section as never matching
   any principal, and also fixes interpretation of wildcard
   characters in certificate principals. Now they are consistently
   implemented for host certificates and not supported for user
   certificates.

   このリリースでは、空のプリンシパルセクションはどのプリンシパルにも
   一致しないものとして扱い、証明書プリンシパルにおけるワイルドカード文字の
   解釈も修正する。ホスト証明書では一貫して実装され、
   ユーザー証明書ではサポートされない。

 * ssh(1): the -J and equivalent -oProxyJump="..." options now
   validate user and host names for ProxyJump/-J options passed
   via the command-line (no such validation is performed for this
   option in configuration files). This prevents shell injection in
   situations where these were directly exposed to adversarial
   input, which would have been a terrible idea to begin with.
   Reported by rabbit.

   ssh(1): -J および同等の -oProxyJump="..." オプションは、
   コマンドラインで渡された ProxyJump/-J オプションのユーザー名と
   ホスト名を検証するようになった (設定ファイル内のこのオプションに対しては
   そのような検証は行われない)。これは、敵対的な入力に直接さらされた
   状況でのシェルインジェクションを防止する (そもそもひどいアイデアだが)。
   rabbit により報告。

Changes since OpenSSH 10.2
==========================

OpenSSH 10.2 からの変更点

This release contains some relatively minor security fixes as well
as a number of feature improvements and general bugfixes.

このリリースには比較的軽微なセキュリティ修正のほか、
多数の機能改善と一般的なバグ修正が含まれる。

Security
========

セキュリティ

 * ssh(1): validation of shell metacharacters in user names supplied
   on the command-line was performed too late to prevent some
   situations where they could be expanded from %-tokens in
   ssh_config. For certain configurations, such as those that use a
   "%u" token in a "Match exec" block, an attacker who can control
   the user name passed to ssh(1) could potentially execute arbitrary
   shell commands.  Reported by Florian Kohnhäuser.

   ssh(1): コマンドラインで指定されたユーザー名のシェルメタ文字の
   検証が遅すぎたため、ssh_config の %-トークンから展開される状況を
   防止できない場合があった。"Match exec" ブロックで "%u" トークンを
   使用する設定などでは、ssh(1) に渡されるユーザー名を制御できる
   攻撃者が任意のシェルコマンドを実行できる可能性があった。
   Florian Kohnhäuser により報告。

   We continue to recommend against directly exposing ssh(1) and
   other tools' command-lines to untrusted input. Mitigations such
   as this can not be absolute given the variety of shells and user
   configurations in use.

   ssh(1) やその他のツールのコマンドラインを信頼できない入力に
   直接さらすことは引き続き推奨しない。使用されているシェルやユーザー設定の
   多様性を考慮すると、このような緩和策は絶対的なものにはなり得ない。

 * sshd(8): when matching an authorized_keys principals="" option
   against a list of principals in a certificate, an incorrect
   algorithm was used that could allow inappropriate matching in
   cases where a principal name in the certificate contains a
   comma character. Exploitation of the condition requires an
   authorized_keys principals="" option that lists more than one
   principal *and* a CA that will issue a certificate that encodes
   more than one of these principal names separated by a comma
   (typical CAs stronly constrain which principal names they will
   place in a certificate). This condition only applies to user-
   trusted CA keys in authorized_keys, the main certificate
   authentication path (TrustedUserCAKeys/AuthorizedPrincipalsFile)
   is not affected. Reported by Vladimir Tokarev.

   sshd(8): 証明書内のプリンシパルリストに対して authorized_keys の
   principals="" オプションを照合する際、不正なアルゴリズムが使用されており、
   証明書内のプリンシパル名にカンマ文字が含まれる場合に不適切な照合が
   行われる可能性があった。この条件の悪用には、複数のプリンシパルを
   リストする authorized_keys の principals="" オプション *かつ*
   カンマで区切られた複数のプリンシパル名をエンコードする証明書を発行する
   CA が必要である (一般的な CA は証明書に配置するプリンシパル名を
   強く制約する)。この条件は authorized_keys 内のユーザーが信頼する
   CA キーにのみ適用され、メインの証明書認証パス
   (TrustedUserCAKeys/AuthorizedPrincipalsFile) は影響を受けない。
   Vladimir Tokarev により報告。

 * scp(1): when downloading files as root in legacy (-O) mode and
   without the -p (preserve modes) flag set, scp did not clear
   setuid/setgid bits from downloaded files as one might typically
   expect. This bug dates back to the original Berkeley rcp program.
   Reported by Christos Papakonstantinou of Cantina and Spearbit.

   scp(1): レガシー (-O) モードで root としてファイルをダウンロードする際、
   -p (モード保持) フラグが設定されていない場合、scp は通常期待される
   ように、ダウンロードしたファイルから setuid/setgid ビットを
   クリアしなかった。このバグは元の Berkeley rcp プログラムにまで遡る。
   Cantina および Spearbit の Christos Papakonstantinou により報告。

 * sshd(8): fix incomplete application of PubkeyAcceptedAlgorithms
   and HostbasedAcceptedAlgorithms with regard to ECDSA keys.
   Previously if one of these directives contains any ECDSA algorithm
   name (say "ecdsa-sha2-nistp384"), then any other ECDSA algorithm
   would be accepted in its place regardless of whether it was
   listed or not.  Reported by Christos Papakonstantinou of Cantina
   and Spearbit.

   sshd(8): ECDSA キーに関する PubkeyAcceptedAlgorithms と
   HostbasedAcceptedAlgorithms の不完全な適用を修正する。以前は
   これらのディレクティブのいずれかに ECDSA アルゴリズム名
   (例: "ecdsa-sha2-nistp384") が含まれている場合、リストされているか
   どうかに関係なく、他の ECDSA アルゴリズムがその代わりに
   受け入れられていた。
   Cantina および Spearbit の Christos Papakonstantinou により報告。

 * ssh(1): connection multiplexing confirmation (requested using
   "ControlMaster ask/autoask") was not being tested for proxy mode
   multiplexing sessions (i.e. "ssh -O proxy ..."). Reported by
   Michalis Vasileiadis.

   ssh(1): 接続多重化の確認 ("ControlMaster ask/autoask" で要求) が
   プロキシモードの多重化セッション (つまり "ssh -O proxy ...") に対して
   テストされていなかった。Michalis Vasileiadis により報告。

New features
------------

新機能

 * ssh(1), sshd(8): support IANA-assigned codepoints for SSH agent
   forwarding, as per draft-ietf-sshm-ssh-agent. Support for the new
   names is advertised via the EXT_INFO message. If a server offers
   support for the new names, then they are used preferentially.

   ssh(1), sshd(8): draft-ietf-sshm-ssh-agent に従い、SSH エージェント
   転送用の IANA 割り当てコードポイントをサポートする。新しい名前の
   サポートは EXT_INFO メッセージを通じて通知される。サーバーが新しい名前の
   サポートを提供する場合、それらが優先的に使用される。

   Support for the pre-standardisation "@openssh.com" extensions for
   agent forwarding remains supported.

   エージェント転送用の標準化前の "@openssh.com" 拡張の
   サポートは引き続き維持される。

 * ssh-agent(1): implement support for draft-ietf-sshm-ssh-agent
   "query" extension.

   ssh-agent(1): draft-ietf-sshm-ssh-agent の "query" 拡張の
   サポートを実装する。

 * ssh-add(1): support querying the protocol extensions via the
   agent "query" extension with a new -Q flag.

   ssh-add(1): 新しい -Q フラグでエージェントの "query" 拡張を通じて
   プロトコル拡張を照会するサポートを追加する。

 * ssh(1): support multiple files in a ssh_config RevokedHostKeys
   directive. bz3918

   ssh(1): ssh_config の RevokedHostKeys ディレクティブで
   複数のファイルをサポートする。 bz3918

 * sshd(8): support multiple files in a sshd_config RevokedKeys
   directive bz3918

   sshd(8): sshd_config の RevokedKeys ディレクティブで
   複数のファイルをサポートする。 bz3918

 * ssh(1): add a ~I escape option that shows information about the
   current SSH connection.

   ssh(1): 現在の SSH 接続に関する情報を表示する ~I エスケープ
   オプションを追加する。

 * ssh(1): add an "ssh -Oconninfo user@host" multiplexing command
   that shows connection information, similar to the ~I escapechar.

   ssh(1): ~I エスケープ文字と同様に接続情報を表示する
   "ssh -Oconninfo user@host" 多重化コマンドを追加する。

 * ssh(1): add an "ssh -O channels user@host" multiplexing command to
   get a running mux process to show information about what channels
   are currently open.

   ssh(1): 実行中の mux プロセスから現在開いているチャネルの
   情報を表示する "ssh -O channels user@host" 多重化コマンドを追加する。

 * sshd(8): add 'invaliduser' penalty to PerSourcePenalties, which is
   applied to login attempts for usernames that do not match real
   accounts. Defaults to 5s to match 'authfail' but allows
   administrators to block such attempts for longer if desired.

   sshd(8): PerSourcePenalties に 'invaliduser' ペナルティを追加する。
   これは実際のアカウントと一致しないユーザー名でのログイン試行に
   適用される。デフォルトは 'authfail' と一致する 5 秒だが、
   管理者が望む場合はそのような試行をより長くブロックできる。

 * sshd(8): add a GSSAPIDelegateCredentials option for the server,
   controlling whether it accepts delegated credentials offered by
   the client.  This option mirrors the same option in ssh_config.
   GHPR614

   sshd(8): サーバー用の GSSAPIDelegateCredentials オプションを追加する。
   クライアントが提供する委任された資格情報を受け入れるかどうかを制御する。
   このオプションは ssh_config の同オプションと対になる。
   GHPR614

 * ssh(1), sshd(8): support the VA DSCP codepoint in the IPQoS
   directive.

   ssh(1), sshd(8): IPQoS ディレクティブで VA DSCP コードポイントを
   サポートする。

 * sshd(8): convert PerSourcePenalties to using floating point time,
   allowing penalties to be less than a second. This is useful if you
   need to penalise things you expect to occur at >=1 QPS.

   sshd(8): PerSourcePenalties を浮動小数点の時間値を使うようにし、
   1 秒未満のペナルティを可能にする。これは 1 QPS 以上で発生すると
   予想されるものにペナルティを課す必要がある場合に有用である。

 * ssh-keygen(1): support writing ED25519 keys in PKCS8 format.
   GHPR570

   ssh-keygen(1): ED25519 キーを PKCS8 形式で書き込むサポートを追加する。
   GHPR570

 * Support the ed25519 signature scheme via libcrypto.

   libcrypto 経由で ed25519 署名スキームをサポートする。

Bugfixes
--------

バグ修正

 * sshd(8): make IPQoS first-match-wins in sshd_config, like other
   configuration directives. bz3924

   sshd(8): sshd_config で IPQoS を他の設定ディレクティブと同様に
   最初の一致が優先されるようにする。 bz3924

 * sshd(8): fix potential crash when MaxStartups is using a single
   argument (i.e. not using the MaxStartps x:y:z form) to a value
   below 10. bz3941

   sshd(8): MaxStartups が単一の引数を使用している場合
   (つまり MaxStartups x:y:z 形式ではない場合) に、値が 10 未満の
   ときの潜在的なクラッシュを修正する。 bz3941

 * sshd(8): fix a potential hang during key exchange if needed DH
   group values were missing from /etc/moduli.

   sshd(8): 必要な DH グループ値が /etc/moduli にない場合の
   鍵交換中の潜在的なハングを修正する。

 * ssh-agent(1): fix return values from extensions to be correct wrt
   draft-ietf-sshm-ssh-agent: extension requests should indicate
   failure using SSH_AGENT_EXTENSION_FAILURE rather than the generic
   SSH_AGENT_FAILURE error code. This allows the client to discern
   between "the request failed" and "the agent doesn't support this
   extension".

   ssh-agent(1): draft-ietf-sshm-ssh-agent に対して正しくなるよう
   拡張からの戻り値を修正する。拡張リクエストは汎用的な
   SSH_AGENT_FAILURE エラーコードではなく
   SSH_AGENT_EXTENSION_FAILURE を使用して失敗を示すべきである。
   これにより、クライアントは「リクエストが失敗した」のか
   「エージェントがこの拡張をサポートしていない」のかを区別できる。

 * ssh(1): use fmprintf for showing challenge-response name and info
   to preserve UTF-8 characters where appropriate. Prompted by GitHub
   PR#452.

   ssh(1): チャレンジレスポンスの名前と情報の表示に fmprintf を使用し、
   適切な場合に UTF-8 文字を保持する。GitHub PR#452 による。

 * scp(1): when uploading a directory using sftp/sftp (e.g. during a
   recursive transfer), don't clobber the remote directory
   permissions unless either we created the directory during the
   transfer or the -p flag was set. bz3925

   scp(1): sftp を使用してディレクトリをアップロードする場合
   (例: 再帰転送中)、転送中にディレクトリを作成した場合または
   -p フラグが設定されている場合を除き、リモートディレクトリの
   パーミッションを上書きしない。 bz3925

 * All: implement missing pieces of FIDO/webauthn signature support,
   mostly related to certificate handling and enable acceptance of this
   signature format by default.  bz3748 GHPR624 GHPR625

   All: FIDO/webauthn 署名サポートの欠落部分を実装する。
   主に証明書の処理に関連し、この署名形式のデフォルトでの
   受け入れを有効にする。 bz3748 GHPR624 GHPR625

 * sshd_config(5): make it clear that DenyUsers/DenyGroups overrides
   AllowUsers/AllowGroups. Previously we specified the order in which
   the directives are processed but it was ambiguous as to what
   happened if both matched.

   sshd_config(5): DenyUsers/DenyGroups が AllowUsers/AllowGroups を
   オーバーライドすることを明確にする。以前はディレクティブが処理される
   順序を指定していたが、両方が一致した場合に何が起こるかは曖昧だった。

 * ssh(1): don't try to match certificates held in an agent to
   private keys. This matching is done to support certificates that
   were loaded without their private key material, but is
   unnecessary for agent-hosted certificate which always have
   private key material available in the agent. Worse, this matching
   would mess up the request sent to the agent in such a way as to
   break usage of these keys when the key usage was restricted in
   the agent.  bz3752

   ssh(1): エージェントに保持されている証明書を秘密鍵と照合しようと
   しない。この照合は秘密鍵素材なしで読み込まれた証明書をサポートする
   ために行われるが、エージェントでホストされた証明書では常に秘密鍵素材が
   エージェントで利用可能であるため不要である。さらに、この照合は
   エージェントで鍵の使用が制限されている場合にエージェントに送信される
   リクエストを壊し、これらの鍵の使用を破壊する可能性があった。 bz3752

 * sftp(1): if editline has been switched to vi mode (i.e. via "bind
   -v" in .editrc), setup a keybinding so that command mode can be
   entered.

   sftp(1): editline が vi モードに切り替えられている場合
   (例: .editrc の "bind -v")、コマンドモードに入れるように
   キーバインドを設定する。

 * ssh(1), sshd(8): improve performance of keying the sntrup761 key
   agreement algorithm.

   ssh(1), sshd(8): sntrup761 鍵合意アルゴリズムの処理性能を改善する。

 * ssh(1), sshd(8): enforce maximum packet/block limit during
   pre-authentication phase.

   ssh(1), sshd(8): 認証前フェーズ中に最大パケット/ブロック制限を
   強制する。

 * sftp(1): don't misuse the sftp limits extension's open-handles
   field. This value is supposed to be the number of handles a
   server will allow to be opened and not a number of outstanding
   read/write requests that can be sent during an upload/download.

   sftp(1): sftp limits 拡張の open-handles フィールドを誤用しない。
   この値はサーバーが開くことを許可するハンドル数であり、
   アップロード/ダウンロード中に送信できる未処理の
   読み取り/書き込みリクエスト数ではない。

 * sshd(8): don't crash at connection time if the main sshd_config
   lacks any subsystem directive but one is defined in a Match block.
   bz3906

   sshd(8): メインの sshd_config に subsystem ディレクティブがないが
   Match ブロックで定義されている場合に、接続時にクラッシュしない。
   bz3906

 * sshd_config(5): add a warning next to the ForceCommand directive
   that forcing a command doesn't automatically disable forwarding.

   sshd_config(5): ForceCommand ディレクティブの隣に、コマンドの
   強制は自動的にフォワーディングを無効にしないという警告を追加する。

 * sshd_config(5): add a warning that TOKENS are replaced without
   filtering or escaping and that it's the administrator's
   responsibility to ensure they are used safely in context.

   sshd_config(5): TOKENS はフィルタリングやエスケープなしに
   置換されるため、コンテキスト内で安全に使用されることを確認するのは
   管理者の責任であるという警告を追加する。

 * scp(1): correctly quote filenames in verbose output for local->
   local copies. bz3900

   scp(1): ローカル間コピーの詳細出力でファイル名を正しく
   クォートする。 bz3900

 * sshd(8): don't mess up the PerSourceNetBlockSize IPv6 mask if
   sscanf didn't decode it. GHPR598

   sshd(8): sscanf がデコードしなかった場合に
   PerSourceNetBlockSize の IPv6 マスクを壊さない。 GHPR598

 * ssh-add(1): when loading FIDO2 resident keys, set the comment to
   the FIDO application string. This matches the behaviour of
   ssh-keygen -K. GHPR608

   ssh-add(1): FIDO2 レジデントキーを読み込む際、コメントを
   FIDO アプリケーション文字列に設定する。これは ssh-keygen -K の
   動作と一致する。 GHPR608

 * sshd(8): don't strnvis() log messages that are going to be logged
   by sshd-auth via its parent sshd-session process, as the parent
   will also run them though strnvis(). Prevents double-escaping of
   non-printing characters in some log messages. bz3896

   sshd(8): sshd-auth が親の sshd-session プロセスを通じてログに記録する
   メッセージに strnvis() を適用しない。親も strnvis() を実行するため
   である。一部のログメッセージで非印字文字の二重エスケープを防止する。
   bz3896

 * ssh-agent(1): escape SSH_AUTH_SOCK paths that are sent to the
   shell as setenv commands. Unbreaks ssh-agent for home directory
   paths that contain whitespace. bz3884

   ssh-agent(1): シェルに setenv コマンドとして送信される
   SSH_AUTH_SOCK パスをエスケープする。空白を含むホームディレクトリ
   パスでの ssh-agent を修正する。 bz3884

 * All: Remove unnecessary checks for ECDSA public key validity.

   All: ECDSA 公開鍵の有効性の不要なチェックを削除する。

 * sshd(8): activate UnusedConnectionTimeout only after the last
   channel has closed. Previously UnusedConnectionTimeout could fire
   early after a ChannelTimeout. This was not a problem for the
   OpenSSH client because it terminates once all channels have
   closed but could cause problems for other clients (e.g. API
   clients) that do things differently.  bz3827

   sshd(8): 最後のチャネルが閉じた後にのみ UnusedConnectionTimeout を
   アクティブにする。以前は ChannelTimeout の後に
   UnusedConnectionTimeout が早期に発火する可能性があった。これは
   OpenSSH クライアントではすべてのチャネルが閉じると終了するため
   問題ではなかったが、異なる動作をする他のクライアント
   (例: API クライアント) では問題を引き起こす可能性があった。 bz3827

 * All: fix PKCS#11 key PIN entry problems introduced in
   openssh-10.1/10.2.  bz3879

   All: openssh-10.1/10.2 で導入された PKCS#11 キーの PIN 入力問題を
   修正する。 bz3879

 * scp(1): when using the SFTP protocol for transfers, fix implicit
   destination path selection when source path ends with "..". bz3871

   scp(1): SFTP プロトコルを使用した転送で、ソースパスが ".." で
   終わる場合の暗黙の宛先パス選択を修正する。 bz3871

 * sftp(1): when tab-completing a filename, ensure that the completed
   string does not end up mid-way through a multibyte character, as
   this will cause a fatal() later on. GHPR#587

   sftp(1): ファイル名のタブ補完時に、補完された文字列がマルチバイト文字の
   途中で終わらないようにする。そうでないと後で fatal() が発生する。
   GHPR#587

 * ssh-keygen(1): fix crash at exit (visible via ssh-keygen -D) when
   multiple keys loaded.

   ssh-keygen(1): 複数のキーが読み込まれている場合の終了時の
   クラッシュを修正する (ssh-keygen -D で顕在化する)。

 * scp(1)/sftp(1): correctly display bandwidths >2GBps in the
   progress meter.

   scp(1)/sftp(1): プログレスメーターで 2GBps を超える帯域幅を
   正しく表示する。

Portability
-----------

移植性

 * sshd(8): fix condition intoduced in openssh 10.2p1 stable branch
   here a PAM module that changed the requested username between
   SSH_MSG_USERAUTH_REQUEST messages during authentication could
   confuse the PAM stack and let it proceed with a different
   understanding of the active username than the rest of sshd.
   Reported by Mike Damm.

   sshd(8): openssh 10.2p1 安定版ブランチで導入された、認証中に
   SSH_MSG_USERAUTH_REQUEST メッセージ間で要求されたユーザー名を変更する
   PAM モジュールが PAM スタックを混乱させ、sshd の残りの部分とは
   異なるアクティブユーザー名の理解で処理を続行させる可能性がある
   状態を修正する。Mike Damm により報告。

 * sshd(8): immediately report interactive instructions to clients
   when using keyboard-interactive authentication with PAM. bz2876

   sshd(8): PAM を使用したキーボードインタラクティブ認証時に、
   インタラクティブな指示をクライアントに即座に報告する。 bz2876

 * sshd(8): fix duplicate PAM messages under some situations.

   sshd(8): 一部の状況で PAM メッセージが重複する問題を修正する。

 * sshd(8): don't leak PAM handle on repeat invocations. bz3882

   sshd(8): 繰り返しの呼び出しで PAM ハンドルをリークしない。 bz3882

 * All: support linking libcrypto implementations (e.g. BoringSSL)
   that require libstdc++.

   All: libstdc++ を必要とする libcrypto 実装
   (例: BoringSSL) のリンクをサポートする。

 * sshd(8): fix ut_type for btmp records, correctly using
   LOGIN_PROCESS and USER_PROCESS.

   sshd(8): btmp レコードの ut_type を修正し、LOGIN_PROCESS と
   USER_PROCESS を正しく使用する。

 * sshd(8): allow uname(3) in the seccomp sandbox. This is needed by
   zlib-ng on RISC-V platforms.

   sshd(8): seccomp サンドボックスで uname(3) を許可する。
   これは RISC-V プラットフォームの zlib-ng に必要である。

 * All: remove remaining OpenSSL_add_all_algorithms() calls.
   We already have OPENSSL_init_crypto() in the compat layer.
   Prompted by github PR#606

   All: 残りの OpenSSL_add_all_algorithms() 呼び出しを削除する。
   互換レイヤーに既に OPENSSL_init_crypto() がある。
   github PR#606 による。

 * All: fix builds on older Mac OS wrt nfds_t.

   All: nfds_t に関する古い Mac OS でのビルドを修正する。

 * mdoc2man: several improvements including better support for Dl
   and Ns inside Ic.

   mdoc2man: Ic 内の Dl と Ns のサポート改善を含むいくつかの改善。

OpenSSH 10.3 リリース準備中 / Call for testing: OpenSSH 10.3

29 Mar, 2026 - 9 minutes

OpenSSH 10.3 がリリース準備中です.

Call for testing: openssh-10.3

# https://lists.mindrot.org/pipermail/openssh-unix-dev/2026-March/042389.html

Potentially-incompatible changes
--------------------------------

互換性がなくなる可能性がある変更

 * ssh(1), sshd(8): remove bug compatibility for implementations
   that don't support rekeying. If such an implementation tries to
   interoperate with OpenSSH, it will now eventually fail when the
   transport needs rekeying.

   ssh(1), sshd(8): 鍵の再生成をサポートしない実装に対する
   バグ互換性を削除する。そのような実装が OpenSSH と相互運用しようとすると、
   トランスポートが鍵の再生成を必要とする際に最終的に失敗するようになる。

 * ssh(1), sshd(8): no longer treat an empty certificate principals
   section as wildcard. This behaviour was inconsistently supported
   (e.g. it wasn't supported via TrustedUserCAKeys) and dangerous in
   that it could cause a mistake by the CA as creating very powerful
   certificates.

   ssh(1), sshd(8): 空の証明書プリンシパルセクションをワイルドカードとして
   扱わないようにする。この動作は一貫してサポートされていなかった
   (例: TrustedUserCAKeys ではサポートされていなかった) し、
   CA のミスにより非常に強力な証明書が作成される可能性がある点で危険だった。

   This release also fixes interpretation of wildcard characters in
   certificate principals. Now they are consistently implemented for
   host certificates and not supported for user certificates.

   このリリースでは、証明書プリンシパルにおけるワイルドカード文字の
   解釈も修正する。ホスト証明書では一貫して実装され、
   ユーザー証明書ではサポートされなくなった。

Changes since OpenSSH 10.2
==========================

OpenSSH 10.2 からの変更点

New features
------------

新機能

 * ssh(1), sshd(8): support IANA-assigned codepoints for SSH agent
   forwarding, as per draft-ietf-sshm-ssh-agent. Support for the new
   names is advertised via the EXT_INFO message. If a server offers
   support for the new names, then they are used preferentially.

   ssh(1), sshd(8): draft-ietf-sshm-ssh-agent に従い、SSH エージェント
   転送用の IANA 割り当てコードポイントをサポートする。新しい名前の
   サポートは EXT_INFO メッセージを通じて通知される。サーバーが新しい名前の
   サポートを提供する場合、それらが優先的に使用される。

   Support for the pre-standardisation "@openssh.com" extensions for
   agent forwarding remain supported.

   エージェント転送用の標準化前の "@openssh.com" 拡張の
   サポートは引き続き維持される。

 * ssh-agent(1): implement support for draft-ietf-sshm-ssh-agent
   "query" extension.

   ssh-agent(1): draft-ietf-sshm-ssh-agent の "query" 拡張の
   サポートを実装する。

 * ssh-add(1): support querying the protocol extensions via the
   agent "query" extension with a new -Q flag.

   ssh-add(1): 新しい -Q フラグでエージェントの "query" 拡張を通じて
   プロトコル拡張を照会するサポートを追加する。

 * ssh(1): support multiple files in a ssh_config RevokedHostKeys
   directive. bz3918

   ssh(1): ssh_config の RevokedHostKeys ディレクティブで
   複数のファイルをサポートする。 bz3918

 * sshd(8): support multiple files in a sshd_config RevokedKeys
   directive bz3918

   sshd(8): sshd_config の RevokedKeys ディレクティブで
   複数のファイルをサポートする。 bz3918

 * ssh(1): add a ~I escape option that shows information about the
   current SSH connection.

   ssh(1): 現在の SSH 接続に関する情報を表示する ~I エスケープ
   オプションを追加する。

 * ssh(1): add an "ssh -Oconninfo user@host" multiplexing command
   that shows connection information, similar to the ~I escapechar.

   ssh(1): ~I エスケープ文字と同様に接続情報を表示する
   "ssh -Oconninfo user@host" 多重化コマンドを追加する。

 * ssh(1): add a "ssh -O channels user@host" multiplexing command to
   get a running mux process to show information about what channels
   are currently open.

   ssh(1): 実行中の mux プロセスから現在開いているチャネルの
   情報を表示する "ssh -O channels user@host" 多重化コマンドを追加する。

 * sshd(8): add 'invaliduser' penalty to PerSourcePenalties, which is
   applied to login attempts for usernames that do not match real
   accounts. defaults to 5s to match 'authfail' but allows
   administrators to block such attempts for longer if desired.

   sshd(8): PerSourcePenalties に 'invaliduser' ペナルティを追加する。
   これは実際のアカウントと一致しないユーザー名でのログイン試行に
   適用される。デフォルトは 'authfail' と一致する 5 秒だが、
   管理者が望む場合はそのような試行をより長くブロックできる。

 * sshd(8): add a GssDelegateCreds option for the server, controlling
   whether it accepts delgated credentials offered by the client.
   This option mirrors the GssDelegateCreds option in ssh_config.
   GHPR614

   sshd(8): サーバー用の GssDelegateCreds オプションを追加する。
   クライアントが提供する委任された資格情報を受け入れるかどうかを制御する。
   このオプションは ssh_config の GssDelegateCreds オプションと対になる。
   GHPR614

 * ssh(1), sshd(8): support the VA DSCP codepoint in the IPQoS
   directive.

   ssh(1), sshd(8): IPQoS ディレクティブで VA DSCP コードポイントを
   サポートする。

 * sshd(8): convert PerSourcePenalties to using floating point time,
   allowing penalties to be less than a second. This is useful if you
   need to penalise things you expect to occur at >=1 QPS.

   sshd(8): PerSourcePenalties を浮動小数点時間に変換し、
   1 秒未満のペナルティを可能にする。これは 1 QPS 以上で発生すると
   予想されるものにペナルティを課す必要がある場合に有用である。

 * ssh-keygen(1): support writing ED25519 keys in PKCS8 format.
   GHPR570

   ssh-keygen(1): ED25519 キーを PKCS8 形式で書き込むサポートを追加する。
   GHPR570

 * Support the ed25519 signature scheme via libcrypto.

   libcrypto 経由で ed25519 署名スキームをサポートする。

Bugfixes
--------

バグ修正

 * sshd(8): make IPQoS first-match-wins in sshd_config, like other
   configuration directives. bz3924

   sshd(8): sshd_config で IPQoS を他の設定ディレクティブと同様に
   最初の一致が優先されるようにする。 bz3924

 * sshd(8): fix a potential hang during key exchange if needed DH
   group values were missing from /etc/moduli.

   sshd(8): 必要な DH グループ値が /etc/moduli にない場合の
   鍵交換中の潜在的なハングを修正する。

 * ssh-agent(1): fix return values from extensions to be correct wrt
   draft-ietf-sshm-ssh-agent: extension requests should indicate
   failure using SSH_AGENT_EXTENSION_FAILURE rather than the generic
   SSH_AGENT_FAILURE error code. This allows the client to discern
   between "the request failed" and "the agent doesn't support this
   extension".

   ssh-agent(1): draft-ietf-sshm-ssh-agent に対して正しくなるよう
   拡張からの戻り値を修正する。拡張リクエストは汎用的な
   SSH_AGENT_FAILURE エラーコードではなく
   SSH_AGENT_EXTENSION_FAILURE を使用して失敗を示すべきである。
   これにより、クライアントは「リクエストが失敗した」のか
   「エージェントがこの拡張をサポートしていない」のかを区別できる。

 * ssh(1): use fmprintf for showing challenge-response name and info
   to preserve UTF-8 characters where appropriate. Prompted by github
   PR#452.

   ssh(1): チャレンジレスポンスの名前と情報の表示に fmprintf を使用し、
   適切な場合に UTF-8 文字を保持する。github PR#452 による。

 * scp(1): when uploading a directory using sftp/sftp (e.g. during a
   recursive transfer), don't clobber the remote directory
   permissions unless either we created the directory during the
   transfer or the -p flag was set. bz3925

   scp(1): sftp を使用してディレクトリをアップロードする場合
   (例: 再帰転送中)、転送中にディレクトリを作成した場合または
   -p フラグが設定されている場合を除き、リモートディレクトリの
   パーミッションを上書きしない。 bz3925

 * All: implement missing pieces of FIDO/webauthn signature support,
   mostly related to certificate handling and enable acceptance of this
   signature format by default.  bz3748 GHPR624 GHPR625

   All: FIDO/webauthn 署名サポートの欠落部分を実装する。
   主に証明書の処理に関連し、この署名形式のデフォルトでの
   受け入れを有効にする。 bz3748 GHPR624 GHPR625

 * sshd_config(5): make it clear that DenyUsers/DenyGroups overrides
   AllowUsers/AllowGroups. Previously we specified the order in which
   the directives are processed but it was ambiguous as to what
   happened if both matched.

   sshd_config(5): DenyUsers/DenyGroups が AllowUsers/AllowGroups を
   オーバーライドすることを明確にする。以前はディレクティブが処理される
   順序を指定していたが、両方が一致した場合に何が起こるかは曖昧だった。

 * ssh(1): don't try to match certificates held in an agent to
   private keys. This matching is done to support certificates that
   were loaded without their private key material, but is
   unnecessary for agent-hosted certificate which always have
   private key material available in the agent. Worse, this matching
   would mess up the request sent to the agent in such a way as to
   break usage of these keys when the key usage was restricted in
   the agent.  bz3752

   ssh(1): エージェントに保持されている証明書を秘密鍵と照合しようと
   しない。この照合は秘密鍵素材なしで読み込まれた証明書をサポートする
   ために行われるが、エージェントでホストされた証明書では常に秘密鍵素材が
   エージェントで利用可能であるため不要である。さらに、この照合は
   エージェントで鍵の使用が制限されている場合にエージェントに送信される
   リクエストを壊し、これらの鍵の使用を破壊する可能性があった。 bz3752

 * sftp(1): if editline has been switched to vi mode (i.e. via "bind
   -v" in .editrc), setup a keybinding so that command mode can be
   entered.

   sftp(1): editline が vi モードに切り替えられている場合
   (例: .editrc の "bind -v")、コマンドモードに入れるように
   キーバインドを設定する。

 * ssh(1), sshd(8): improve performance of keying the sntrup761 key
   agreement algorithm.

   ssh(1), sshd(8): sntrup761 鍵合意アルゴリズムの鍵生成
   パフォーマンスを改善する。

 * ssh(1), sshd(8): enforce maximum packet/block limit during
   pre-authentication phase.

   ssh(1), sshd(8): 認証前フェーズ中に最大パケット/ブロック制限を
   強制する。

 * sftp(1): don't misuse the sftp limits extension's open-handles
   field. This value is supposed to be the number of handles a
   server will allow to be opened and not a number of outstanding
   read/write requests that can be sent during an upload/download.

   sftp(1): sftp limits 拡張の open-handles フィールドを誤用しない。
   この値はサーバーが開くことを許可するハンドル数であり、
   アップロード/ダウンロード中に送信できる未処理の
   読み取り/書き込みリクエスト数ではない。

 * sshd(8): don't crash at connection time if the main sshd_config
   lacks any subsystem directive but one is defined in a Match block
   bz#3906.

   sshd(8): メインの sshd_config に subsystem ディレクティブがないが
   Match ブロックで定義されている場合に、接続時にクラッシュしない。
   bz3906

 * sshd_config(5): add a warning next to the ForceCommand directive
   that forcing a command doesn't automatically disable forwarding.

   sshd_config(5): ForceCommand ディレクティブの隣に、コマンドの
   強制は自動的にフォワーディングを無効にしないという警告を追加する。

 * sshd_config(5): add a warning that TOKENS are replaced without
   filtering or escaping and that it's the administrator's
   responsibility to ensure they are used safely in context.

   sshd_config(5): TOKENS はフィルタリングやエスケープなしに
   置換されるため、コンテキスト内で安全に使用されることを確認するのは
   管理者の責任であるという警告を追加する。

 * scp(1): correctly quote filenames in verbose output for local->
   local copies. bz3900

   scp(1): ローカル間コピーの詳細出力でファイル名を正しく
   クォートする。 bz3900

 * sshd(8): don't mess up the PerSourceNetBlockSize IPv6 mask if
   sscanf didn't decode it. GHPR598

   sshd(8): sscanf がデコードしなかった場合に
   PerSourceNetBlockSize の IPv6 マスクを壊さない。 GHPR598

 * ssh-add(1): when loading FIDO2 resident keys, set the comment to
   the FIDO application string. This matches the behaviour of
   ssh-keygen -K. GHPR608

   ssh-add(1): FIDO2 レジデントキーを読み込む際、コメントを
   FIDO アプリケーション文字列に設定する。これは ssh-keygen -K の
   動作と一致する。 GHPR608

 * sshd(8): don't strnvis() log messages that are going to be logged
   by sshd-auth via its parent sshd-session process, as the parent
   will also run them though strnvis(). Prevents double-escaping of
   non-printing characters in some log messages. bz3896

   sshd(8): sshd-auth が親の sshd-session プロセスを通じてログに記録する
   メッセージに strnvis() を適用しない。親も strnvis() を実行するため
   である。一部のログメッセージで非印字文字の二重エスケープを防止する。
   bz3896

 * ssh-agent(1): escape SSH_AUTH_SOCK paths that are sent to the
   shell as setenv commands. Unbreaks ssh-agent for home directory
   paths that contain whitespace. bz3884

   ssh-agent(1): シェルに setenv コマンドとして送信される
   SSH_AUTH_SOCK パスをエスケープする。空白を含むホームディレクトリ
   パスでの ssh-agent を修正する。 bz3884

 * All: Remove unnecessary checks for ECDSA public key validity.

   All: ECDSA 公開鍵の有効性の不要なチェックを削除する。

 * sshd(8): activate UnusedConnectionTimeout only after the last
   channel has closed. Previously UnusedConnectionTimeout could fire
   early after a ChannelTimeout. This was not a problem for the
   OpenSSH client because it terminates once all channels have
   closed but could cause problems for other clients (e.g. API
   clients) that do things differently.  bz3827

   sshd(8): 最後のチャネルが閉じた後にのみ UnusedConnectionTimeout を
   アクティブにする。以前は ChannelTimeout の後に
   UnusedConnectionTimeout が早期に発火する可能性があった。これは
   OpenSSH クライアントではすべてのチャネルが閉じると終了するため
   問題ではなかったが、異なる動作をする他のクライアント
   (例: API クライアント) では問題を引き起こす可能性があった。 bz3827

 * All: fix PKCS#11 key PIN entry problems introduced in
   openssh-10.1/10.2.  bz3879

   All: openssh-10.1/10.2 で導入された PKCS#11 キーの PIN 入力問題を
   修正する。 bz3879

 * scp(1): when using the SFTP protocol for transfers, fix implicit
   destination path selection when source path ends with "..". bz3871

   scp(1): SFTP プロトコルを使用した転送で、ソースパスが ".." で
   終わる場合の暗黙の宛先パス選択を修正する。 bz3871

 * sftp(1): when tab-completing a filename, ensure that the completed
   string does not end up mid-way through a multibyte character, as
   this will cause a fatal() later on. GHPR#587

   sftp(1): ファイル名のタブ補完時に、補完された文字列がマルチバイト文字の
   途中で終わらないようにする。そうでないと後で fatal() が発生する。
   GHPR#587

 * ssh-keygen(1): fix crash at exit (visible via ssh-keygen -D) when
   multiple keys loaded.

   ssh-keygen(1): 複数のキーが読み込まれている場合の終了時の
   クラッシュを修正する (ssh-keygen -D で顕在化する)。

Portability
-----------

移植性

 * sshd(8): immediately report interactive instructions to clients
   when using keyboard-interactive authentication with PAM. bz2876

   sshd(8): PAM を使用したキーボードインタラクティブ認証時に、
   インタラクティブな指示をクライアントに即座に報告する。 bz2876

 * sshd(8): fix duplicate PAM messages under some situations.

   sshd(8): 一部の状況で PAM メッセージが重複する問題を修正する。

 * sshd(8): don't leak PAM handle on repeat invocations. bz3882

   sshd(8): 繰り返しの呼び出しで PAM ハンドルをリークしない。 bz3882

 * All: support linking libcrypto implementations (e.g. BoringSSL)
   that required libstdc++.

   All: libstdc++ を必要とする libcrypto 実装
   (例: BoringSSL) のリンクをサポートする。

 * sshd(8): fix ut_type for btmp records, correctly using
   LOGIN_PROCESS and USER_PROCESS.

   sshd(8): btmp レコードの ut_type を修正し、LOGIN_PROCESS と
   USER_PROCESS を正しく使用する。

 * sshd(8): allow uname(3) in the seccomp sandbox. This is needed by
   zlib-ng on RISC-V platforms.

   sshd(8): seccomp サンドボックスで uname(3) を許可する。
   これは RISC-V プラットフォームの zlib-ng に必要である。

 * All: remove remaining OpenSSL_add_all_algorithms() calls.
   We already have OPENSSL_init_crypto() in the compat layer.
   Prompted by github PR#606

   All: 残りの OpenSSL_add_all_algorithms() 呼び出しを削除する。
   互換レイヤーに既に OPENSSL_init_crypto() がある。
   github PR#606 による。

 * All: fix builds on older Mac OS wrt nfds_t.

   All: nfds_t に関する古い Mac OS でのビルドを修正する。

 * mdoc2man: several improvements including better support for Dl
   and Ns inside Ic.

   mdoc2man: Ic 内の Dl と Ns のサポート改善を含むいくつかの改善。

2026/02 の学習のまとめ

16 Mar, 2026 - 1 minutes

近況: ある案件でフルタイムで稼働中ですが、場合によっては副業もやります。

イベント

計算機最適化勉強会(オンライン) - connpass自作OSで学ぶマイクロカーネルの設計と実装 - 秀和システム新社 あなたの学びをサポート!

輪読しています。

Cyber-sec+ Meetup vol.8 - connpass

参加しました。セキュリティチェックシートなどの話でした。 ビール以外の酒が足りないので、ビール以外の酒のスポンサーになります。

開発環境現状確認 2026

15 Jan, 2026 - 2 minutes

流行りに乗って書いてみる。

設定

haruyama/Settings にまとめている

OS

Ubuntu の最新版を利用している。現在は 25.10。メインの開発マシンとノートPCで利用している。

開発用ではないが法人での申請とかゲームとかのために Windows 11 のマシンも 1 つあり、いざとなれば開発用にも利用できる。

2025/12 の学習のまとめ

5 Jan, 2026 - 1 minutes

近況: ある案件でフルタイムで稼働中ですが、場合によっては副業もやります。

イベント

2025年と2026年の私、振り返り&抱負LT大会! - connpass

参加しました

Product Security Square #2 | GMO Flatt Security - connpass

参加しました

Goオンラインもくもく会 - connpass

毎回ではないですが参加しています。 最近は Go には関係ない プログラング言語Idrisに入門させたい(v0.9) をやっています。

OpenSSH 10.2p1 がリリースされました

10 Oct, 2025 - 11 minutes

2025/10/10, OpenSSH 10.2p1 がリリースされました.

# https://www.openssh.com/releasenotes.html#10.0p1

Potentially-incompatible changes
--------------------------------

潜在的に非互換な変更

 * This release removes support for the weak DSA signature
   algorithm, completing the deprecation process that began in
   2015 (when DSA was disabled by default) and repeatedly warned
   over the last 12 months.

   このリリースでは、弱いDSA署名アルゴリズムのサポートが削除されます。
   これは、2015年にデフォルトで無効化され、
   過去12か月間にわたり繰り返し警告されてきた非推奨プロセスの完了を意味する。

 * scp(1), sftp(1): pass "ControlMaster no" to ssh when invoked by
   scp & sftp. This disables implicit session creation by these
   tools when ControlMaster was set to yes/auto by configuration,
   which some users found surprising. This change will not prevent
   scp/sftp from using an existing multiplexing session if one had
   already been created. GHPR557

   scp(1), sftp(1): scp および sftp が ssh を呼び出す際に ControlMaster no を渡す。
   ControlMaster が yes/auto に設定されている場合に、これらのツールが暗黙的にセッションを作成しないようになる。
   この変更は、すでに作成済みの多重化セッションを scp/sftp が使用することは妨げない。GHPR557

 * This release has the version number 10.0 and announces itself
   as "SSH-2.0-OpenSSH_10.0". Software that naively matches
   versions using patterns like "OpenSSH_1*" may be confused by
   this.

   このリリースのバージョン番号は 10.0 であり、
   自身を "SSH-2.0-OpenSSH_10.0" として通知する。
   バージョンを "OpenSSH_1*" のようなパターンで
   単純に照合しているソフトウェアでは、
   問題が発生するかもしれない。

 * sshd(8): this release removes the code responsible for the
   user authentication phase of the protocol from the per-
   connection sshd-session binary to a new sshd-auth binary.
   Splitting this code into a separate binary ensures that the
   crucial pre-authentication attack surface has an entirely
   disjoint address space from the code used for the rest of the
   connection. It also yields a small runtime memory saving as the
   authentication code will be unloaded after the authentication
   phase completes. This change should be largely invisible to
   users, though some log messages may now come from "sshd-auth"
   instead of "sshd-session". Downstream distributors of OpenSSH
   will need to package the sshd-auth binary.

   sshd(8): このリリースでは、プロトコルのユーザー認証フェーズを処理するコードを、
   接続ごとの sshd-session バイナリから、新しい sshd-auth バイナリに移動する。
   このコードを別のバイナリに分離することで、重大な認証前の攻撃対象領域が
   接続の残りで利用されるコードから完全に別のアドレス空間を持つことを保証する。
   また、認証フェーズが完了したあとで認証コードがアンロードされるので、
   ランタイムのメモリ使用量も若干削減される。
   この変更はほとんどのユーザーにとっては目に見えませんが、
   一部のログメッセージが "sshd-session" ではなく "sshd-auth" から出力される場合がある。
   OpenSSH をパッケージ化する下流のディストリビューターは、sshd-auth バイナリを含める必要がある。

 * sshd(8): this release disables finite field (a.k.a modp)
   Diffie-Hellman key exchange in sshd by default. Specifically,
   this removes the "diffie-hellman-group*" and
   "diffie-hellman-group-exchange-*" methods from the default
   KEXAlgorithms list. The client is unchanged and continues to
   support these methods by default. Finite field Diffie Hellman
   is slow and computationally expensive for the same security
   level as Elliptic Curve DH or PQ key agreement while offering
   no redeeming advantages. ECDH has been specified for the SSH
   protocol for 15 years and some form of ECDH has been the default
   key exchange in OpenSSH for the last 14 years.

   sshd(8): このリリースでは、有限体(modp)Diffie-Hellman 鍵交換がデフォルトで無効化される。
   具体的には、diffie-hellman-group* および diffie-hellman-group-exchange-*
   のメソッドがデフォルトの KEXAlgorithms リストから削除される。
   クライアントは変更されず、これらのメソッドをデフォルトで引き続きサポートする。
   有限体 Diffie-Hellman は、同じセキュリティレベルの Elliptic Curve DH や PQ 鍵合意と比較して、
   速度が遅く、計算コストが高い一方で、特に優れた利点を持たない。
   ECDH は SSH プロトコルにおいて 15 年前から標準化されており、
   ECDH のいくつかの形式が OpenSSH では 14 年間デフォルトの鍵交換アルゴリズムとして採用されている。

 * sshd(8): this release removes the implicit fallback to compiled-
   in groups for Diffie-Hellman Group Exchange KEX when the moduli
   file exists but does not contain moduli within the client-
   requested range.  The fallback behaviour remains for the case
   where the moduli file does not exist at all. This allows
   administrators more explicit control over which DH groups will
   be selected, but can lead to connection failures if the moduli
   file is edited incorrectly. bz#2793

   sshd(8): このリリースで moduli ファイルが存在するが、クライアントが要求した範囲の
   moduli が含まれていない場合に、コンパイル済みのグループへフォールバックする機能が削除される。
   moduli ファイルがまったく存在しない場合には、フォールバック動作が維持される。
   これにより管理者は使用する Diffie-Hellman グループをより明確に制御できるが、
   moduli ファイルの編集を誤ると接続エラーの原因となる場合がある。bz#2793

Changes since OpenSSH 9.9
=========================

OpenSSH 9.9 からの変更点

This release contains a minor security fix as well as a number of
feature improvements and bugfixes.

このリリースにはマイナーなセキュリティ修正と数多くの特徴の改善、
バグ修正が含まれている。

Security
========

セキュリティ

* sshd(8): fix the DisableForwarding directive, which was failing
  to disable X11 forwarding and agent forwarding as documented.
  X11 forwarding is disabled by default in the server and agent
  forwarding is off by default in the client.

  sshd(8): DisableForwarding 設定項目がドキュメント通りに
  X11 転送とエージェント転送を無効にできていなかったのを修正する。
  サーバーで X11 転送はデフォルトで無効で、クライアントでエージェント転送は
  デフォルトで無効だ。

New features
------------

新機能

 * ssh(1): the hybrid post-quantum algorithm mlkem768x25519-sha256
   is now used by default for key agreement. This algorithm is
   considered to be safe against attack by quantum computers,
   is guaranteed to be no less strong than the popular
   curve25519-sha256 algorithm, has been standardised by NIST
   and is considerably faster than the previous default.

   ssh(1): ポスト量子ハイブリッドアルゴリズム mlkem768x25519-sha256 が
   鍵合意にデフォルトで利用される。このアルゴリズムは量子コンピュータによる
   攻撃に対して安全と考えられ、curve25519-sha256 よりも強度が低くなることが保証されていて、
   NIST によって標準化されており、以前のデフォルトよりも高速です。

 * ssh(1): prefer AES-GCM to AES-CTR mode when selecting a cipher
   for the connection. The default cipher preference list is now
   Chacha20/Poly1305, AES-GCM (128/256) followed by AES-CTR
   (128/192/256).

   ssh(1): 接続に使用する暗号方式として、AES-CTR よりも AES-GCM を優先する。
   デフォルトの暗号優先リストは Chacha20/Poly1305、AES-GCM (128/256)、
   AES-CTR (128/192/256) となる。

 * ssh(1): add %-token and environment variable expansion to the
   ssh_config SetEnv directive.

   ssh(1): ssh_config の SetEnv 設定項目で
   % トークンと環境変数の展開が追加される。

 * ssh(1): allow %-token and environment variable expansion in
   the ssh_config User directive, with the exception of %r and %C
   which would be self-referential. bz#3477

   ssh(1): ssh_config の User ディレクティブで % トークンと環境変数の展開が可能になる。
   ただし、自己参照となる %r および %C は除外される。bz#3477

 * ssh(1), sshd(8): add "Match version" support to ssh_config and
   sshd_config. Allows matching on the local version of OpenSSH,
   e.g. "Match version OpenSSH_10.*".

   ssh(1)、sshd(8): "Match version" のサポートが ssh_config および
   sshd_config に追加される。OpenSSH のローカルなバージョンに対して条件を設定できる。
   例えば "Match version OpenSSH_10.*"。

 * ssh(1): add support for "Match sessiontype" to ssh_config.
   Allows matching on the type of session initially requested,
   either "shell" for interactive sessions, "exec" for command
   execution sessions, "subsystem" for subsystem requests, such as
   sftp, or "none" for transport/forwarding-only sessions.

   ssh(1): "Match sessiontype" のサポートを追加する。
   最初にリクエストされたセッションのタイプに対して条件を設定できる。
   タイプには、インタラクティブなセッションに対する
   "shell"、 コマンド実行セッションに対する "exec", sftp のようなサブシステム要求
   に対する "subsystem"、トランスポート/転送のみのセッションに対する "none"
   がある。

 * ssh(1): add support for "Match command ..." support to
   ssh_config, allowing matching on the remote command as specified
   on the command-line.

   ssh(1): ssh_config で "Match command ..." をサポートする。
   コマンドラインで指定されたリモートコマンドに基づいて条件を設定できる。

 * ssh(1): allow 'Match tagged ""' and 'Match command ""' to match
   empty tag and command values respectively.

   ssh(1): 'Match tagged ""' および 'Match command ""' を許可する。
   それぞれ空のタグおよび空のコマンド値にマッチする。

 * sshd(8): allow glob(3) patterns to be used in sshd_config
   AuthorizedKeysFile and AuthorizedPrincipalsFile directives.
   bz2755

   sshd(8): sshd_config の AuthorizedKeysFile および AuthorizedPrincipalsFile
   設定項目で glob(3) パターンの使用を許可する。bz2755

 * sshd(1): support the VersionAddendum in the client, mirroring
   the option of the same name in the server; bz2745

   sshd(1): クライアントに VersionAddendum のサポートを追加し、
   サーバーの同名のオプションと対応させる。bz2745

 * ssh-agent(1): the agent will now delete all loaded keys when
   signaled with SIGUSR1. This allows deletion of keys without
   having access to $SSH_AUTH_SOCK.

   ssh-agent(1): SIGUSR1 シグナルを受信した際に、エージェントがロードされているすべての鍵を削除する。
   これにより $SSH_AUTH_SOCK へのアクセスなしに鍵を削除できる。

 * Portable OpenSSH, ssh-agent(1): support systemd-style socket
   activation in ssh-agent using the LISTEN_PID/LISTEN_FDS
   mechanism. Activated when these environment variables are set,
   the agent is started with the -d or -D option and no socket path
   is set. GHPR502

   移植版 OpenSSH, ssh-agent(1): ssh-agent で LISTEN_PID/LISTEN_FDS メカニズムを使用する 
   systemd スタイルのソケットアクティベーションをサポートする。
   これらの環境変数が設定され、エージェントが -d または -D オプション付きで起動され、
   ソケットパスが設定されていない場合に有効となる。GHPR502

 * ssh-keygen(1): support FIDO tokens that return no attestation
   data, e.g. recent WinHello. GHPR542

   ssh-keygen(1): FIDO トークンが証明データを返さない場合のサポートを追加する。
   例えば最近の WinHello。GHPR542

 * ssh-agent(1): add a "-Owebsafe-allow=..." option to allow the
   default FIDO application ID allow-list to be overridden.

   ssh-agent(1): "-Owebsafe-allow=..." オプションを追加する。
   デフォルトの FIDO アプリケーション ID の許可リストを上書きできる。

 * Add a work-in-progress tool to verify FIDO attestation blobs
   that ssh-keygen can optionally write when enrolling FIDO keys.
   This tool is available under regress/misc/ssh-verify-attestation
   for experimentation but is not installed by "make install".

   ssh-keygen で FIDO 鍵を登録する際にオプションで書き込める FIDO 証明データの検証を可能にする
   実験的なツールを追加する。このツールは regress/misc/ssh-verify-attestation にあり
   実験目的で利用できるが、"make install" ではインストールされない。

 * ssh-keygen(1): allow "-" as output file for moduli screening.
   GHPR393

   ssh-keygen(1): モジュラススクリーニングの出力ファイルとして "-" を許可する。
   GHPR393

Bugfixes
--------

バグ修正

 * sshd(8): remove assumption that the sshd_config and any configs
   it includes can fit in a (possibly enlarged) socket buffer.
   Previously it was possible to create a sufficiently large
   configuration that could cause sshd to fail to accept any
   connection. sshd(8) will now actively manage sending its config
   to the sshd-session sub-process.

   sshd(8): sshd_config およびそのインクルードされた設定ファイルが
   (拡張された場合でも) ソケットバッファに収まることを前提とする動作を削除する。
   以前は、shd が接続を受け付けられなくできる大きさの設定ファイルを作成
   することができた。
   sshd(8) は 今は sshd-session サブプロセスへの設定の送信を適切に管理する。

 * ssh(1): don't start the ObscureKeystrokeTiming mitigations if
   there has been traffic on a X11 forwarding channel recently.
   Should fix X11 forwarding performance problems when this setting
   is enabled. bz3655

   ssh(1): X11 フォワーディングチャネルで最近トラフィックがあった場合、
   ObscureKeystrokeTiming の緩和策を開始しないようにする。
   これにより、この設定が有効な場合の X11 フォワーディングの
   パフォーマンス問題を修正する。bz3655

 * ssh(1): prohibit the comma character in hostnames accepted, but
   allow an underscore as the first character in a hostname.

   ssh(1): 許可されるホスト名にカンマを含めることを禁止する。
   一方、ホスト名の先頭にアンダースコアを許可する。

 * sftp(1): set high-water when resuming a "put". Prevents bogus
   "server reordered acks" debug message.

   sftp(1): "put" の再開時にハイウォーターを設定する。
   これにより、不正な "server reordered acks" のデバッグメッセージを防ぐ。

 * ssh(1), sshd(8): fix regression in openssh-9.8, which would fail
   to accept "Match criteria=argument" as well as the documented
   "Match criteria argument" syntax in ssh_config and sshd_config.
   bz3739

   ssh(1), sshd(8): openssh-9.8 のリグレッションを修正し、
   ssh_config および sshd_config において "Match criteria=argument" 形式と、
   ドキュメントに記載されている "Match criteria argument" 形式の両方を受け付ける。
   bz3739

 * sftp(1), ssh(1): fix a number possible NULL dereference bugs,
   including Coverity CIDs 405019 and 477813.

   sftp(1), ssh(1): NULL デリファレンスが発生する可能性のあるバグをいくつか修正する。
   Coverity CIDs 405019 および 477813 を含む。

 * sshd(8): fix PerSourcePenalty incorrectly using "crash" penalty
   when LoginGraceTime was exceeded. bz3797

   sshd(8): PerSourcePenalty が LoginGraceTime を超えた場合に誤って 
   "crash" ペナルティを適用する問題を修正する。bz3797

 * sshd(8): fix "Match invalid-user" from incorrectly being
   activated in initial configuration pass when no other predicates
   were present on the match line

   sshd(8): "Match invalid-user" が、他の条件がない場合に最初の設定パスで誤って適用される問題を修正する。

 * sshd(8): fix debug logging of user specific delay. GHPR#552

   sshd(8): ユーザー固有の遅延のデバッグログを修正する。GHPR#552

 * sshd(8): improve debug logging across sub-process boundaries.
   Previously some log messages were lost early in the sshd-auth and
   sshd-session processes' life.

   sshd(8): サブプロセス間でのデバッグログの改善する。
   これにより、sshd-auth および sshd-session の初期に
   いくつかのログメッセージが失われていた問題を解消した。

 * ssh(1): require control-escape character sequences passed via
   the '-e ^x' command-line to be exactly two characters long. Avoids
   one byte out-of-bounds read if ssh is invoked as "ssh -e^ ..."
   GHPR368

   ssh(1): '-e ^x' のようなコマンドラインで渡されるコントロールエスケープ文字列が必ず2文字であることを要求する。
   これにより、"ssh -e^ ..." のような誤った入力による1バイトのバッファオーバーリードを防ぐ。GHPR368

 * ssh(1), sshd(8): prevent integer overflow in x11 port handling.
   These are theoretically possible if the admin misconfigured
   X11DisplayOffset or the user misconfigures their own $DISPLAY,
   but don't happen in normal operation. bz#3730

   ssh(1), sshd(8): x11 ポート処理における整数オーバーフローを防ぐ。
   これは、管理者が X11DisplayOffset を誤設定した場合や、
   ユーザーが $DISPLAY を誤設定した場合に理論的には発生する可能性があるが、
   通常の運用では起こらない。bz#3730

 * ssh-keygen(1): don't mess up ssh-keygen -l output when the file
   contains CR characters; GHPR236 bz3385.

   ssh-keygen(1): CR 文字を含むファイルで ssh-keygen -l
   の出力が乱れる問題を修正する。GHPR236 bz3385

 * sshd(8): add rate limits to logging of connections dropped by
   PerSourcePenalties. Previously these could be noisy in logs.

   sshd(8): PerSourcePenalties によって接続が拒否された際のログ出力に
   レート制限を追加する。これにより、ログが過剰に出力されるのを防ぐ。

 * ssh(1): fix argument of "Compression" directive in ssh -G config
   dump, which regressed in openssh-9.8.

   ssh(1): ssh -G の設定ダンプ時に Compression ディレクティブの引数が正しく出力されない問題を修正する。
   openssh-9.8 でのリグレッション。

 * sshd(8): fix a corner-case triggered by UpdateHostKeys when sshd
   refuses to accept the signature returned by an agent holding host
   keys during the hostkey rotation sub-protocol. This situation
   could occur in situations where a PKCS#11 smartcard that lacked
   support for particular signature algorithms was used to store
   host keys.

   sshd(8): UpdateHostKeys の際に、ホストキーのローテーション中にエージェントが返した署名を 
   sshd が拒否するコーナーケースを修正する。
   この問題は、特定の署名アルゴリズムをサポートしない
   PKCS#11 スマートカードをホストキーの保存に使用していた場合に発生する可能性があった。

 * ssh-keygen(1): when using RSA keys to sign messages with
   "ssh-keygen -Y", select the signature algorithm based on the
   requested hash algorithm ("-Ohashalg=xxx"). This allows using
   something other than the default of rsa-sha2-512, which may not
   be supported on all signing backends, e.g. some smartcards only
   support SHA256.

   ssh-keygen(1): "ssh-keygen -Y" で RSA 鍵を使用してメッセージに署名する際、
   要求されたハッシュアルゴリズム ("-Ohashalg=xxx") に基づいて適切な署名アルゴリズムを選択する。
   これにより、デフォルトの rsa-sha2-512 以外のアルゴリズムが選択可能となり、
   一部のスマートカードで SHA256 のみサポートされている場合でも使用できるようになる。

 * ssh(1), sshd(8), ssh-keyscan(1): fix ML-KEM768x25519 KEX on
   big-endian systems.

   ssh(1), sshd(8), ssh-keyscan(1): ビッグエンディアンシステムにおける
   ML-KEM768x25519 鍵交換 (KEX) の問題を修正する。

 * Many regression and interop test improvements.

   多くのリグレッションテストおよび相互運用性テストの改善う。

Portability
-----------

移植性

 * All: add support for AWS-LC (AWS libcrypto). bz3784

   全体: AWS-LC (AWS libcrypto) のサポートを追加する。bz3784

 * sshd(8): add wtmpdb support as a Y2038 safe wtmp replacement.

   sshd(8): wtmpdb のサポートを追加し、wtmp の Y2038 問題を回避できる代替機能を提供する。

 * sshd(8): add support for locking sshd into memory, enabled with
   the --with-linux-memlock-onfault configure flag.

   sshd(8): sshd をメモリ内にロックする機能を追加する。
   この機能は --with-linux-memlock-onfault 構成フラグを有効にすることで利用できる。

 * Add support for building a standalone sk-libfido2 library,
   enabled by --with-security-key-standalone

   sk-libfido2 ライブラリを単体でビルドする機能を追加する。
   この機能は --with-security-key-standalone オプションを有効にすることで利用できる。

 * ssh(1), sshd(8), ssh-keyscan(1): include __builtin_popcount
   replacement function. for compilers that lack it.

   ssh(1), sshd(8), ssh-keyscan(1): __builtin_popcount の代替関数を追加する。
   これにより、該当の組み込み関数をサポートしていないコンパイラでも利用できるようになる。

 * All: Check for and replace le32toh, le64toh, htole64 separately.
   It appears that at least some versions of endian.h in glibc do
   not have the latter two. bz#3794

   全体: le32toh, le64toh, htole64 のチェックと置換を個別に行う。
   一部の glibc の endian.h に le64toh や htole64 が含まれていない場合があるため。
   bz#3794

 * Remove ancient RHL 6.x config in RPM spec.

   RPM スペックから古い RHL 6.x の設定を削除する。