OpenSSH 8.7 がリリースされました
2021/08/20, OpenSSH 8.7 がリリースされました.
- OpenSSH 8.7 Release Note 中の OpenSSH 8.7 での変更点の翻訳
- この記事にも添付します.
- OpenSSH 移植版付属文書の翻訳
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 によるとサンドボックの破壊を引き起す可能性がある.