كيفية تثبيت دليل SSHFS عن بُعد تلقائيًا عند بدء التشغيل في دبيان

تقوم بتهيئة نقطة ربط SSHFS، وتتأكد من عملها، ثم تعيد تشغيل دبيان، وفجأة تجد المجلد البعيد فارغًا مرة أخرى. نجح الأمر اليدوي لأنك كنت مسجلاً دخولك، وكانت الشبكة متصلة بالفعل، وكان بإمكان SSH طلب تأكيد كلمة المرور أو مفتاح المضيف. أما نقاط الربط التي تتم أثناء بدء التشغيل فلا توفر هذه الميزات.

الحل الأمثل هو جعل مصادقة SSH غير تفاعلية، وإنشاء /etc/fstabمدخل دائم، وإخبار systemd بأن نظام الملفات يعتمد على الشبكة. يبدأ هذا الدليل بأبسط إعداد عملي، ثم يُضيف خيارات للشبكات البطيئة وجلسات SSH المنقطعة. تستخدم الأمثلة user@server.example.com:/srv/dataالدليل البعيد /mnt/remoteونقطة التحميل المحلية.

تُدرج صفحة حزمة دبيان حاليًا الإصدار 3.7.3 من SSHFS لنظام دبيان 12 (بوكوورم)، ويستخدم SSHFS نظام SFTP الفرعي المُقدّم من SSH. راجع صفحة حزمة SSHFS الخاصة بدبيان ودليل SSHFS الأصلي . تختلف مراجعات الحزمة بين إصدارات دبيان، ولكن طريقة التثبيت عند بدء التشغيل الموضحة أدناه تعتمد على سلوك fstab وsystemd القياسي.

لماذا يعمل نظام الملفات SSHFS يدوياً ولكنه يفشل عند بدء التشغيل؟

تُعزى معظم حالات الفشل إلى ثلاثة أسباب. أولًا، قد يتطلب SSH كلمة مرور أو عبارة مرور للمفتاح أو تأكيدًا أوليًا لمفتاح المضيف. ولا يوجد لدى عملية بدء التشغيل طرفية للاستجابة لهذه المطالبات. ثانيًا، قد يبدأ التثبيت قبل أن تصبح الشبكة أو نظام أسماء النطاقات (DNS) قابلة للاستخدام بشكل كامل. ثالثًا، قد يصبح اتصال SSH طويل الأمد غير مستقر بعد انقطاع الشبكة.

توضح وثائق systemd الخاصة بنظام دبيان أن هذا _netdevالخيار يُجبر النظام على التعامل مع نقطة التحميل كنقطة تحميل شبكية. وتُرتّب نقاط التحميل الشبكية بعد نقطة التحميل الرئيسية network-online.target. وتشير الوثائق نفسها إلى أنه /etc/fstabيتم تحويل الإدخالات إلى وحدات تحميل systemd أصلية عند بدء التشغيل. راجع systemd.mount(5) في دبيان .

1. قم بتثبيت SSHFS وإنشاء نقطة التحميل

قم بتثبيت عميل SSHFS المعبأ وقم بإنشاء الدليل المحلي الذي سيعرض الملفات البعيدة:

sudo apt update
sudo apt install sshfs
sudo mkdir -p /mnt/remote

يعتمد نظام SSHFS على FUSE، وهو نظام ملفات لينكس في واجهة مساحة المستخدم. في دبيان 12، sshfsتعتمد الحزمة على FUSE 3 وعميل OpenSSH.

يعرض طرفية دبيان تحديث apt، وتثبيت SSHFS، وإنشاء الدليل /mnt/remote
قم بتثبيت حزمة SSHFS وقم بإنشاء الدليل المحلي الذي سيصبح نقطة التحميل.

2. قم بإعداد مصادقة SSH التي يمكن تشغيلها بدون مطالبة.

بالنسبة لعملية ربط على مستوى النظام يتم تشغيلها بواسطة systemd، فإن إنشاء مفتاح مخصص مملوك للمستخدم الجذر أمر بسيط لأن أداة الربط تعمل بصلاحيات المستخدم الجذر. لا تقم بإنشاء مفتاح بدون عبارة مرور إلا إذا كان الجهاز نفسه موثوقًا به وكان المفتاح مخصصًا لهذا الغرض فقط.

sudo ssh-keygen -t ed25519 -f /root/.ssh/sshfs_remote
sudo ssh-copy-id -i /root/.ssh/sshfs_remote.pub user@server.example.com

يطلب الأمر الثاني عادةً كلمة مرور الحساب البعيد مرة واحدة. ثم يتم اختبار الهوية بدقة دون تفاعل.

sudo ssh -i /root/.ssh/sshfs_remote -o BatchMode=yes user@server.example.com true

إذا تم تنفيذ هذا الأمر بنجاح دون أي مطالبة، فهذا يعني أن عملية المصادقة جاهزة للإقلاع. أما إذا طُلب منك تأكيد بصمة الخادم، فقم بالاتصال مرة واحدة بشكل تفاعلي بصلاحيات المستخدم الجذر، وتحقق من البصمة باستخدام مصدر موثوق، ثم وافق عليها. لا تحاول تجاوز أخطاء مفتاح المضيف عن طريق تعطيل التحقق من المضيف.

تُعدّ وثائق OpenSSH BatchMode=yesمُخصصة تحديدًا للبرامج النصية ومهام الدفعات لأنها تُعطّل مطالبات كلمة المرور والتأكيد. يتم التحقق من مفاتيح المضيف مقابل ملف المستخدم known_hosts. راجع دليل Debian ssh(1) و ssh_config(5) .

طرفية دبيان تعرض إنشاء مفتاح SSH، و ssh-copy-id، واختبار اتصال SSH في وضع الدفعات
قم بإعداد الوصول إلى SSH باستخدام المفاتيح وتحقق من إمكانية نجاح الاتصال دون إدخال تفاعلي.

3. تأكد من تثبيت SSHFS يدويًا قبل تعديل fstab

لا تقم بتصحيح ترتيب الإقلاع حتى يعمل أمر SSHFS الأساسي. قم بتثبيت الدليل مرة واحدة باستخدام نفس المفتاح:

sudo sshfs user@server.example.com:/srv/data /mnt/remote   -o IdentityFile=/root/.ssh/sshfs_remote   -o reconnect   -o ServerAliveInterval=15   -o ServerAliveCountMax=3

تأكد من إمكانية عرض قائمة الملفات البعيدة، ثم قم بإلغاء تحميلها قبل اختبار ملف fstab:

ls -la /mnt/remote
sudo fusermount3 -u /mnt/remote

يوصي دليل SSHFS الأصلي reconnectبإعادة إنشاء الاتصالات المتقطعة. كما يوضح أنه ServerAliveIntervalيمكن منع حدوث تجميد ظاهري عند انقطاع اتصال SSH خامل دون إشعار. مع فاصل زمني قدره 15 ثانية وعدد محاولات الفحص غير المجابة الافتراضي في OpenSSH وهو ثلاث محاولات، يتم اكتشاف انقطاع الاتصال في غضون 45 ثانية تقريبًا؛ وقد ذُكر العدد هنا صراحةً ليكون السلوك واضحًا.

4. أضف إدخال SSHFS دائم إلى /etc/fstab

قم بعمل نسخة احتياطية من الملف قبل تعديله:

sudo cp /etc/fstab /etc/fstab.backup
sudo nano /etc/fstab

أضف سطرًا واحدًا:

user@server.example.com:/srv/data /mnt/remote fuse.sshfs _netdev,IdentityFile=/root/.ssh/sshfs_remote,BatchMode=yes,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,default_permissions 0 0

fuse.sshfsيتعرف نظام التثبيت في دبيان على هذا النوع الفرعي. كما يوثق دليل SSHFS الأصلي sshfsهذا النوع كنظام ملفات fstab، ويقدم ملاحظات fuse.sshfsحول التوافق. ويصف دليل fstab(5) الخاص بدبيان الحقول الستة في fstab، ويوصي باستخدام تدوين النوع الفرعي لنظام الملفات مثل fuse.sshfs.

خيارلماذا هو هنا؟
_netdevيجعل نظام systemd يتعامل مع نقطة التحميل على أنها تعتمد على الشبكة.
IdentityFile=...يختار المفتاح الخاص بشكل صريح بدلاً من الاعتماد على وكيل تفاعلي.
BatchMode=yesيفشل بدلاً من انتظار كلمة المرور أو طلب التأكيد.
reconnectيسمح لـ SSHFS بإعادة إنشاء اتصال منقطع.
ServerAliveInterval=15يرسل طلبات التحقق من الاتصال بمستوى SSH أثناء فترات الخمول.
ServerAliveCountMax=3يحد من عمليات التحقق من الاتصال التي لم تتم الإجابة عليها قبل قطع اتصال SSH.
default_permissionsيُمكّن من التحقق من الأذونات المحلية بالإضافة إلى التفويض عن بُعد.
محرر Nano يعرض مدخل SSHFS في ملف /etc/fstab مع خيارات _netdev و IdentityFile و reconnect و ServerAlive
أضف نقطة تحميل SSHFS إلى /etc/fstab مع خيارات الشبكة والهوية وإعادة الاتصال الصريحة.

5. اختبر إدخال fstab قبل إعادة التشغيل

/etc/fstabيسهل إصلاح الخطأ الإملائي قبل إعادة التشغيل. اطلب من systemd إعادة تحميل وحدات التحميل المُنشأة، ثم اختبر الإدخال.

sudo systemctl daemon-reload
sudo mount -a
findmnt -T /mnt/remote
ls -la /mnt/remote

إذا mount -aلم يُرجع الأمر أي خطأ وأبلغ findmntعن خطأ fuse.sshfs، فهذا يعني أن صيغة fstab مقبولة وأن نظام الملفات مُثبّت. ويؤكد دليل الأمر mount(8)mount -a الخاص بنظام دبيان أن الأمر يُثبّت أنظمة ملفات fstab باستثناء الإدخالات المُعلّمة بعلامة noauto.

طرفية دبيان تعرض الأمر mount -a، ومخرجات findmnt للمسار /mnt/remote، ووحدة تثبيت systemd نشطة
تحقق من إدخال fstab باستخدام mount -a و findmnt ووحدة التثبيت systemd التي تم إنشاؤها قبل إعادة التشغيل.

ماذا لو لم تكن الشبكة جاهزة في الوقت المناسب؟

_netdevيُوفر systemd دلالات الترتيب الصحيحة، لكن network-online.targetدقته تعتمد على خدمة إدارة الشبكة التي تُوفره. قد تُؤدي شبكات Wi-Fi، وشبكات VPN، وتأخيرات DHCP، وتأخيرات DNS، وبروتوكولات الشبكة غير التقليدية إلى عدم موثوقية عملية بدء التشغيل الفوري.

في هذه الحالة، استخدم خاصية التحميل التلقائي في systemd بحيث تُنشئ عملية الإقلاع نقطة تحميل تلقائي وتُنشئ اتصال SSHFS فقط عند أول وصول إليه /mnt/remote. أضف x-systemd.automountإلى الخيارات:

user@server.example.com:/srv/data /mnt/remote fuse.sshfs _netdev,x-systemd.automount,IdentityFile=/root/.ssh/sshfs_remote,BatchMode=yes,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,default_permissions 0 0

يُعدّ هذا الخيار الأمثل في أغلب الأحيان لأجهزة الكمبيوتر المحمولة، وأنظمة الواي فاي، والخوادم التي قد يتعذر فيها الوصول إلى المضيف البعيد أحيانًا. يُغيّر هذا الخيار دلالات الاتصال قليلًا: إذ يتم تجهيز التحميل التلقائي أثناء بدء التشغيل، ولكن يتم إنشاء اتصال SSH الفعلي عند أول وصول. إذا كان أحد التطبيقات يتطلب اتصال الدليل البعيد قبل بدء تشغيله، فاحتفظ بتحميل الشبكة العادي، واجعل وحدة systemd الخاصة بهذا التطبيق تعتمد على وحدة التحميل.

هل تحتاج إلى السماح للآخرين؟

بشكل افتراضي، لا يمكن الوصول إلى وحدة تخزين FUSE إلا ضمن الأذونات المرتبطة بسياق التركيب. يوضح دليل SSHFS allow_otherكيفية السماح بالوصول إليها من قِبل مستخدمين محليين آخرين. لا تقم بإضافتها إلا إذا كانت هناك خدمة أو حساب آخر يحتاج فعلاً إلى الملفات المُركّبة.

إذا كنت ستستخدمه allow_other، فراجع /etc/fuse.confأولاً الآثار الأمنية المترتبة على FUSE. يُنصح عمومًا بربطه بـ FUSE default_permissionsلضمان عدم تجاوز عمليات التحقق من صلاحيات نظام Unix المحلي. مع ذلك، يظل حساب SSH البعيد هو الذي يحدد في النهاية العمليات التي يسمح بها الخادم.

استكشاف أخطاء نظام ملفات SSHFS أثناء بدء التشغيل وإصلاحها

ينتظر الحامل كلمة المرور

أعد إجراء الاختبار غير التفاعلي نفسه sudo ssh ... -o BatchMode=yes. إذا فشل، فقم بإصلاح مصادقة المفتاح العام قبل تعديل systemd. يحتاج المفتاح المحمي بعبارة مرور إلى وكيل أو آلية سرية أخرى عند بدء التشغيل؛ لا يمكن لتركيب fstab العادي كتابة عبارة المرور نيابةً عنك.

فشل التحقق من مفتاح المضيف

لا تعتمد StrictHostKeyChecking=noعلى هذا الحل الشامل. تحقق مما إذا تمت إعادة بناء الخادم أو تغيير مفتاح المضيف الخاص به بشكل قانوني. يُعد فحص مفتاح مضيف SSH إجراءً أمنيًا ضد انتحال الهوية وهجمات الوسيط.

يعمل التثبيت بعد تسجيل الدخول ولكنه لا يعمل أثناء بدء التشغيل

تحقق من اسم الوحدة المُنشأة وسجلها. بالنسبة لـ /mnt/remote، يقوم systemd عادةً بتهريب المسار إلى mnt-remote.mount:

systemctl status mnt-remote.mount
journalctl -b -u mnt-remote.mount

إذا أضفت x-systemd.automount، فتحقق أيضًا مما يلي:

systemctl status mnt-remote.automount

يتوقف الوصول بعد اختفاء الخادم أو الشبكة.

تم تفعيل خاصية Keep reconnectوSSH keepalive. يحذر دليل SSHFS الأصلي من أن عمليات نظام الملفات قد تتوقف إلى أجل غير مسمى في حال عدم اكتشاف انقطاع الاتصال. تعمل خاصية Keepalive على تحديد نطاق اكتشاف الأعطال، ولكن أي عملية إدخال/إخراج كانت جارية عند انقطاع الاتصال قد تفشل، وقد يحتاج التطبيق إلى إعادة المحاولة.

كيفية التحقق من أن وحدة التثبيت تبقى سليمة بعد إعادة التشغيل

بعد mount -aنجاح العملية، أعد تشغيل الجهاز:

sudo reboot

بعد إعادة الاتصال، قم بتشغيل هذه الفحوصات:

findmnt -T /mnt/remote
systemctl is-active mnt-remote.mount
ls -la /mnt/remote

إذا اخترت ذلك x-systemd.automount، فقد تكون وحدة التثبيت غير نشطة حتى الوصول الأول. تحقق من التثبيت التلقائي أولاً، ثم قم بتشغيله باستخدام ls:

systemctl is-active mnt-remote.automount
ls -la /mnt/remote
findmnt -T /mnt/remote

تتضمن عملية الإعداد الناجحة أربع خصائص قابلة للملاحظة: إتمام مصادقة SSH تلقائيًا، ونجاح إدخال fstab mount -a، وتعرف systemd على نقطة التحميل كشبكة، وإمكانية الوصول إلى الملفات البعيدة بعد إعادة تشغيل النظام. في حال فشل أي من هذه الاختبارات، يُرجى استكشاف المشكلة في تلك الطبقة مباشرةً بدلاً من إضافة خيارات تحميل إضافية عشوائيًا.

اترك تعليقاً

إصلاح مشكلة تمزق الشاشة على معالجات رسومات Intel في نظام Pardus Linux: دليل عملي يركز على النتائج

إصلاح مشكلة تمزق الشاشة على معالجات رسومات Intel في نظام Pardus Linux: دليل عملي يركز على النتائج

قم بإصلاح مشكلة تمزق الشاشة في معالجات رسومات Intel في نظام Pardus Linux عن طريق التحقق من X11 مقابل Wayland، وإعدادات المُركِّب، ومعدل التحديث، وبرنامج تشغيل Xorg النشط، وTearFree فقط عند الاقتضاء.

كيفية تكوين جدار الحماية SLES 15 باستخدام firewall-cmd

كيفية تكوين جدار الحماية SLES 15 باستخدام firewall-cmd

قم بتكوين firewalld على SLES 15: تحقق من المناطق، واسمح بالخدمات أو المنافذ، واحفظ القواعد الدائمة، وأعد التحميل بأمان، وتحقق من الوصول.

دليل تهيئة التحديث المباشر لنظام SLES: تطبيق تحديثات النواة بدون إعادة تشغيل النظام

دليل تهيئة التحديث المباشر لنظام SLES: تطبيق تحديثات النواة بدون إعادة تشغيل النظام

قم بتمكين التصحيح المباشر للنواة على SLES 15 SP7، وقم بتطبيق الإصلاحات المدعومة دون إعادة التشغيل، وتحقق من التصحيحات النشطة، وافهم متى لا تزال إعادة تشغيل النواة مطلوبة.

كيفية تفعيل وضع FIPS على خادم SUSE Linux Enterprise Server 15

كيفية تفعيل وضع FIPS على خادم SUSE Linux Enterprise Server 15

قم بتمكين وضع FIPS على SLES 15 باستخدام أداة الإعداد المدعومة من SUSE، وأعد التشغيل بأمان، وتحقق من حالة سياسة النواة والتشفير، وتحقق من حدود الشهادة.

كيفية تثبيت جوجل كروم على نظام التشغيل جوجل روم دون الإخلال بسياسات الأمان

كيفية تثبيت جوجل كروم على نظام التشغيل جوجل روم دون الإخلال بسياسات الأمان

قم بتثبيت متصفح جوجل كروم على نظام التشغيل Gooroom OS بأمان باستخدام حزم .deb الرسمية، وAPT، وفحوصات السياسات، وإرشادات التحديث، وإصلاحات الأجهزة المُدارة.

كيفية تصدير سجلات نظام SLES إلى خادم Syslog بعيد بشكل آمن

كيفية تصدير سجلات نظام SLES إلى خادم Syslog بعيد بشكل آمن

إعادة توجيه سجلات نظام SLES بشكل آمن إلى خادم syslog بعيد باستخدام rsyslog وشهادات TLS والتحقق من اسم النظير وقوائم الانتظار والتحقق من الصحة والاختبار.

تكامل Active Directory مع SSSD في SLES 15: دليل خطوة بخطوة

تكامل Active Directory مع SSSD في SLES 15: دليل خطوة بخطوة

قم بربط نظام SLES 15 بـ Active Directory باستخدام SSSD عبر YaST. قم بإعداد DNS والوقت، وتكوين تسجيلات دخول المجال، والتحقق من Kerberos، ومقارنة SSSD وWinbind وrealmd.

Fix Realtek RTL8821CE Wi-Fi Driver Issues on Pardus Linux

Fix Realtek RTL8821CE Wi-Fi Driver Issues on Pardus Linux

Fix RTL8821CE Wi-Fi on Pardus Linux by checking the built-in rtw88 driver, Realtek firmware, rfkill, NetworkManager, and safe fallback options.

إصلاح مشكلة "فشل مؤقت في حل أسماء النطاقات" في دبيان 12 باستخدام systemd-resolved

إصلاح مشكلة "فشل مؤقت في حل أسماء النطاقات" في دبيان 12 باستخدام systemd-resolved

تشخيص وإصلاح حالات فشل تحليل DNS في Debian 12 باستخدام systemd-resolved، بما في ذلك resolv.conf و NetworkManager و networkd و cache و verification.

كيفية تثبيت نظامي التشغيل Pardus Linux وWindows 11 بأمان

كيفية تثبيت نظامي التشغيل Pardus Linux وWindows 11 بأمان

قم بتثبيت Pardus 25.2 بجانب Windows 11 عن طريق النسخ الاحتياطي، وتقليص حجم وحدة تخزين Windows، والتمهيد من USB UEFI، وحماية أقسام EFI والاسترداد الحالية.