# https://www.openssh.com/releasenotes.html#10.1p1 Future deprecation warning -------------------------- 将来の非推奨の警告 * A future release of OpenSSH will deprecate support for SHA1 SSHFP records due to weaknesses in the SHA1 hash function. SHA1 SSHFP DNS records will be ignored and ssh-keygen -r will generate only SHA256 SSHFP records. OpenSSH の将来のリリースでは SHA1 ハッシュ関数の弱点により SHA1 SSHFP レコードのサポートを廃止する。SHA1 SSHFP DNS レコードは 無視され、ssh-keygen -r は SHA256 SSHFP レコードのみを生成する。 The SHA256 hash algorithm, which has no known weaknesses, has been supported for SSHFP records since OpenSSH 6.1, released in 2012. SHA256 ハッシュアルゴリズムは既知の弱点がなく、2012年にリリースされた OpenSSH 6.1 以来、SSHFP レコードでサポートされている。 Potentially-incompatible changes -------------------------------- 潜在的に非互換な変更 * ssh(1): add a warning when the connection negotiates a non-post quantum key agreement algorithm. ssh(1): ポスト量子鍵合意アルゴリズム以外で接続がネゴシエイトしたら 警告を追加する。 This warning has been added due to the risk of "store now, decrypt later" attacks. More details at https://openssh.com/pq.html この警告は、「今保存して、後で復号する」攻撃のリスクに対応するために 追加された。詳細は https://openssh.com/pq.html を参照。 This warning may be controlled via a new WarnWeakCrypto ssh_config option, defaulting to on. This option is likely to control additional weak crypto warnings in the future. この警告は デフォルトが on の WarnWeakCrypto ssh_config 設定項目 によって制御できる。この設定項目は将来は弱い暗号の警告の制御 にも利用されるだろう。 * ssh(1), sshd(8): major changes to handling of DSCP marking/IPQoS ssh(1), sshd(8): DSCP マーキング/IPQos の扱いの大きな変更。 In both client and server the default DSCP (a.k.a IPQoS) values were revised and the way these values are used during runtime has changed. どちらのクライアントとサーバーでも、デフォルトの DSCP (別名 IPQoS) 値が改訂され、これらの値が実行時に使用される方法が変更された。 Interactive traffic is now assigned to the EF (Expedited Forwarding) class by default. This provides more appropriate packet prioritisation information for the intermediate network, such as wireless media (cf. RFC 8325). Non-interactive traffic will now use the operating system default DSCP marking. Both the interactive and non-interactive DSCP values may be overridden via the IPQoS keyword, described in ssh_config(5) and sshd_config(5). 対話的通信はデフォルトで EF (Expedited Forwarding) クラスに割り当て られる。これにより、無線環境などの中間ネットワークに対してより適切な パケット優先度情報が提供される (RFC 8325 を参照)。非対話的通信は OS のデフォルト DSCP マークを利用する。対話的および非対話的の両方の DSCP 値は ssh_config(5) と sshd_config(5) の IPQoS キーワードで 上書きできる。 The appropriate DSCP marking is now automatically selected and updated as needed over the course of a connection's lifetime. ssh(1) and sshd(8) will switch between the interactive and non-interactive IPQoS values depending on the type of SSH channels open at the time. For example, if an sftp session is using the connection alongside a shell session, then the non- interactive value will be used for the duration of the sftp. A connection which contains only interactive sessions is marked EF. 接続の過程で適切な DSCP マークが自動的に選択され、必要に応じて更新される。 ssh(1) と sshd(8) は、開いている SSH チャネルの種類に応じて対話的または 非対話的の IPQoS 値を切り替える。例えば、sftp セッションがシェルセッションと 並行して接続を使用している場合、sftp の期間中は非対話的の値が使用される。 対話的セッションのみを含む接続は EF とマークされる。 * ssh(1), sshd(8): deprecate support for IPv4 type-of-service (ToS) keywords in the IPQoS configuration directive. ssh(1), sshd(8): IPQoS 設定項目での IPv4 Type-of-Service (ToS) キーワードのサポートを廃止する。 Type of Service (ToS) was deprecated in the late nineties and replaced with the Differentiated Services architecture, which has significant advantages for operators because it offers more granularity. ToS (Type of Service) は90年代後半に廃止され、 Differentiated Services アーキテクチャに置き換えられた。 これはより細かな制御が可能という大きな利点がある。 OpenSSH switched its default IPQoS from ToS to DSCP values in 2018 (openssh-7.7). OpenSSH は2018年にデフォルト IPQoS を ToS から DSCP に切り替えた (openssh-7.7)。 IPQoS configurations with 'lowdelay', 'reliability', or 'throughput' will be ignored and will instead use the system default QoS settings. Additionally, a debug message will be logged about the deprecation with a suggestion to use DSCP QoS instead. IPQoS 設定で 'lowdelay'、'reliability'、'throughput' を利用する場合は 無視され、代わりにシステムのデフォルト QoS 設定が使用される。 さらに、非推奨である旨と DSCP QoS を使うよう提案するデバッグメッセージが 記録される。 * ssh-add(1): when adding certificates to an agent, set the expiry to the certificate expiry time plus a short (5 min) grace period. ssh-add(1): 証明書をエージェントに追加する際、有効期限を証明書の期限に 短い (5分) 猶予を加えたものに設定する。 This will cause the agent to automatically remove certificates shortly after they expire. A new ssh-add -N option disables this behaviour. これによりエージェントは証明書が期限切れとなった直後に自動的に削除 するようになる。新しい ssh-add -N オプションでこの挙動を無効化できる。 * All: remove experimental support for XMSS keys. This was never enabled by default. We expect to implement a new post-quantum signature scheme in the near future. All: XMSS 鍵の実験的サポートを削除。これはデフォルトで有効化された ことはなかった。近い将来、新しいポスト量子署名スキームを実装予定。 * ssh-agent(1), sshd(8): move agent listener sockets from /tmp to under ~/.ssh/agent for both ssh-agent(1) and forwarded sockets in sshd(8). ssh-agent(1), sshd(8): ssh-agent(1) と sshd(8) での転送されたソケットで エージェントリスナーソケットを /tmp から ~/.ssh/agent 配下に移動する。 This ensures processes that have restricted filesystem access that includes /tmp do not ambiently have the ability to use keys in an agent. これにより、/tmp にアクセス権を持つ制限付きプロセスがエージェントの 鍵を利用できてしまうことを防止する。 Moving the default directory has the consequence that the OS will no longer clean up stale agent sockets, so ssh-agent now gains this ability. デフォルトディレクトリを移動した結果、OS は古いエージェントソケットを 掃除しなくなるため、ssh-agent にこの機能を追加する。 To support $HOME on NFS, the socket path includes a truncated hash of the hostname. ssh-agent will, by default, only clean up sockets from the same hostname. $HOME が NFS 上にある場合をサポートするため、ソケットパスには ホスト名の切り詰めたハッシュが含まれる。ssh-agent はデフォルトで 同じホスト名のソケットのみを掃除する。 ssh-agent(1) gains some new flags: -U suppresses the automatic cleanup of stale sockets when it starts. -u forces a cleanup without keeping a running agent, -uu forces a cleanup that ignores the hostname. -T makes ssh-agent put the socket back in /tmp. ssh-agent(1) に新しいフラグを追加する: -U は起動時の古いソケット自動掃除を抑制。 -u は実行中のエージェントを残さず掃除だけ実行。 -uu はホスト名を無視して掃除。 -T はソケットを再び /tmp に置く。 Changes since OpenSSH 10.0 ========================== OpenSSH 10.0 からの変更点 This release contains a minor security fix as well as a number of feature improvements and bugfixes. このリリースには小さなセキュリティ修正と多数の機能改善およびバグ修正が含まれる。 Security ======== セキュリティ * ssh(1): disallow control characters in usernames passed via the commandline or expanded using %-sequences from the configuration file, and disallow \0 characters in ssh:// URIs. ssh(1): コマンドラインで渡されたり設定ファイルの %-シーケンスで展開された ユーザー名に制御文字を使用することを禁止し、ssh:// URI 内の \0 文字を禁止する。 If an ssh(1) commandline was constructed using usernames or URIs obtained from an untrusted source, and if a ProxyCommand that uses the %u expansion was configured, then it may be possible for an attacker to inject shell expressions that may be executed when the proxy command is started. もし ssh(1) コマンドラインが信頼できないソースから取得した ユーザー名や URI を使って構築され、%u 展開を使用する ProxyCommand が 設定されていた場合、攻撃者がプロキシコマンド起動時に実行される 可能性のあるシェル式を注入できる可能性がある。 We strongly recommend against using untrusted inputs to construct ssh(1) commandlines. 信頼できない入力を使って ssh(1) コマンドラインを構築することは 強く推奨しない。 This change also relaxes the validity checks in one small way: usernames supplied via the configuration file as literals (i.e. that have no % expansion characters) are not subject to these validity checks. This allows usernames that contain arbitrary characters to be used, but only via configuration files. This is done on the basis that ssh's configuration is trusted. この変更は有効性チェックを1点だけ緩和する: リテラルとして設定ファイルで 提供されたユーザー名 (つまり % 展開文字を含まないもの) This issue was reported by David Leadbeater. この問題は David Leadbeater によって報告された。 New features ------------ 新機能 ssh(1), sshd(8): add SIGINFO handlers to log active channel and session information. ssh(1), sshd(8): アクティブなチャネルとセッション情報をログに記録する SIGINFO ハンドラを追加する。 * sshd(8): when refusing a certificate for user authentication, log enough information to identify the certificate in addition to the reason why it was being denied. Makes debugging certificate authorisation problems a bit easier. sshd(8): ユーザー認証で証明書を拒否する際、なぜ拒否したかの理由に加えて 証明書を特定できる十分な情報をログに記録する。証明書認可のデバッグが 少し容易になる。 * ssh(1), ssh-agent(1): support ed25519 keys hosted on PKCS#11 tokens. ssh(1), ssh-agent(1): PKCS#11 トークン上の ed25519 鍵をサポートする。 * ssh(1): add a ssh_config(5) RefuseConnection option that, when encountered while processing an active section in a configuration terminates ssh(1) with an error message that contains the argument to the option. ssh(1): ssh_config(5) に RefuseConnection 設定項目を追加する。 アクティブなセクションの処理中にこの設定項目が検出された場合、 設定項目の引数を含むエラーメッセージ を出力して ssh(1) を終了する。 This may be useful for expressing reminders or warnings in config files, for example: これは設定ファイル内で注意喚起や警告を示すのに役立つ。例: Match host foo RefuseConnection "foo is deprecated, use splork instead" * sshd(8): make the X11 display number check relative to X11DisplayOffset. This will allow people to use X11DisplayOffset to configure much higher port ranges if they really want, while not changing the default behaviour. sshd(8): X11 ディスプレイ番号のチェックを X11DisplayOffset に相対化する。 これにより、本当にユーザーが必要としている場合に X11DisplayOffset を使って非常に広いポート範囲を設定できる ようになるが、デフォルトの挙動は変更していない。 * unit tests: the unit test framework now includes some basic benchmarking capabilities. Run with "make UNITTEST_BENCHMARK=yes" on OpenBSD or "make unit-bench" on Portable OpenSSH. ユニットテスト: フレームワークに簡易ベンチマーク機能を追加する。 OpenBSD では "make UNITTEST_BENCHMARK=yes"、Portable OpenSSH では "make unit-bench" で実行可能。 Bugfixes -------- バグ修正 * sshd(8): fix mistracking of MaxStartups process exits in some situations. At worst, this could cause all MaxStartups slots to fill and sshd to refuse new connections. sshd(8): 一部状況で MaxStartups プロセス終了を誤って追跡する不具合を修正する。 最悪の場合、すべての MaxStartups スロットが埋まり新規接続を拒否する。 * ssh(1): fix delay on X client startup when ObscureKeystrokeTiming is enabled. bz#3820 ssh(1): ObscureKeystrokeTiming 有効時に X クライアント起動が遅れる不具合を 修正する。bz#3820 * sshd(8): increase the maximum size of the supported configuration from 256KB to 4MB, which ought to be enough for anybody. Fail early and visibly when this limit is breached. bz3808 sshd(8): サポートする設定ファイルサイズの上限を 256KB から 誰にとっても十分な 4MB に拡張する。 この制限を超過した場合は即座にかつ明確に失敗する。bz3808 * sftp(1): avoid a fatal() when sftp tab-completes filenames that share common utf-8 characters that don't encode to a complete codepoint. sftp(1): 完全なコードポイントにエンコードされない共通の UTF-8 文字を 共有するファイル名を sftp がタブ補完する際に、fatal() を回避する。 * sshd(8): avoid a race condition when the sshd-auth process exits that could cause a spurious error message to be logged. sshd(8): sshd-auth プロセス終了時の競合状態を回避する。 誤ったエラーメッセージが記録されるのを防止する。 * sshd(8): log at level INFO when PerSourcePenalties actually blocks access to a source address range. Previously this was logged at level VERBOSE, which hid enforcement actions under default config settings. * sshd(8): PerSourcePenalties が実際にアドレス範囲をブロックした際、 INFO レベルでログ出力する。以前は VERBOSE で出力され、 デフォルト設定ではブロックされたことが見えなかった。 * sshd(8): GssStrictAcceptor was missing from sshd -T output; fix * sshd(8): sshd -T の出力に GssStrictAcceptor が欠落していた不具合を修正する。 * sshd(8): Make the MaxStartups and PerSourceNetBlockSize options first-match-wins as advertised. bz3859 * sshd(8): MaxStartups および PerSourceNetBlockSize オプションを ドキュメントどおり「最初にマッチしたものが優先」とする。bz3859 * ssh(1): fix an incorrect return value check in the local forward cancellation path that would cause failed cancellations not to be logged. * ssh(1): ローカル転送キャンセルの処理で誤った戻り値チェックがあり、 失敗したキャンセルがログに残らない不具合を修正する。 * sshd(8): make "Match !final" not trigger a second parsing pass of ssh_config (unless hostname canonicalisation or a separate "Match final" does). bz3843 * sshd(8): "Match !final" が 2回目の ssh_config 解析を起動しないよう修正する (ただしホスト名正規化や "Match final" がある場合を除く)。bz3843 * ssh(1): better debug diagnostics when loading keys. Will now list key fingerprint and algorithm (not just algorithm number) as well as making it explicit which keys didn't load. * ssh(1): 鍵読み込み時のデバッグ情報を改善する。アルゴリズム番号だけでなく フィンガープリントとアルゴリズムを出力し、読み込めなかった鍵を明示する。 * All: fix a number of memory leaks found by LeakSanitizer, Coverity and manual inspection. * All: LeakSanitizer、Coverity、手動検査で見つかった多数のメモリリークを修正する。 * sshd(8): Output the current name for PermitRootLogin's "prohibit-password" in sshd -T instead of its deprecated alias "without-password". bz#3788 * sshd(8): sshd -T で PermitRootLogin の 現在の名称である "prohibit-password" を出力する。非推奨の "without-password" は使わない。bz#3788 * ssh(1): make writing known_hosts lines more atomic by writing the entire line in one operation and using unbuffered stdio. * ssh(1): known_hosts の行を書き込む際、行全体を一度に unbuffered stdio で書き込むことでよりアトミックに書き込む。 Usually writes to this file are serialised on the "Are you sure you want to continue connecting?" prompt, but if host key checking is disabled and connections were being made with high concurrency then interleaved writes might have been possible. 通常このファイルへの書き込みは "Are you sure you want to continue connecting?" プロンプトで直列化されるが、ホスト鍵チェックが無効化されており、 高い並行性で接続が行われている場合、書き込みが入り組む可能性があった 。 Portability ----------- 移植性 * sshd(8): check the username didn't change during the PAM transactions. * sshd(8): PAM トランザクション中にユーザー名が変更されていないか確認する。 PAM modules can change the user during their execution, but this is not supported by sshd(8). If such a case was incorrectly configured by the system administrator, then sshd(8) could end up using a different username to the one authorised by PAM. PAMモジュールは実行中にユーザーを変更できるが、 sshd(8)ではこの機能はサポートしていない。 システム管理者が誤ってこのような設定を行った場合、sshd(8)は PAMによって認証されたユーザー名とは異なるユーザー名を使用する可能性がある。 * sshd(8): don't log audit messages with UNKNOWN hostname to avoid slow DNS lookups in the audit subsystem. * sshd(8): 監査サブシステムで UNKNOWN なホスト名による遅い DNS ルックアップを 回避するため、そのような監査メッセージをログに記録しないようにする。 * All: when making a copy of struct passwd, ensure struct fields are non-NULL. Android libc can return NULL pw_gecos, for example. * All: struct passwd をコピーする際、フィールドが非 NULL であることを保証する。 例えば、Android libc は NULL な pw_gecos を返すことがある。 * All: Remove status bits from OpenSSL >=3 version check. * All: OpenSSL >=3 のバージョンチェックからステータスビットを削除する。 * sshd(8), ssh(1): Use SSH_TUN_COMPAT_AF on FreeBSD. Otherwise tun forwarding from other OSes fails as soon as the first IPv6 message is sent by the other side (which is usually a Router Solicitation ICMPv6 message which is sent as soon as the interface is up). * sshd(8), ssh(1): FreeBSD で SSH_TUN_COMPAT_AF を使用する。 そうしないと、相手側が最初の IPv6 メッセージを送信した時点で tun 転送が失敗する(通常はインターフェース起動直後に 送信されるルーター要請 ICMPv6 メッセージ)。 * ssh(1), ssh-agent(8): check for nlist function presence before attempting to use it instead of relying on the presence of the nlist.h header. Mac OS X, for example, has the header but not the function in the 64bit libraries. * ssh(1)、ssh-agent(8): nlist.h ヘッダーの存在に頼るのではなく、 nlist 関数の存在を確認してから使用を試みる。例えば Mac OS X ではヘッダーは存在するが、関数は 64 ビットライブラリに存在しない。 * All: fill in missing system header files. * All: 不足しているシステムヘッダーファイルを補完する。 Create replacement header files inside openbsd-compat for common headers that are missing on a given platform. Usually these are just empty, but in some cases they'll include the equivalent file. This avoids having to wrap those includes in '#ifdef HAVE_FOO_H' and reduces the diff between Portable OpenSSH and OpenBSD. 特定のプラットフォームで欠落している共通ヘッダーファイルの 代替ヘッダーファイルを openbsd-compat 内に作成する。通常これらは空ファイルだが、 場合によっては同等のファイルをインクルードする。これにより、 それらのインクルードを '#ifdef HAVE_FOO_H' で囲む必要がなくなり、 Portable OpenSSH と OpenBSD 間の差分が減少する。 * sshd(8): handle futex_time64 properly in seccomp sandbox Previously we only allowed __NR_futex, but some 32-bit systems apparently support __NR_futex_time64. We had support for this in the sandbox, but because of a macro error only __NR_futex was allowlisted. * sshd(8): seccomp サンドボックスで futex_time64 を正しく処理する。 以前は __NR_futex のみ許可していたが、一部 32 ビットシステムは __NR_futex_time64 をサポートしているようだ。サンドボックス内では これに対応していたが、マクロエラーのため許可リストに __NR_futex のみが登録されていた。 * Add contrib/gnome-ssh-askpass4 for GNOME 40+ using the GCR API. * GNOME 40+ 用に GCR API を使用する contrib/gnome-ssh-askpass4 を追加する。 * sshd(8): let ga_init() fail gracefully if getgrouplist does. Apparently getgrouplist() can fail on OSX when passed a non-existent group name. Other platforms seem to return a group list consisting of the numeric gid passed to the function. bz3848 * sshd(8): getgrouplist が失敗した場合に ga_init() が適切に失敗するように修正する。 OSX では、存在しないグループ名を渡した場合に getgrouplist() が失敗する可能性がある。 他のプラットフォームでは、関数に渡された数値の gid のみで構成されるグループリストを返すようだ。bz3848 * ssh-agent(1): exit 0 from SIGTERM under systemd socket-activation, preventing a graceful shutdown of an agent via systemd from incorrectly marking the service as "failed". * ssh-agent(1): systemd ソケット起動下で SIGTERM による終了コード 0 を返すことで、 systemd 経由でのエージェントの正常なシャットダウンが妨げられ、 サービスが誤って「失敗」とマークされるのを防止する。 * build: wrap some autoconf macros in AC_CACHE_CHECK. * build: 一部 autoconf マクロを AC_CACHE_CHECK でラップする。 This allows skipping/overriding the OSSH_CHECK_CFLAG_COMPILE and OSSH_CHECK_CFLAG_LINK macros used to discover supported compiler or linker flags. E.g. これにより、例えば次のようにコンパイラやリンカのフラグを見付けるのに OSSH_CHECK_CFLAG_COMPILE や OSSH_CHECK_CFLAG_LINK マクロをスキップまたは 上書きできる。例: $ ./configure ossh_cv_cflag__fzero_call_used_regs_used=no [...] checking if cc supports compile flag -fzero-call-used-regs=used and linking succeeds... (cached) no