Команды Linux и навыки работы с оболочкой
sftp: передача файлов по SSH-бюджету
sftp работает внутри SSH, и именно поэтому он пережил своих аналогов: ключи, chroot, хосты перехода и журнал аудита — все это предоставляется бесплатно. OpenSSH незаметно перенес scp на протокол SFTP в версии 9.0, потому что SFTP играет роль настоящего протокола: список каталогов, mkdir, разрешения, переименования и гораздо меньше сюрпризов протокола. Интерактивный sftp подходит для одноразовых перемещений; автоматизация осуществляется через пакетный режим, коды выхода и периодические извинения перед rsync.
Главное
- Автоматизация осуществляется в пакетном режиме: sftp -b пакетный.txt user@host запускает файл команд, завершает работу в ненулевом режиме при любом сбое и читает из стандартного ввода с помощью -b -; автоматические запросы пароля — пакетный режим ошибок удаляет в два раза быстрее, чем повышает безопасность.
- Набор команд намеренно небольшой: ls -l, mkdir, put -p (сохранить временные метки), get -r (рекурсивный), chmod и df -h внутри сеанса покрывают 95% эксплуатационных потребностей.
- Знайте, когда побеждает rsync: sftp повторно отправляет целые файлы, а rsync -avz --partial через ssh перемещает дельты, ничего не удаляет автоматически и сохраняет объемные архивы метаданных, которые действительно важны.
- На стороне сервера sftp — это ограждение: ForceCommand Internal-sftp внутри блока Match с ChrootDirectory превращает учетную запись в зашифрованный, проверяемый почтовый ящик вообще без оболочки.
- «sftp работает, оболочка нет» — это дизайн, а не ошибка: строка Subsystem sftp Internal-sftp позволяет это сделать, а переход scp на SFTP в OpenSSH 9.0 означает, что устаревшие серверы без подсистемы могут нарушить старые задания scp.
- Использование Cron оценивается по поведению при сбое: -o BatchMode=yes, -o ConnectTimeout=10, а явная проверка кода выхода превращает молчание зависаний в громкие, выводимые на страницы сбои.
- Результатом выполнения является контроль шума: sftp болтлив, журналы cron молчат; -q (или перенаправление) плюс ведение журнала на стороне sshd дает вам контрольный журнал, который не распадается на гигабайты полос передачи.
- Единственная опечатка, из которой сделаны карьеры: sftp -P 2222 принимает заглавную букву P (строчная -p означает сохранение), в то время как scp поменял местами соглашения на одни и те же буквы; если порт неправильный, сначала проверьте его.
Заметка из практики
Однажды задание cron sftp зависло на шесть часов из-за неожиданного запроса пароля, прежде чем кто-либо это заметил. С тех пор каждая передача по сценарию получает -b, -o BatchMode=yes, а код выхода проверяет страницы вместо ожидания.
Частые вопросы
Действительно ли OpenSSH 9.0 изменил scp?
Протокол, а не поверхность: scp теперь перемещает файлы по SFTP внизу, поэтому хосты без подсистемы sftp молча прерывают устаревшие задания scp; исправление заключается в включении подсистемы, а не в отмене привычек.
Могу ли я вообще переместить один файл без sftp?
Да: кот bigfile.bin | ssh user@host 'cat > /tmp/bigfile.bin' — переносимая одноконвейерная передача; ни резюме, ни метаданных, но он работает везде, где работает SSH, и это именно его вариант использования.
Sftp медленнее, чем scp или rsync?
Иногда: издержки протокола для каждого файла и буферизация по умолчанию проявляются в больших деревьях каталогов; измерьте свою ссылку перед оптимизацией и помните, что rsync обычно отвечает, когда жалоба «слишком медленная».
Как предоставить сторонним загрузкам без доступа к оболочке?
Выделенная учетная запись с ChrootDirectory, ForceCommand Internal-sftp и записываемым подкаталогом; ключи, тюрьма, тайм-аут и просмотр журнала включены, это скорее почтовый ящик, чем приглашение.
Как мы берём на себя команды linux и навыки работы с оболочкой
Это то, чем мы занимаемся каждый день: Команды и сценарии сценариев, которые решают, управляет ли администратор сервером или борется с ним: поиск, преобразование, передача и контроль текста и процессов с помощью инструментов, которые есть в каждой базовой установке. Наша услуга Безопасность серверов Linux и Администрирование серверов закрывает задачу целиком — оценка, внедрение, круглосуточный мониторинг и экстренная реакция в течение 30 минут.