SCP — SSH himoyalangan kanali orqali lokal va masofaviy tizimlar orasida fayl nusxalash uchun ishlatiladigan vosita va tarixiy protokol nomi. Uning to‘liq nomi Secure Copy Protocol hisoblanadi.
SCP foydalanuvchini SSH orqali autentifikatsiya qiladi, trafikni shifrlaydi va faylni masofaviy tizimga yoki undan lokal tizimga ko‘chiradi.
SCP kataloglarni interaktiv ko‘rish yoki masofaviy fayl tizimini to‘liq boshqarish uchun emas. Bunday vazifalarda SFTP qulayroq.
SCP buyrug‘i
Asosiy sintaksis:
scp [parametrlar] manba manzil
Lokal faylni serverga yuborish:
scp report.pdf [email protected]:/srv/files/
Serverdan fayl olish:
scp [email protected]:/var/log/app.log ./
Katalogni rekursiv nusxalash:
scp -r ./site [email protected]:/var/www/
Masofaviy yo‘l user@host:path ko‘rinishida yoziladi.
SSH transporti
SCP odatda SSH server orqali ishlaydi.
Jarayon:
- Client TCP 22-portga ulanadi.
- SSH algoritmlari kelishiladi.
- Server host key tekshiriladi.
- Foydalanuvchi autentifikatsiyadan o‘tadi.
- Masofaviy tizimda fayl uzatish jarayoni ishga tushadi.
- Ma’lumot shifrlangan kanal orqali ko‘chiriladi.
SSH konfiguratsiyasidagi port, proxy, key va algoritmlar SCPga ham ta’sir qiladi.
Tarixiy SCP protokoli
Eski SCP protokoli BSD rcp vositasiga o‘xshash sodda oqim modelidan foydalanadi. Client masofaviy shell orqali scp dasturini server yoki sink rejimida ishga tushiradi.
Protokol:
haqida matnli boshqaruv yozuvlarini almashadi.
Tarixiy modelda server qaytargan fayl nomiga ortiqcha ishonish bilan bog‘liq xavfsizlik muammolari bo‘lgan. Zamonaviy OpenSSH scp buyrug‘i ko‘pincha standart holatda SFTP protokolidan foydalanadi.
Buyruq nomi scp bo‘lib qoladi, transportdagi fayl protokoli esa SFTP bo‘lishi mumkin.
Asosiy parametrlar
| Parametr | Vazifasi |
|---|---|
-r |
Katalogni rekursiv ko‘chirish |
-P |
SSH portini ko‘rsatish |
-p |
Vaqt va ruxsat atributlarini saqlash |
-i |
Private key faylini tanlash |
-C |
SSH siqishni yoqish |
-q |
Progress va ayrim xabarlarni yashirish |
-v |
Debug ma’lumotini chiqarish |
-l |
Bandwidthni cheklash |
-J |
Jump host orqali ulanish |
-O |
Ayrim OpenSSH versiyalarida eski SCP protokolini majburlash |
-P katta harf bilan yoziladi. Kichik -p boshqa vazifaga ega.
Fayl atributlari
-p parametri quyidagilarni saqlashga urinadi:
- modification time;
- access time;
- file mode.
Owner va groupni aynan saqlash foydalanuvchi huquqiga va masofaviy tizimga bog‘liq.
Fayl yangi serverga ko‘chirilganda:
natijani o‘zgartirishi mumkin.
Wildcard
Masofaviy yo‘ldagi wildcardlar shell yoki SFTP glob qoidalariga qarab ishlaydi.
Misol:
scp 'user@server:/var/log/*.log' ./
Quote ishlatilmasa, lokal shell * belgisini masofaviy serverga yuborishdan oldin kengaytirishga urinishi mumkin.
Eski SCP protokoli va yangi SFTP backend wildcardni turlicha talqin qilishi mumkin.
Ikki masofaviy host orasida
SCP ikki remote host orasida ham nusxalashga urinishi mumkin.
Tarixan bir server ikkinchisiga bevosita ulanadigan model bo‘lgan. Zamonaviy variantlarda trafik client orqali o‘tishi mumkin.
Bu holatda:
aniq nazorat qilinadi.
Progress va katta fayl
SCP odatda fayl hajmi, foiz, tezlik va qolgan vaqtni ko‘rsatadi.
Katta faylda uzatish to‘xtasa, klassik SCP to‘liq resume imkoniyatiga ega emas. Faylni qayta yuborishi mumkin.
Katta va tez-tez o‘zgaradigan kataloglar uchun:
- rsync;
- SFTP resume;
- object storage;
- maxsus backup vositasi
samaraliroq bo‘lishi mumkin.
Compression
-C SSH compressionni yoqadi.
Siqish quyidagilarda foydali:
Quyidagilar allaqachon siqilgan bo‘ladi:
- ZIP;
- JPEG;
- MP4;
- PDF;
- gzip;
- encrypted file.
Bunday fayllarda compression CPU yukini oshirib, tezlikni yaxshilamasligi mumkin.
Bandwidth cheklovi
-l parametr orqali uzatish tezligi cheklanishi mumkin.
Bu:
- ishlab chiqarish tarmog‘ini band qilmaslik;
- backupni ish vaqtida sekinlashtirish;
- WAN kanalini himoya qilish;
- boshqa xizmatlarga bandwidth qoldirish
uchun ishlatiladi.
Aniq birlik client implementatsiyasi hujjatidan tekshiriladi.
SCP va rsync
| Jihat | SCP | rsync |
|---|---|---|
| Asosiy vazifa | Faylni nusxalash | Kataloglarni sinxronlashtirish |
| Farqli bloklar | Odatda yo‘q | Bor |
| Resume | Cheklangan | Qisman fayl bilan ishlashi mumkin |
| Delete | Oddiy nusxalashda yo‘q | Destinationni manbaga mos tozalashi mumkin |
| Filter | Kam | Keng include/exclude |
| SSH | Ishlatadi | Transport sifatida ishlatishi mumkin |
Bir martalik kichik nusxa uchun SCP sodda. Takroriy katta katalog uchun rsync mosroq.
SCP va SFTP
SFTP interaktiv katalog boshqaruvi va request–response protokolini beradi. SCP esa buyruq darajasida manbadan destinationga nusxalashga yo‘naltirilgan.
Zamonaviy OpenSSHda scp buyrug‘i SFTP protokolidan foydalansa ham, foydalanuvchi interfeysi SCPga o‘xshab qoladi.
Xavfsizlik
SCP xavfsizligi SSHga tayanadi.
Muhim choralar:
- host keyni tekshirish;
- private keyni himoyalash;
- root loginni cheklash;
- least privilege;
- kerakli katalogga ruxsat;
- command restriction;
- jump host nazorati;
- audit log;
- kalit rotatsiyasi;
- eski algoritmlarni o‘chirish.
StrictHostKeyChecking=no kabi sozlama avtomatlashtirishni osonlashtiradi, lekin server identifikatsiyasi himoyasini zaiflashtiradi.
Atomik joylashtirish
Deploymentda faylni to‘g‘ridan-to‘g‘ri faol nomga yozish xavfli. Qabul qiluvchi xizmat yarim yozilgan faylni o‘qishi mumkin.
Yaxshi jarayon:
- fayl vaqtinchalik nom bilan yuboriladi;
- checksum tekshiriladi;
- permission belgilanadi;
- rename orqali faol nomga o‘tkaziladi.
Bir filesystem ichidagi rename ko‘pincha atomik bo‘ladi.
Diagnostika
SCP xatosida quyidagilar tekshiriladi:
- SSH port;
- host key;
- username;
- private key;
- remote shell;
- destination katalog ruxsati;
- disk joyi;
- quota;
- path va quote;
- eski yoki yangi SCP mode;
- serverdagi SFTP subsystem;
- firewall;
- jump host;
- client
-vdebug output.
Permission denied login xatosi ham, fayl tizimi ruxsat xatosi ham bo‘lishi mumkin. Xabar qaysi bosqichda chiqqani aniqlanadi.
Bog‘liq tushunchalar
SSH, SFTP, File transfer, rsync, Public key, Host key, File permissions, OpenSSH, Remote copy, Checksum