SFTP — SSH 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:
- TCP ulanish ochiladi.
- SSH versiya va algoritmlar kelishiladi.
- Server host key bilan o‘zini tanitadi.
- Shifrlangan sessiya kalitlari hosil qilinadi.
- Foydalanuvchi autentifikatsiyadan o‘tadi.
- Client
sftpsubsystemini ishga tushiradi. - 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:
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 — clientda saqlanadi;
- public key — server foydalanuvchisining
authorized_keysfayliga joylanadi.
Private key tarmoq orqali yuborilmaydi. Client kalit egasi ekanini kriptografik usulda isbotlaydi.
- 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:
- TCP 22 yoki nostandart port;
- SSH server holati;
- host key;
- username;
- private key ruxsati;
- public key mosligi;
authorized_keys;- chroot ownership;
- subsystem konfiguratsiyasi;
- fayl va katalog ruxsatlari;
- disk quota;
- SELinux;
- server loglari;
- client debug output.
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