يعمل SFTP داخل اتصال SSH الحالي، فلا يحتاج إلى برنامج إضافي على الخادم ولا إلى منفذ جديد. على VPS Linux Infrawire هو أكثر الطرق أمانًا لرفع موقع أو جلب نسخ احتياطية عبر عميل رسومي مثل FileZilla. يغطي الدليل الدخول بكلمة مرور وبمفتاح، وصلاحيات الملفات، ومستخدمًا مقيّدًا بـ SFTP فقط.
📋 المتطلبات
- خادم VPS لينكس (Ubuntu 24.04 أو Debian 12 أو AlmaLinux 9 أو Rocky 9) يعمل عليه SSH على المنفذ 22.
- عنوان IP الخاص بالخادم وكلمة مرور 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
المفاتيح أكثر أمانًا من كلمات المرور ولا يمكن تخمينها بالقوة الغاشمة. على حاسوبك أنشئ زوج مفاتيح وانسخ الجزء العام إلى الخادم.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
في FileZilla افتح Edit > Settings > Connection > SFTP > Add key file واختر مفتاحك الخاص (الملف الذي لا ينتهي بـ .pub). قد يعرض FileZilla تحويله إلى صيغته الخاصة؛ وافق. لا تشارك المفتاح الخاص أبدًا.
3. حفظ الاتصال في مدير المواقع
- افتح 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 فقط محبوس داخل مجلد
لمنح عميل وصولًا إلى مجلد واحد فقط دون صدفة shell استخدم 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
اسم الخدمة ssh على Ubuntu وDebian، وsshd على AlmaLinux وRocky. يصل المستخدم المقيّد إلى /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 أو أن المجموعة تستطيع الكتابة فيه. ابحث عن "bad ownership or modes for chroot directory" في
journalctl -u ssh. - تعذر الرفع مع رفض الصلاحية على مجلد: المستخدم لا يملك الوجهة. أعد تنفيذ أمري
chownوchmodمن الخطوة 4.
✅ يمكنك الآن نقل الملفات بأمان إلى خادم VPS لينكس عبر FileZilla.