要約
- OpenSSH 8.7の公開記録は2021年に
scpの実験的なSFTP転送を追加した。9.0の公開記録は2022年4月8日にSFTPを既定へ切り替えた。 - 旧方式は遠隔シェルでワイルドカードを展開し、ファイル名に二重の引用処理を求めた。9.0はその前提を替え、必要な場合に旧方式を選ぶ
-Oを残した。
コマンド一行に二つの解釈者
遠隔のファイルをscp host:*.txt .で集める。古いSCP/RCP方式では、遠隔ユーザーのシェルが*を展開した。OpenSSH 9.0の説明によると、この設計は特殊文字を含む名前に二重の引用を要求することがあった。手元のシェルを通した後、遠隔のシェルにも同じ名前を誤解させない工夫が必要だった。荷物の宛先を書くつもりが、倉庫の操作指示にも読めてしまう。
SSHの暗号化がSFTPへ置き換わった話ではない。現行のscp(1)マニュアルは、SFTP転送もSSH接続上で行うと記す。入れ替わったのはファイル転送の会話と遠隔パスの解釈役だ。古い方式が遠隔シェルに任せていた部分を減らすことが、新しい既定値の目的だった。
試験運転から標準へ
2021年8月のOpenSSH 8.7はscp -sを実験的に用意した。公開記録はSFTPならファイル名の扱いがより予測しやすく、遠隔シェルによるglob展開も不要になると説明する。同じ版で、二つの遠隔ホスト間のコピーは既定で手元のホストを経由するようになった。元の遠隔ホストに別の接続先の認証情報を置かずに済み、三か所のシェルで名前を解釈する負担も減る。変更は一つの標語ではなく、複数の経路に及んだ。
2022年4月のOpenSSH 9.0はSFTPをscpの既定にした。従来の二重引用を組み込んだスクリプトは、新方式ではかえって失敗し得る。開発側はその不一致を認め、旧方式の癖をSFTP上で再現するつもりはないと述べた。互換性のために複雑さを永久保存しないという判断だ。
ただし~user/で始まる遠隔パスには別の事情がある。SFTP自身には別ユーザーのホームを展開する標準の仕組みがない。8.7の記録はOpenSSHサーバーにパス展開用の拡張機能を追加したと説明する。古いSFTPサーバーはそれを持たない可能性がある。新しいクライアントだけでは古い相手の能力まで増やせない。
現在のマニュアルには-Oが残る。SFTPを実装していないサーバー、特定のワイルドカード、古いサーバーでの~展開に使う。旧方式へ戻れば、遠隔シェルの引用符問題も戻る。脱出口はあるが、無料の近道ではない。
看板の裏の契約
OpenBSD 7.3のマニュアルはSFTPを使うscpを記録し、現行マニュアルは既定値の開始をOpenSSH 9.0と記す。コマンド名は同じでも、相手サーバー、ファイル名、古い自動化が関わる約束は変わった。新しい標準経路の通行を決めるのは、リリース番号だけではない。毎日動くコピー処理が、変更の成否を報告する。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
ストラテジックサークル限定
ストラテジックサークル
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
ストラテジックサークルに参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加





