يعمل Ping لكن SSH يفشل عبر VPN: أي مرحلة انكسرت؟
محاولة واحدة مطوّلة تفصل إمكانية الوصول عبر TCP، ونقل SSH، وهوية المضيف، وتسجيل دخول المستخدم، وإذن الجلسة، حتى تتوقف عن التخمين في النفق.
يمكن أن يكون رد Ping ورفض تسجيل دخول SSH صحيحين في الوقت نفسه، ولا يعني اجتماعهما أن النفق مسؤول. فاستجابات الصدى واتصال TCP بالمنفذ 22 اختبارات مختلفة بمحدّدات مختلفة وسياسات مختلفة ووجهات مختلفة غالبًا. التقط محاولة SSH واحدة متعمّدة، ثم سمِّ آخر مرحلة وصلت إليها. هذا الأثر الواحد يغني عن دستة من تغييرات الإعداد التخمينية.
التقط محاولة واحدة، لا جلسة من التجارب العشوائية
شغّل العميل مرة واحدة مع تشخيص مطوّل، ومشاركة الاتصال معطّلة، ومهلة اتصال محدودة. تعطيل المشاركة مهم لأن اتصالًا رئيسيًا مُوثّقًا سابقًا سيجيب بدلًا من ذلك عن المحاولة الجديدة ويخفي العطل الذي تتعقبه.
ssh -4 -vv -o ControlPath=none -o ConnectTimeout=10 [email protected]
احتفظ بالوجهة وعائلة العنوان والطابع الزمني والخطأ الأخير غير السري. ويعني علم IPv4 أيضًا أن هذه المحاولة لا تقول شيئًا عن مسار IPv6 إلى الاسم نفسه، فلا تعمّم منها. سجّل المكان الذي جرت منه المحاولة. الفحص على بوابة VPN ليس وجهة نظر واحدة كلابتوب خلفها، ومعظم التناقضات في هذه التذاكر تأتي من خلط الاثنين.
المرحلتان الأولى والثانية: TCP قبل SSH
الحد الأول هو إمكانية الوصول إلى المقبس: عنوان ومنفذ ومسار تسلكه الحزمة فعليًا. إذا لم يكتمل اتصال TCP أبدًا، فلا شيء فوقه موجود بعد، ومفاتيح المضيف والحسابات غير ذات صلة.
nc -vz 10.90.4.20 22
ip route get 10.90.4.20
tcpdump -ni any 'host 10.90.4.20 and port 22'
اربط الالتقاط بمحاولة العميل. خروج SYN دون أي عودة يشير إلى تصفية أو محدّدات أو مسار مفقود في الجهة الأخرى؛ وردّ بإعادة ضبط يشير إلى شيء يرفض بنشاط بدلًا من الإسقاط. الحد الثاني هو تبادل بروتوكول SSH نفسه. اتصال TCP يكتمل ثم يتوقف قد تجاوز إمكانية الوصول إلى التفاوض أو استجابة الخادم أو معالجة الحزم. ذلك تحقيق مختلف، وهو الموضع الذي تصبح فيه المشكلات المتعلقة بالحجم معقولة لأول مرة.
المرحلة الثالثة: مفتاح مَن أجاب
بعد أن يصبح النقل قائمًا، يتحقق العميل من مفتاح مضيف الخادم. الرفض هنا عبارة عن هوية، لا عن تعمية: فقد قدّم النظير مفتاحًا لا تقبله سياستك. اعتبر ذلك شرط توقف وتحقق خارج النطاق، من وحدة التحكم أو من المشغّل الذي أعاد بناء المضيف. حذف السجل المحفوظ لإسكات التحذير هو الاختصار الوحيد الذي يجب رفضه، لأنه يدمّر الدليل على أن شيئًا أجاب على نحو غير متوقع.
إذا أُعيد بناء المضيف فعلًا، فأزل السجل القديم فقط بعد تأكيد البصمة الجديدة، ودوّن التاريخ والسبب. سيلتقي المهندس التالي بالتحذير نفسه ويحتاج إلى هذا السياق.
المرحلتان الرابعة والخامسة: الحساب في مقابل الإذن
المصادقة هي الحد الرابع. رفض بيانات الاعتماد يعني أن الخادم قيّم المحاولة ورفضها؛ فافحص الحساب ونوع بيانات الاعتماد التي يقبلها الخادم وسياسة الخادم نفسها بدلًا من كلمة مرور VPN. الحد الخامس هو التخويل بعد تسجيل دخول ناجح. يمكن أن يُمنع مستخدم مُوثّق مع ذلك من صدفة أو أمر أو نظام فرعي أو إعادة توجيه، وتبدو تلك الرفضات كأعطال لمن يقرأ السطر الأخير من العميل فقط.
| Last stage reached | What it proves | Where to look next |
|---|---|---|
| No TCP connection | No SSH transport exists | Address, port, route, selectors, filter, listener |
| TCP up, exchange incomplete | Reachability is not the blocker | Server response, negotiation, packet handling |
| Host identity rejected | The peer is not the expected host | Independently verified host key |
| User authentication rejected | The attempt reached authentication | Account, credential and server policy |
| Authenticated, session denied | Login succeeded, the operation did not | Shell, command or forwarding permission |
توقّف بعد محاولتين أو نحو ذلك من محاولات كلمة المرور الفاشلة. فالتخمينات المتكررة تُنتج أقفالًا تبدو بعدها عطلًا ثانيًا غير ذي صلة وتكلّف وقتًا أكثر من التذكرة الأصلية.
التراجع والسجل الذي تحتفظ به
غيّر شيئًا واحدًا في كل مرة، واكتب ما غيّرته قبل إعادة الاختبار. إذا جعل تغيير المحاولة أسوأ، فارجع عنه فورًا بدلًا من تكديس إصلاح آخر فوقه. أعد العملية الأصلية من العميل والسياق الأصليين. تسجيل دخول ناجح من جهاز آخر، على عائلة عنوان مختلفة، ليس إعادة إنتاج ولا يثبت الإصلاح.
طهّر ما تشاركه. فمخرجات العميل المطوّلة قد تحمل أسماء داخلية وتسميات حسابات ومسارات مفاتيح ومعرّفات مفاتيح عامة، فانشر الاستنتاج المرحلي بدلًا من أثر خام.