SFTP داخل همان اتصال SSH موجود کار میکند، پس به نرمافزار اضافه روی سرور یا درگاه جدید نیازی نیست. روی VPS Linux Infrawire امنترین راه برای آپلود وبسایت یا گرفتن پشتیبان با یک کلاینت گرافیکی مثل FileZilla است. این راهنما ورود با گذرواژه و کلید، مجوزهای فایل و یک کاربر محدود به SFTP را پوشش میدهد.
📋 پیشنیازها
- یک VPS لینوکس (Ubuntu 24.04، Debian 12، AlmaLinux 9 یا Rocky 9) با SSH فعال روی درگاه 22.
- آیپی VPS و گذرواژهٔ root از بخش کاربری مشتری.
- FileZilla Client نصبشده روی رایانهٔ شما (Client، نه FileZilla Server).
1. اتصال سریع با گذرواژه
برای اولین آزمایش از نوار اتصال سریع بالای FileZilla استفاده کنید:
- میزبان:
sftp://VPS_IP - نام کاربری:
USER - گذرواژه: گذرواژهٔ شما
- درگاه:
22
بار اول کلید میزبان را بپذیرید. پنل سمت راست درخت فایلهای سرور را نشان میدهد. بهجای root از یک کاربر معمولی استفاده کنید: یک کلیک اشتباه آسیب کمتری میزند.
Bashadduser USER usermod -aG sudo USER
روی AlmaLinux یا Rocky از useradd -m USER، passwd USER و usermod -aG wheel USER استفاده کنید.
2. ورود با کلید SSH
کلیدها از گذرواژه امنترند و با حملهٔ brute-force حدس زده نمیشوند. روی رایانهٔ خودتان یک جفت کلید بسازید و بخش عمومی را روی سرور کپی کنید.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
در FileZilla مسیر Edit > Settings > Connection > SFTP > Add key file را باز کنید و کلید خصوصی خود را انتخاب کنید (فایلی که .pub ندارد). ممکن است FileZilla پیشنهاد تبدیل آن به قالب خودش را بدهد؛ بپذیرید. هرگز کلید خصوصی را به اشتراک نگذارید.
3. ذخیرهٔ اتصال در Site Manager
- File > Site Manager را باز کنید و روی New site بزنید.
- پروتکل: SFTP - SSH File Transfer Protocol.
- میزبان:
VPS_IP، درگاه:22. - نوع ورود: برای گذرواژه Normal و برای کلید Key file.
- کاربر:
USER. در زبانهٔ Advanced پوشهٔ راه دور پیشفرض را تعیین کنید، مثلاً/var/www/example.com. - روی Connect بزنید. سایت برای دفعهٔ بعد ذخیره میشود.
گذرواژه را روی رایانهای که کنترل ندارید ذخیره نکنید.
4. تنظیم مالک و مجوز فایلهای وب
فایلهای آپلودشده اغلب مالک اشتباه دارند و خطای 403 یا 500 میدهند. پوشهٔ وب را به کاربر خود بدهید و اجازه دهید وبسرور آن را بخواند.
Bashmkdir -p /var/www/example.com chown -R USER:www-data /var/www/example.com find /var/www/example.com -type d -exec chmod 755 {} \; find /var/www/example.com -type f -exec chmod 644 {} \;
روی AlmaLinux و Rocky گروه وبسرور apache است نه www-data. پوشههایی که برنامه باید در آنها بنویسد (آپلود، کش) را میتوان با گروه مالک برابر گروه وبسرور روی 775 گذاشت. هرگز از chmod -R 777 استفاده نکنید. در FileZilla میتوانید روی فایل راستکلیک کنید و File permissions را بزنید.
5. اختیاری: کاربر فقط-SFTP محبوس در یک پوشه
برای دادن دسترسی به فقط یک پوشه بدون شل به مشتری، از chroot استفاده کنید. خود پوشهٔ chroot باید متعلق به root باشد و برای کس دیگری قابلنوشتن نباشد، وگرنه sshd ورود را رد میکند.
Bashgroupadd sftpusers useradd -M -d /files -s /usr/sbin/nologin -G sftpusers CLIENT passwd CLIENT mkdir -p /var/sftp/CLIENT/files chown root:root /var/sftp/CLIENT chmod 755 /var/sftp/CLIENT chown CLIENT:CLIENT /var/sftp/CLIENT/files
این بلوک را به انتهای /etc/ssh/sshd_config اضافه کنید:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
پیش از بارگذاری مجدد نحو را بررسی کنید و تا مطمئن نشدید ورود جدید کار میکند، نشست SSH فعلی را باز نگه دارید.
Bashsshd -t systemctl reload ssh
نام سرویس روی Ubuntu و Debian برابر ssh و روی AlmaLinux و Rocky برابر sshd است. کاربر محدود وارد /files میشود و چیز دیگری نمیبیند.
بررسی
پیش از سرزنش FileZilla از ترمینال آزمایش کنید:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
سپس با FileZilla فایلی آپلود کنید و مالک آن را با ls -l /var/www/example.com بررسی کنید.
عیبیابی
- اتصال رد شد یا زمان تمام شد: بررسی کنید sshd در حال اجراست (
systemctl status ssh)، درگاه در فایروال باز است و SFTP را انتخاب کردهاید نه FTP. - Permission denied (publickey): کلید در
~/.ssh/authorized_keysنیست یا مجوزها غلط است. باchmod 700 ~/.sshوchmod 600 ~/.ssh/authorized_keysاصلاح کنید. - کاربر chroot بلافاصله پس از ورود قطع میشود: پوشهٔ chroot مال root نیست یا برای گروه قابلنوشتن است. در
journalctl -u sshدنبال "bad ownership or modes for chroot directory" بگردید. - آپلود نمیشود و مجوز پوشه رد میشود: کاربر مالک مقصد نیست. دستورهای
chownوchmodگام 4 را دوباره اجرا کنید.
✅ اکنون میتوانید با FileZilla فایلها را با امنیت به VPS لینوکس خود منتقل کنید.