Кратко

  • OpenSSH 8.7 предложил экспериментальную передачу SFTP внутри scp в 2021 году. OpenSSH 9.0 сделал её обычным режимом 8 апреля 2022 года.
  • Старый SCP/RCP обращался к удалённой оболочке для раскрытия шаблонов и мог требовать двойного цитирования имён. Параметр -O оставил старый режим для случаев несовместимости.

Имя файла проходило через чужую оболочку

Команда scp host:*.txt . обещает забрать файлы по маске. В старом протоколе звёздочку раскрывала оболочка удалённого пользователя. Примечания к OpenSSH 9.0 объясняют цену: специальные знаки в имени могли требовать двух слоёв кавычек. Строка проходила через локальную оболочку, затем через удалённую. Имя посылки могло стать инструкцией для работника склада. Короткая команда скрывала второго интерпретатора.

Переход на SFTP не отменил SSH-соединение. Нынешнее руководство scp(1) описывает SFTP поверх SSH. Менялся протокол передачи файлов и место, где понимался удалённый путь. Защита соединения и разбор имени — разные вопросы. Поэтому история scp относится к интерфейсу передачи, а не к смене шифрования.

Пробный маршрут в 2021 году

В OpenSSH 8.7 экспериментальный режим включался через scp -s. Проект объяснял его более предсказуемой обработкой имён без раскрытия шаблонов удалённой оболочкой. Та же версия по умолчанию направила копии между двумя удалёнными хостами через локальный компьютер. Это позволяло не раскрывать учётные данные на исходном хосте и не пропускать имя через три оболочки: местную, исходную и конечную. Разработчики меняли реальный маршрут, а не только пункт справки.

OpenSSH 9.0 от 8 апреля 2022 года сделал SFTP режимом по умолчанию. Двойные кавычки, которыми старые сценарии обслуживали удалённую оболочку, в новом режиме могли ломать передачу. Авторы прямо признали несовместимость и не захотели воспроизводить эту особенность старого протокола. Иногда программа становится проще за счёт того, что тщательно приготовленные обходные пути перестают работать.

Путь ~user/ создал другую границу. SFTP не умеет сам раскрывать домашний каталог другого пользователя. Заметки к 8.7 фиксируют серверное расширение OpenSSH для раскрытия путей; старый SFTP-сервер может его не поддерживать. Обновлённый клиент не переписывает возможности удалённого узла.

Для совместимости существует scp -O. Текущее руководство называет серверы без SFTP, некоторые шаблоны имён и старое раскрытие ~ среди причин применить этот параметр. Вместе с прежним протоколом возвращается работа удалённой оболочки. Запасной выход не превращает старый коридор в новый.

Вывеска пережила рабочую схему

Руководство OpenBSD 7.3 уже описывало scp с SFTP через SSH, а современное руководство относит смену умолчания к OpenSSH 9.0. Команда не исчезла; её обычный способ разговаривать о файлах сменился. Отсюда и практическая проверка: какие серверы, имена и сценарии рассчитывали на прежний способ. Версия программы может перевести поток на новую дорогу, но не отредактирует чужие скрипты, написанные для старой.