Команди Linux і навички оболонки
sftp: передача файлів за бюджетом SSH
sftp працює всередині SSH, саме тому він пережив своїх аналогів: ключі, chroots, хости переходів і контрольний журнал — усе це безкоштовно. OpenSSH тихо перемістив scp на протокол SFTP у версії 9.0, оскільки SFTP відіграє реальну роль протоколу: список каталогів, mkdir, дозволи, перейменування та набагато менше сюрпризів протоколу. Інтерактивний sftp підходить для одноразових переміщень; автоматизація виконується через пакетний режим, коди виходу та випадкові вибачення перед rsync.
Головне
- Автоматизація здійснюється в пакетному режимі: sftp -b batch.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?
Так: cat bigfile.bin | ssh user@host 'cat > /tmp/bigfile.bin' — це портативна одноканальна передача; немає резюме, метаданих, але він працює скрізь, де працює SSH, що є саме його варіантом використання.
Sftp повільніший за scp чи rsync?
Іноді: накладні витрати протоколу для кожного файлу та буферизація за замовчуванням відображаються в масових деревах каталогів; виміряйте своє посилання перед оптимізацією та пам’ятайте, що rsync зазвичай відповідає, коли скарга «надто повільна».
Як надати стороннім завантаженням без доступу до оболонки?
Виділений обліковий запис із ChrootDirectory, ForceCommand internal-sftp і доступним для запису підкаталогом; ключі, в'язниця, тайм-аут і перегляд журналу включені, тобто це вікно, а не запрошення.
Допомога Kinetikatech: команди linux і навички оболонки
Ми бралися за це сотні разів: Команди та сценарії, які вирішують, чи керує адміністратор сервером, чи бореться з ним: шукайте, трансформуйте, пересилайте та контролюйте текст і процеси за допомогою інструментів, які присутні в кожній базовій установці. Служба Безпека серверів Linux та Адміністрування серверів дає замкнений цикл: ми оцінюємо, впроваджуємо, цілодобово стежимо й підхоплюємо за 30 хвилин, коли це критично.