https://www.openssh.com/txt/release-8.7 Imminent deprecation notice =========================== 差し迫った廃止の通知 OpenSSH will disable the ssh-rsa signature scheme by default in the next release. OpenSSH は次のリリースで ssh-rsa 署名スキームをデフォルトで無効にする. In the SSH protocol, the "ssh-rsa" signature scheme uses the SHA-1 hash algorithm in conjunction with the RSA public key algorithm. It is now possible[1] to perform chosen-prefix attacks against the SHA-1 algorithm for less than USD$50K. SSH プロトコルで, "ssh-rsa" 署名スキームは RSA 公開鍵アルゴリズムと共に SHA-1 ハッシュアルゴリズムを利用する. USドル 50K より少ない金額で SHA-1 アルゴリズムに対する選択プレフィックス 攻撃が実行できることが [1] で示されている. Note that the deactivation of "ssh-rsa" signatures does not necessarily require cessation of use for RSA keys. In the SSH protocol, keys may be capable of signing using multiple algorithms. In particular, "ssh-rsa" keys are capable of signing using "rsa-sha2-256" (RSA/SHA256), "rsa-sha2-512" (RSA/SHA512) and "ssh-rsa" (RSA/SHA1). Only the last of these is being turned off by default. "ssh-rsa" 署名の無効化は RSA 鍵の利用の停止を必ずしも必要としない ことに注意. SSH プロトコルでは, 鍵は複数のアルゴリズムを用いて署名に利用 できる. 特に "ssh-rsa" 鍵は, "rsa-sha2-256" (RSA/SHA256) と "rsa-sha2-512" (RSA/SHA512), "ssh-rsa" (RSA/SHA1) を用いて署名可能だ. 最後のものだけがデフォルトで無効になる予定だ. This algorithm is unfortunately still used widely despite the existence of better alternatives, being the only remaining public key signature algorithm specified by the original SSH RFCs that is still enabled by default. このアルコリズムは, よりよい代替があるにもかかわらず もともとの SSH RFC で定義された公開鍵署名アルゴリズムのの中で ただ 1 つ残ったアルゴリズムとして, 不幸なことにいまだ広く用いられている. The better alternatives include: 次に示すものがよりよい代替だ: * The RFC8332 RSA SHA-2 signature algorithms rsa-sha2-256/512. These algorithms have the advantage of using the same key type as "ssh-rsa" but use the safe SHA-2 hash algorithms. These have been supported since OpenSSH 7.2 and are already used by default if the client and server support them. RFC8332 の RSA SHA-2 署名アルゴリズム rsa-sha-256/512. これらのアルゴリズムは "ssh-rsa" と同じ鍵タイプを用いる利点があり 安全な SHA-2 ハッシュアルゴリズムを用いている. これらは OpenSSH 7.2 以降でサポートされており, クライアントとサーバが サポートしているならすでにデフォルトで用いられている. * The RFC8709 ssh-ed25519 signature algorithm. It has been supported in OpenSSH since release 6.5. RFC8709 の ssh-ed25519 署名アルゴリズム. OpenSSH 6.5 以降でサポートされている. * The RFC5656 ECDSA algorithms: ecdsa-sha2-nistp256/384/521. These have been supported by OpenSSH since release 5.7. RFC5656 の ECDSA アルゴリズム: ecdsa-sha2-nistp256/384/521. These これらは OpenSSH 5.7 以降でサポートされている. To check whether a server is using the weak ssh-rsa public key algorithm, for host authentication, try to connect to it after removing the ssh-rsa algorithm from ssh(1)'s allowed list: サーバがホストの認証のために, 弱い ssh-rsa 公開鍵アルゴリズムを 利用しているか検査するには, ssh(1) の許可リストから ssh-rsa アルゴリズムを除いたあとで接続を試行すればよい. ssh -oHostKeyAlgorithms=-ssh-rsa user@host If the host key verification fails and no other supported host key types are available, the server software on that host should be upgraded. ホスト鍵検証が失敗し他にサポートされたホスト鍵の種類がない場合, ホストのサーバソフトウェアをアップグレードする必要がある. OpenSSH recently enabled the UpdateHostKeys option by default to assist the client by automatically migrating to better algorithms. OpenSSH では, クライアントがよりよいアルゴリズムに自動的に移行できるよう 助ける UpdateHostKeys 設定項目が最近デフォルトで有効となった. [1] "SHA-1 is a Shambles: First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust" Leurent, G and Peyrin, T (2020) https://eprint.iacr.org/2020/014.pdf Potentially-incompatible changes ================================ 潜在的に非互換な変更 This release includes a number of changes that may affect existing configurations: このリリースは, 既存の設定に影響する可能性のある変更をいくつか含んでいる. * scp(1): this release changes the behaviour of remote to remote copies (e.g. "scp host-a:/path host-b:") to transfer through the local host by default. This was previously available via the -3 flag. This mode avoids the need to expose credentials on the origin hop, avoids triplicate interpretation of filenames by the shell (by the local system, the copy origin and the destination) and, in conjunction with the SFTP support for scp(1) mentioned below, allows use of all authentication methods to the remote hosts (previously, only non-interactive methods could be used). A -R flag has been added to select the old behaviour. scp(1): このリリースはリモート-リモートのコピー (たとえば "scp host-a:/path host-b:") の振舞いを変更し, デフォルトでローカル ホストを経由して転送するようになる. これは以前から -3 フラグにより 利用可能だ. このモードは転送元の認証情報を開示する必要を避け, シェルによるファイル名の (ローカルなシステム, コピー元, コピー先による) 3重の解釈を避け, 後述する scp(1) に対する SFTP のサポートと併せて リモートホストへのすべての認証法の利用を許す (以前はインタラクティブ でない方法のみが利用できた). -R フラグが古い振舞いを選択するために 追加される. * ssh(1)/sshd(8): both the client and server are now using a stricter configuration file parser. The new parser uses more shell-like rules for quotes, space and escape characters. It is also more strict in rejecting configurations that include options lacking arguments. Previously some options (e.g. DenyUsers) could appear on a line with no subsequent arguments. This release will reject such configurations. The new parser will also reject configurations with unterminated quotes and multiple '=' characters after the option name. ssh(1)/sshd(8): クライアント/サーバはより厳格な設定ファイル パーサを利用する. 新しいパーサはクオートやスペース, エスケープ文字 に対してよりシェル的なルールを利用する. 引数のない設定項目を含む設定 の拒否をより厳格にする. 以前はいくつかのオプション (たとえば DenyUsers) が後続の引数なしで行に現われることがあった. このリリースは そのような設定を拒否する. 新しいパーサは終端していないクオートや 設定項目名の後の複数の '=' 文字を持つ設定も拒否する. * ssh(1): when using SSHFP DNS records for host key verification, ssh(1) will verify all matching records instead of just those with the specific signature type requested. This may cause host key verification problems if stale SSHFP records of a different or legacy signature type exist alongside other records for a particular host. bz#3322 ssh(1): ホスト鍵の検証に SSHFP DNS レコードを用いる際, ssh(1) は 要求された特定の署名タイプのレコードだけを検証する代わりに すべての一致するレコードを検証するようになる. (以前の振舞いは) 特定のホストの他のレコードと共に, 異なるないし過去の署名タイプの新鮮でない SSHFP レコードが存在する場合に, ホスト鍵の検証の問題を引き起こす. bz#3332 * ssh-keygen(1): when generating a FIDO key and specifying an explicit attestation challenge (using -Ochallenge), the challenge will now be hashed by the builtin security key middleware. This removes the (undocumented) requirement that challenges be exactly 32 bytes in length and matches the expectations of libfido2. ssh-keygen(1): FIDO 鍵を生成し ( -Ochallenge を用いて ) 明示的な attestation チャレンジ を指定する際, チャレンジは組込みのセキュリティ 鍵ミドルウェアによりハッシュされるようになる. これは, チャレンジが 正確に 32 バイト長でlibfido2 の期待の一致するという (文書化されていない) 要件を除く. * sshd(8): environment="..." directives in authorized_keys files are now first-match-wins and limited to 1024 discrete environment variable names. sshd(8): authorized_keys ファイルでの environment="..." の指定は, 最初の一致が優先され, 1024 の独立した環境変数名に限定されるようになる. Changes since OpenSSH 8.6 ========================= OpenSSH 8.6 からの変更 This release contains a mix of new features and bug-fixes. このリリースは新機能とバグ修正が含まれる. New features ------------ 新機能 - scp(1): experimental support for transfers using the SFTP protocol as a replacement for the venerable SCP/RCP protocol that it has traditionally used. SFTP offers more predictable filename handling and does not require expansion of glob(3) patterns via the shell on the remote side. scp(1): 伝統的に利用されている尊い SCP/RCP プロトコルの代替として SFTP プロトコルを利用する転送を実験的にサポートする. SFTP は より意外性のないファイル名の扱いを提供し, リモート側のシェルによる glob(3) の展開を必要としない. SFTP support may be enabled via a temporary scp -s flag. It is intended for SFTP to become the default transfer mode in the near future, at which time the -s flag will be removed. The -O flag exists to force use of the original SCP/RCP protocol for cases where SFTP may be unavailable or incompatible. SFTP サポートは scp の 一時的な -s フラグによって有効化される. 近い将来 SFTP をデフォルトの転送モードにするつもりで, その時 -s フラグは除去されるだろう. SFTP が利用できなかったり互換性がない 場合に元の SCP/RCP プロトコルを強制的に利用するために -O フラグが 存在する(追加される). - sftp-server(8): add a protocol extension to support expansion of ~/ and ~user/ prefixed paths. This was added to support these paths when used by scp(1) while in SFTP mode. sftp-server(8): ~/ と ~user/ で始まるパスの展開をサポートする プロトコル拡張を追加する. SFTP モードの scp(1) によって利用される際に これらのパスのサポートが追加される. - ssh(1): add a ForkAfterAuthentication ssh_config(5) counterpart to the ssh(1) -f flag. GHPR#231 ssh(1): ssh(1) の -f フラグの対照として ForkAfterAuthentication ssh_config(5) を追加する. GHPR#231 - ssh(1): add a StdinNull directive to ssh_config(5) that allows the config file to do the same thing as -n does on the ssh(1) command- line. GHPR#231 ssh(1): ssh(1) コマンドラインでの -n が行なうのと同様のことを 設定ファイルで設定できる StdinNull 設定項目を ssh_config(5) に追加する. GHPR#231 - ssh(1): add a SessionType directive to ssh_config, allowing the configuration file to offer equivalent control to the -N (no session) and -s (subsystem) command-line flags. GHPR#231 ssh(1): ssh_config に SessionType 設定項目を追加する. コマンドラインフラグでの -N (no sessoin) と -s (subsystem) と同等の制御を設定ファイルで提供する. GHPR#231 - ssh-keygen(1): allowed signers files used by ssh-keygen(1) signatures now support listing key validity intervals alongside they key, and ssh-keygen(1) can optionally check during signature verification whether a specified time falls inside this interval. This feature is intended for use by git to support signing and verifying objects using ssh keys. ssh-keygen(1): ssh-keygen(1) の署名で利用される許可された署名者のファイルが 鍵の正当性の期間を鍵と共に列挙できるようになり, ssh-keygen(1)は, 署名検証中に 指定した時間がこの期間内にあるかどうかチェックできるようになる. で指定できるようになる. この機能は, git が ssh 鍵を用いたオブジェクトの署名と 検証をサポートするために利用されることを意図している. - ssh-keygen(8): support printing of the full public key in a sshsig signature via a -Oprint-pubkey flag. ssh-keygen(8): -Oprint-pubkey フラグにより sshsig 署名中の完全な 公開鍵の表示をサポートする. Bugfixes -------- バグ修正 * ssh(1)/sshd(8): start time-based re-keying exactly on schedule in the client and server mainloops. Previously the re-key timeout could expire but re-keying would not start until a packet was sent or received, causing a spin in select() if the connection was quiescent. ssh(1)/sshd(8): クライアントとサーバのメインループ中でスケジュール通りに 時間ベースの鍵の再生成を始める. 以前は鍵の再生成のタイムアウトが 期限切れになってもパケットが送信されるか受信されるまで鍵の再生成が 始まらなかった. 接続が活動していない場合に select() 内で spin が 生じていた. * ssh-keygen(1): avoid Y2038 problem in printing certificate validity lifetimes. Dates past 2^31-1 seconds since epoch were displayed incorrectly on some platforms. bz#3329 ssh-keygen(1): 証明書の有効期限の表示での Y2038 問題を回避する. epoch から 2^31-1 秒経過した日付がいくつかのプラットフォームで 正確に表示されていなかった. bz#3329 * scp(1): allow spaces to appear in usernames for local to remote and scp -3 remote to remote copies. bz#1164 scp(1): ローカルからリモートへの転送と scp -3 でのリモート-リモート コピーで, ユーザ名に空白が入っていてもよくなる. bz#1164 * ssh(1)/sshd(8): remove references to ChallengeResponseAuthentication in favour of KbdInteractiveAuthentication. The former is what was in SSHv1, the latter is what is in SSHv2 (RFC4256) and they were treated as somewhat but not entirely equivalent. We retain the old name as a deprecated alias so configuration files continue to work as well as a reference in the man page for people looking for it. bz#3303 ssh(1)/sshd(8): ChallengeResponseAuthentication への参照を削除し KbdInteractiveAuthentication を採用する. 前者は SSHv1 のもので, 後者は SSHv2 (RFC4256) のもので, これらは 同じように扱われるが 完全に同等のものではない. 我々は古い名前も非推奨の別名として維持し 設定ファイルは動作する. また, この名前を探している人のために マニュアルに参照は残す. bz#3303 * ssh(1)/ssh-add(1)/ssh-keygen(1): fix decoding of X.509 subject name when extracting a key from a PKCS#11 certificate. bz#3327 ssh(1)//ssh-add(1)/ssh-keygen(1): PKCS#11 証明書から鍵を 抜き出す際の X.509 subject name のデコードを修正する. * ssh(1): restore blocking status on stdio fds before close. ssh(1) needs file descriptors in non-blocking mode to operate but it was not restoring the original state on exit. This could cause problems with fds shared with other programs via the shell, bz#3280 and GHPR#246 ssh(1): stdio のファイルデスクリプタの blocking 状態を 閉じる前に回復する. ssh(1) は 操作のためにファイルデスクリプタ を non-blocking モードにする必要があるが, 終了時に元の状態に戻して いなかった. これは シェルを経由して他のプログラムと共有される ファイルデスクリプタで問題を起こしうる. bz#3280 と GHPR#246 * ssh(1)/sshd(8): switch both client and server mainloops from select(3) to pselect(3). Avoids race conditions where a signal may arrive immediately before select(3) and not be processed until an event fires. bz#2158 ssh(1)/sshd(8): クライアントとサーバのメインループで select(3) から pselect(3) に切り替える. select(3) の直前にシグナルが来ても イベントが発火するまで処理されない競合状態を回避する. bz#2158 * ssh(1): sessions started with ControlPersist were incorrectly executing a shell when the -N (no shell) option was specified. bz#3290 ssh(1): ControlPersist 付きで始まるセッションが, -N (no shell) オプションを 指定されていてもシェルを不正に実行していた. bz#3290 * ssh(1): check if IPQoS or TunnelDevice are already set before overriding. Prevents values in config files from overriding values supplied on the command line. bz#3319 ssh(1): IPQoS と TunnelDevice がすでに設定されているか上書きする前に 確認する. 設定ファイルの値が コマンドラインで指定された値を上書きするのを 防ぐ. bz#3319 * ssh(1): fix debug message when finding a private key to match a certificate being attempted for user authentication. Previously it would print the certificate's path, whereas it was supposed to be showing the private key's path. GHPR#247 ssh(1): ユーザ認証が試行される証明書に一致する秘密鍵の検索での debug メッセージを修正する. 以前は, 証明書のパスを表示するはずが 秘密鍵のパスを表示していた. GHPR#247 * sshd(8): match host certificates against host public keys, not private keys. Allows use of certificates with private keys held in a ssh-agent. bz#3524 sshd(8): ホスト秘密鍵ではなくホスト公開鍵に対してホスト証明書を一致させる. ssh-agent 中に保持される秘密鍵付きの証明書の利用を可能にする. bz#3524 * ssh(1): add a workaround for a bug in OpenSSH 7.4 sshd(8), which allows RSA/SHA2 signatures for public key authentication but fails to advertise this correctly via SSH2_MSG_EXT_INFO. This causes clients of these server to incorrectly match PubkeyAcceptedAlgorithmse and potentially refuse to offer valid keys. bz#3213 ssh(1): OpenSSH 7.4 sshd(8) のバグに対する回避策を追加する. OpenSSH 7.4 sshd(8) は RSA/SHA2 署名を公開鍵認証で許可するが, SSH2_MSG_EXT_INFO でこれを正しく広告するのに失敗する. これらのサーバのクライアントに対し PubkeyAcceptedAlgorithms を不正に 一致させ, 潜在的に正当な鍵の提供を拒否する事態を起こす. bz#3213 * sftp(1)/scp(1): degrade gracefully if a sftp-server offers the limits@openssh.com extension but fails when the client tries to invoke it. bz#3318 sftp(1)/scp(1): sftp-server が limits@openssh.com 拡張を提供するが クライアントがその起動に失敗した場合に慈悲深く拡張を無効にする. bz#3318 * ssh(1): allow ssh_config SetEnv to override $TERM, which is otherwise handled specially by the protocol. Useful in ~/.ssh/config to set TERM to something generic (e.g. "xterm" instead of "xterm-256color") for destinations that lack terminfo entries. ssh(1): ssh_config の SetEnv が $TERM の上書きを可能にする. これはプロトコルでは特別に処理される. terminfo エントリが欠けている 接続先に対して TERM をなにか一般的なもの (例えば "xterm-256color" の代わりに "xterm") に ~/.ssh/config で設定するのに便利だ. * sftp-server(8): the limits@openssh.com extension was incorrectly marked as an operation that writes to the filesystem, which made it unavailable in sftp-server read-only mode. bz#3318 sftp-server(8): limits@openssh.com 拡張がファイルシステムへの書き込みをする 操作で不正にマークされていて, sftp-server を読み取り専用モードで 利用できなくなっていた. bz#3318 * ssh(1): fix SEGV in UpdateHostkeys debug() message, triggered when the update removed more host keys than remain present. ssh(1): UpdateHostkeys debug() メッセージでの SEGV を修正する. 現在保持しているホスト鍵以上のホスト鍵を削除する更新によって引き起こされる. * many manual page fixes. 多くのマニュアルページを修正する. Portability ----------- 移植性 * ssh(1): move closefrom() to before first malloc. When built against tcmalloc, the closefrom() would stomp on file descriptors created for tcmalloc's internal use. bz#3321 ssh(1): 最初の malloc の前に closefrom() を移す. tcmalloc に対して ビルドされた場合, tcmalloc の内部利用のために用いられる ファイル デスクイプタを closefrom は 利用してしまう. bz#3321 * sshd(8): handle GIDs > 2^31 in getgrouplist. When compiled in 32bit mode, the getgrouplist implementation may fail for GIDs greater than LONG_MAX. sshd(8): getgrouplist で 2^31 を越える GID を処理する. 32 ビットモード でコンパイルされると getgrouplist の実装は LONG_MAX を越える GID で失敗する. * ssh(1): xstrdup environment variable used by ForwardAgent. bz#3328 ssh(1): ForwardAgent で利用される環境変数を xstrdup する bz#3328 * sshd(8): don't sigdie() in signal handler in privsep child process; this can end up causing sandbox violations per bz3286 sshd(9): 特権分離された子プロセル内のシグナルハンドラで sigdie() しない; これは bz3286 によるとサンドボックの破壊を引き起す可能性がある.