Bosh sahifa Wiki SFTP

SFTP

SFTPSSH orqali himoyalangan kanal ichida fayl uzatish va masofaviy fayl tizimini boshqarish uchun ishlatiladigan protokol. Uning to‘liq nomi SSH File Transfer Protocol hisoblanadi.

SFTP oddiy FTPning shifrlangan ko‘rinishi emas. U SSH protokolining alohida subsystemi bo‘lib, FTPdan boshqa buyruq, paket va sessiya modeliga ega.

SFTP trafikni shifrlaydi, serverni host key orqali tekshiradi va foydalanuvchini parol, public key yoki boshqa SSH autentifikatsiya usullari bilan tasdiqlaydi.

SSH ichidagi ishlash modeli

Client avval SSH serverga ulanadi. Odatda TCP 22-port ishlatiladi.

Jarayon:

  1. TCP ulanish ochiladi.
  2. SSH versiya va algoritmlar kelishiladi.
  3. Server host key bilan o‘zini tanitadi.
  4. Shifrlangan sessiya kalitlari hosil qilinadi.
  5. Foydalanuvchi autentifikatsiyadan o‘tadi.
  6. Client sftp subsystemini ishga tushiradi.
  7. Fayl amallari SFTP paketlari orqali bajariladi.

Bitta SSH transport ulanishi ichida bir nechta kanal ishlashi mumkin. SFTP odatda alohida data portlar ochmaydi.

SFTP imkoniyatlari

SFTP faqat fayl yuklash bilan cheklanmaydi.

Asosiy amallar:

  • katalog ro‘yxatini olish;
  • faylni serverga yuklash;
  • faylni serverdan olish;
  • katalog yaratish;
  • fayl va katalogni o‘chirish;
  • nomini o‘zgartirish;
  • fayl atributlarini o‘qish;
  • ruxsatlarni o‘zgartirish;
  • symbolic link bilan ishlash;
  • uzatishni davom ettirish;
  • faylning ma’lum qismini o‘qish;
  • realpath aniqlash.

Aniq imkoniyat protokol versiyasi va server kengaytmalariga bog‘liq.

SFTP paketlari

SFTP matnli terminal buyrug‘i emas. Client va server ikkilik formatdagi so‘rov–javob paketlarini almashadi.

Paketlarda:

  • request ID;
  • amal turi;
  • fayl yo‘li;
  • offset;
  • uzunlik;
  • data;
  • status kodi;
  • atributlar

bo‘lishi mumkin.

Request ID bir nechta so‘rovni parallel yuborish va javoblarni moslashtirish imkonini beradi.

File handle

Client faylni o‘qish yoki yozishdan oldin serverdan ochishni so‘raydi. Server clientga vaqtinchalik handle qaytaradi.

Keyingi amallar shu handle orqali bajariladi:

OPEN → HANDLE
READ(handle, offset, length)
WRITE(handle, offset, data)
CLOSE(handle)

Handle server ichki fayl descriptorining to‘g‘ridan-to‘g‘ri nusxasi bo‘lishi shart emas.

Public key autentifikatsiyasi

SFTP avtomatlashtirishda ko‘pincha SSH key ishlatiladi.

Kalit juftligi:

Private key tarmoq orqali yuborilmaydi. Client kalit egasi ekanini kriptografik usulda isbotlaydi.

Private key:

  • faqat kerakli foydalanuvchiga ochiq bo‘lishi;
  • passphrase bilan himoyalanishi;
  • backup qilinishi;
  • umumiy repozitoriyga joylanmasligi;
  • muntazam almashtirilishi

kerak.

Host key

SSH server host key orqali o‘zini tanitadi.

Client birinchi ulanishda host key fingerprintini saqlashi mumkin. Keyingi ulanishda kalit kutilmaganda o‘zgarsa, quyidagi holatlar bo‘lishi mumkin:

  • server qayta o‘rnatilgan;
  • load balancer ortidagi server kalitlari turlicha;
  • DNS boshqa serverga yo‘nalgan;
  • hujumchi aloqa o‘rtasiga kirgan.

Host key ogohlantirishini avtomatik o‘chirib qo‘yish man-in-the-middle himoyasini zaiflashtiradi.

Interaktiv SFTP client

Ko‘plab tizimlarda sftp buyrug‘i mavjud.

Misol:

sftp [email protected]

Interaktiv buyruqlar:

Buyruq Vazifasi
ls Masofaviy katalogni ko‘rish
lls Lokal katalogni ko‘rish
cd Masofaviy katalogni o‘zgartirish
lcd Lokal katalogni o‘zgartirish
get Faylni yuklab olish
put Faylni yuklash
mkdir Masofaviy katalog yaratish
rm Masofaviy faylni o‘chirish
rename Nomini o‘zgartirish
chmod Ruxsatlarni o‘zgartirish
exit Sessiyani yopish

Client sintaksisi implementatsiyaga qarab farq qilishi mumkin.

Batch mode

SFTP buyruqlarini fayl ichida yozib, avtomatik bajarish mumkin.

Misol:

cd /incoming
put report.csv
rename report.csv report.ready
exit

Batch mode backup, hisobot va integratsiya jarayonlarida ishlatiladi.

Avtomatlashtirishda quyidagilar muhim:

  • host keyni tekshirish;
  • parol o‘rniga kalit;
  • exit status;
  • yarim qolgan fayl;
  • atomik rename;
  • log;
  • retry;
  • checksum.

Fayl avval vaqtinchalik nom bilan yuklanib, to‘liq tugagach rename qilinishi mumkin. Bu qabul qiluvchi dastur yarim faylni o‘qib ketishini oldini oladi.

Resume

SFTP faylning ma’lum offsetidan yozish yoki o‘qish imkonini beradi. Client uzilgan katta faylni davom ettirishi mumkin.

Resume ishlatilganda:

tekshiriladi.

Faqat hajm tengligi fayllar aynan bir xil ekanini kafolatlamaydi.

Ruxsatlar

SFTP server foydalanuvchining operatsion tizim ruxsatlariga tayanishi mumkin.

Muhim tushunchalar:

  • owner;
  • group;
  • read;
  • write;
  • execute;
  • umask;
  • ACL;
  • chroot;
  • SELinux yoki AppArmor.

Foydalanuvchi katalogni ko‘ra olsa ham, ichidagi faylni yozish ruxsatiga ega bo‘lmasligi mumkin. Katalogga yangi fayl yaratish uchun katalogning write va execute ruxsatlari muhim.

Chroot va internal-sftp

SSH server foydalanuvchini ma’lum katalog ichida cheklashi mumkin.

internal-sftp server ichidagi SFTP subsystemini alohida shell talab qilmasdan ishga tushiradi.

Cheklangan foydalanuvchi:

  • terminal shellga kira olmaydi;
  • faqat ma’lum katalogni ko‘radi;
  • boshqa foydalanuvchi fayllariga kira olmaydi;
  • port forwardingdan foydalana olmaydi;
  • faqat SFTP amallariga ruxsat oladi.

Chroot katalogining ownership talablari OpenSSH konfiguratsiyasida muhim. Noto‘g‘ri ownership sabab login rad etilishi mumkin.

SFTP va SCP

Jihat SFTP SCP
Asosiy model Fayl tizimi amallari Fayl nusxalash
Katalog ko‘rish Bor Odatda yo‘q
Resume Keng qo‘llanadi Cheklangan
Request ID Bor Eski protokolda sodda oqim
Masofaviy fayl boshqaruvi Bor Kam
Zamonaviy OpenSSH Asosiy fayl subsystemi scp buyrug‘i SFTPdan foydalanishi mumkin

SCP tez nusxalash uchun qulay, SFTP esa boshqariladigan integratsiya uchun mos.

SFTP va FTPS

FTPS FTP protokolini TLS bilan himoyalaydi. SFTP esa SSH asosida ishlaydi.

FTPSda control va data connectionlar alohida. SFTPda bitta SSH ulanishi mavjud. Shu sababli SFTP firewall va NAT orqali soddaroq boshqariladi.

Tashkilotning mavjud sertifikat infratuzilmasi, hamkor tizimi va talab qilinadigan protokol tanlovga ta’sir qiladi.

Xavfsizlik

SFTP serverda quyidagilar qo‘llanadi:

  • eski SSH algoritmlarini o‘chirish;
  • root loginni taqiqlash;
  • faqat kerakli userlarga ruxsat;
  • public key autentifikatsiyasi;
  • chroot;
  • minimal filesystem ruxsati;
  • login rate limit;
  • audit log;
  • IP allowlist;
  • disk quota;
  • malware scanning;
  • kalit lifecycle boshqaruvi.

Private key o‘g‘irlangan bo‘lsa, parolsiz kirish mumkin. Kalitni serverdagi authorized_keysdan olib tashlash va yangisini chiqarish kerak.

Diagnostika

SFTP ishlamasa, quyidagilar tekshiriladi:

SSH terminal ishlashi SFTP subsystemi albatta ishlaydi degani emas. Serverda subsystem o‘chirilgan yoki foydalanuvchi uchun boshqa siyosat bo‘lishi mumkin.

Bog‘liq tushunchalar

SSH, File transfer, Public key, Private key, Host key, Chroot, OpenSSH, SCP, FTPS, File permissions, Batch transfer