- تنفيذ شبكة افتراضية خاصة مشفرة لربط خوادم SFTP دون تعريض المنافذ للإنترنت العام.
- إدارة الهوية والأذونات باستخدام قوائم التحكم بالوصول (ACLs) للتحكم بدقة في من يصل إلى الملفات ومن أي جهاز.
- مزامنة البيانات بين العقد البعيدة والخوادم المستضافة ذاتيًا باستخدام عناوين IP ثابتة و MagicDNS.
قد يكون الوصول إلى خادم ملفات منزلي من الإنترنت أمرًا معقدًا عندما يستخدم الاتصال تقنية CGNAT، أو عندما يحظر مزود خدمة الإنترنت الاتصالات الواردة، أو عندما لا نرغب ببساطة في فتح منافذ على جهاز التوجيه. لا يمنع عنوان IP العام الديناميكي وحده الوصول عن بُعد، ولكن يتطلب ذلك استخدام نظام أسماء النطاقات الديناميكي (DNS) والتكوين الصحيح لجدار الحماية وإعادة توجيه المنافذ..
أحد البدائل هو الجمع SFTPo مع Tailscaleيقوم Tailscale بإنشاء شبكة خاصة مشفرة بين الأجهزة المصرح لها، بينما يدير SFTPGo المستخدمين والمجلدات وعمليات نقل الملفات. وبهذه الطريقة، يمكننا الوصول إلى الخادم دون نشر خدمة SFTP مباشرة على الإنترنت.
كيف يعمل برنامج SFTPo مع نظام Tailscale

يستخدم Tailscale تقنية WireGuard لربط المعدات على نفس الشبكة الخاصة، والتي تسمى شبكة الذيليحصل كل جهاز على عنوان ثابت ضمن النطاق المحدد. 100.64.0.0/10والتي يمكن الحفاظ عليها حتى في حالة تغيير الاتصال المادي أو عنوان IP الذي خصصه المشغل.
عندما يكون بإمكان جهازين التواصل مباشرةً، يقوم Tailscale بإنشاء الاتصال بينهما. أما إذا كان تكوين NAT أو جدار الحماية يمنع ذلك، فيمكنه استخدام خادم وسيط. في كلتا الحالتين، تظل حركة البيانات مشفرة من طرف إلى طرف بين الأجهزةعلى الرغم من أن الاتصال عبر مرحل قد يوفر سرعة أقل.
يضيف SFTPGo طبقة ثانية من التحكم. يحدد نظام Tailscale الأجهزة التي يمكنها الوصول إلى الخادم.مع ذلك، لا يزال برنامج SFTPGo يتطلب اسم مستخدم وكلمة مرور صالحين أو مفتاح SSH. لذا، فإن الانضمام إلى شبكة tailnet لا يمنح الوصول إلى الملفات تلقائيًا.
قم بتثبيت Tailscale على الخادم وعلى أجهزة العملاء

قم بتثبيت Tailscale على الكمبيوتر الذي يعمل عليه SFTPGo وقم بتوثيقه. باتباع التعليمات الخاصة بنظام التشغيل لديك. على خادم لينكس، بعد تثبيت الحزمة الرسمية، يمكنك عادةً بدء عملية الربط باستخدام:
sudo tailscale up
للعثور على عنوان IPv4 المخصص للخادم، استخدم ما يلي:
tailscale ip -4
أيضًا يمكنك تفعيل MagicDNS من لوحة تحكم Tailscaleتتيح لك هذه الميزة الاتصال باستخدام اسم الجهاز بدلاً من حفظ عنوان IP الخاص به. ضمن نفس الشبكة، قد يكفي اسم مثل [أدخل الاسم هنا]. servidor-archivosقد يحتاج المستخدمون الخارجيون الذين تشارك معهم الجهاز إلى معرفة أسمائهم الكاملة التي تنتهي بـ .ts.net.
يجب أن تعمل أجهزة الكمبيوتر والأجهزة المحمولة التي تريد الاتصال منها بنظام Tailscale أيضًا. لستَ بحاجة إلى استخدام نفس الحساب على جميعها.يمكنك دعوة مستخدمين آخرين أو مشاركة الخادم فقط مع متعاون خارجي.
قم بتهيئة SFTPgo للاستماع على الشبكة الخاصة
في صورة Docker الرسمية، يستخدم SFTPGo ما يلي افتراضيًا: المنفذ 2022 لاتصالات SFTP والمنفذ 8080 مخصص لواجهة الإدارة. لا تفترض أن الخدمة ستكون متاحة على المنفذ 22.
إذا كنت تستخدم Docker أو Coolify أو أي منصة حاويات أخرى، فتحقق من الواجهات التي تعرض المنافذ المنشورة. على سبيل المثال: 2022:2022 يمكنه الاستماع على جميع واجهات الخادم. لتقييده على Tailscale، يمكنك ربط المنفذ بعنوان الخادم الخاص عندما تسمح المنصة بذلك.
ports:
- "100.101.102.103:2022:2022"
استبدل عنوان المثال بعنوان IP الفعلي الموضح بواسطة tailscale ip -4إذا تعذر إنشاء هذا الاتصال، فاستخدم جدار حماية الخادم للسماح بالمنفذ 2022 فقط من واجهة Tailscale. كما يجب عدم إتاحة واجهة الإدارة للعامة.
إذا قمت بتشغيل SFTPGo في Docker، فإنه يحتفظ بالمجلدات /srv/sftpgo y /var/lib/sftpgo عبر وحدات التخزين الدائمة. تستخدم الصورة الرسمية معرف المستخدم (UID) ومعرف المجموعة (GID) 1000 افتراضيًا، لذا يجب أن تسمح الدلائل المثبتة من المضيف بالكتابة إلى هذا المستخدم.
أنشئ مستخدمين وحدد عدد المجلدات المشتركة
أنشئ حساب SFTPGo منفصل لكل شخص يحتاج إلى الوصول. يُتيح لك ذلك إلغاء حساب مستخدم دون التأثير على حسابات المستخدمين الآخرين. واطلع على أنشطتهم بشكل منفصل.
خصص لكل حساب مجلدًا رئيسيًا محدودًا، وامنحه الصلاحيات اللازمة فقط. إذا كان المستخدم يحتاج فقط إلى تنزيل الملفات، فلا تمنحه صلاحية تحميلها أو حذفها أو إعادة تسميتها. يُفضل استخدام المصادقة باستخدام مفتاح SSH العام بدلاً من الاعتماد كلياً على كلمة المرور.
يُكمّل كلٌّ من Tailscale وSFTPGo وظائفهما. حتى لو قيّدت سياسة Tailscale الوصول إلى المنفذ الصحيح، فإنه لا يزال من الضروري تكوين المستخدمين والمفاتيح والأذونات بشكل صحيح داخل SFTPGo.
شارك الخادم دون فتح شبكة Tailnet بأكملها

إذا كان المستلم ينتمي إلى مؤسستك أو عائلتك، يمكنك إضافته إلى قائمة المتابعين مع منحه الأذونات المناسبة. أما بالنسبة للتعاونات الفردية، فمن الأفضل استخدام وظيفة مشاركة جهازسيتمكن المستلم من الوصول إلى الخادم المشترك، لكنه لن يحصل على وصول تلقائي إلى بقية أجهزة الكمبيوتر.
يمكنك أيضًا إنشاء سياسة تسمح للمستخدمين الخارجيين المشتركين بالاتصال فقط بالمنفذ 2022 للخادم. مثال على ذلك:
"grants": [
{
"src": ["autogroup:shared"],
"dst": ["100.101.102.103"],
"ip": ["tcp:2022"]
}
]
يجب استبدال عنوان المثال بعنوان IP الخاص بخادم Tailscale، ودمج القاعدة بشكل صحيح في ملف السياسة الحالي. قبل حفظ التغييرات، تأكد من عدم وجود قاعدة أخرى أوسع نطاقًا تسمح بالوصول إلى خدمات إضافية.
عند انتهاء التعاون، قم بإزالة الدعوة أو الجهاز المشترك و كما أنه يعطل الحساب المقابل على SFTPGo.
كيفية الاتصال من عميل SFTP

افتح برنامج عميل متوافق، مثل FileZilla أو WinSCP أو Cyberduck، واستخدم هذه البيانات:
- بروتوكول: SFTP.
- الخادم: عنوان IP الخاص بنظام Tailscale أو اسم MagicDNS.
- ميناء: 2022، إلا إذا قمت بتغييره.
- مستخدم: تم إنشاء الحساب على SFTPGo.
- المصادقة: كلمة مرور SSH أو المفتاح الخاص.
قد يعرض الاتصال الأول بصمة مفتاح الخادم. تحقق من مطابقتها للبصمة المُكوّنة في SFTPGo قبل قبولها، خاصةً إذا كنت تنقل معلومات حساسة.
ما الذي يجب التحقق منه إذا لم يكن الاتصال يعمل؟
ينفذ tailscale status للتأكد من أن كلا الجهازين متصلان واستخدامهما tailscale ping servidor-archivos للتحقق من إمكانية التواصل بينهما. ويمكن أن تشير النتيجة أيضاً إلى ما إذا كان الاتصال مباشراً أم يتم عبر وسيط.
إذا كان Tailscale يعمل ولكن عميل SFTP لا يتصل، تأكد من بدء تشغيل الحاوية, أن المنفذ 2022 مُعلن عنه على الواجهة الصحيحة، وأنه لا توجد قاعدة جدار حماية تحظره.تحقق أيضًا من اسم المستخدم ومفتاح SSH وسجلات SFTPGo.
لا تقم بالتكوين يدويًا 100.100.100.100 يُستخدم خادم نظام أسماء النطاقات العالمي (DNS) فقط لتشخيص أعطال MagicDNS. أولًا، تأكد من تفعيل MagicDNS، وأن الجهاز يقبل إعدادات نظام أسماء النطاقات (DNS) الخاصة بـ Tailscale، وأنك تستخدم اسم النطاق المؤهل بالكامل عند الوصول إلى جهاز مشترك.
يجب أيضًا عدم الخلط بين SFTPGo وTailscale SSH. يوفر Tailscale SSH إمكانية الوصول إلى وحدة التحكم لبعض خوادم Linux، ويمكنه إدارة المنفذ 22 ضمن شبكة Tailnet. يُمنع إبقاء SFTPGo على منفذه الافتراضي 2022 حدوث تعارضات بين الخدمتين.
يُتيح دمج SFTPGo وTailscale الوصول إلى الملفات الخاصة دون الاعتماد على عنوان IP عام ثابت أو فتح خادم SFTP للإنترنت بأكمله. مع ذلك، يعتمد الأمان الأمثل على تقييد المنافذ المُعرَّضة، وتطبيق سياسات الوصول، واستخدام حسابات فردية، وتحديث كلٍّ من SFTPGo وTailscale باستمرار.
أنا من عشاق التكنولوجيا وقد حول اهتماماته "المهووسة" إلى مهنة. لقد أمضيت أكثر من 10 سنوات من حياتي في استخدام التكنولوجيا المتطورة والتعديل على جميع أنواع البرامج بدافع الفضول الخالص. الآن تخصصت في تكنولوجيا الكمبيوتر وألعاب الفيديو. وذلك لأنني منذ أكثر من 5 سنوات أكتب لمواقع مختلفة حول التكنولوجيا وألعاب الفيديو، وأقوم بإنشاء مقالات تسعى إلى تزويدك بالمعلومات التي تحتاجها بلغة مفهومة للجميع.
إذا كان لديك أي أسئلة، فإن معرفتي تتراوح بين كل ما يتعلق بنظام التشغيل Windows وكذلك Android للهواتف المحمولة. والتزامي تجاهك هو أنني على استعداد دائمًا لقضاء بضع دقائق ومساعدتك في حل أي أسئلة قد تكون لديكم في عالم الإنترنت هذا.