المطورون

انتهاء مهلة SSH وGit على Mac

يحتاج SSH وGit إلى اتصال TCP يعمل بالخادم. قد تمنعهما شبكة تحظر المنفذ 22 أو مسار IPv6 معطّل أو وكيل.

ينطبق على: جميع إصدارات macOS الحالية مع OpenSSH وGit المثبّتين بواسطة macOS أو Homebrew.تاريخ التحقق: 29 أكتوبر 2026

الأعراض

  • ينتظر git push أو git clone، ثم يعرض «انتهت مهلة العملية».
  • يعرض ssh «انتهت مهلة الاتصال» على شبكة، لكنه يعمل على أخرى.
  • تتجمد جلسة SSH بعد بضع دقائق من الخمول.
  • تعمل مستودعات Git البعيدة عبر HTTPS، لكن مستودعات SSH لا تعمل.

الأسباب المحتملة

  • المنفذ 22 محظور. تحظر بعض شبكات الشركات والفنادق والشبكات العامة SSH. تقول GitHub إن جدران الحماية ترفض أحيانًا اتصالات SSH.
  • مسار IPv6 معطّل. يحاول Mac استخدام IPv6 أولًا. إذا لم يعمل IPv6، ينتظر الاتصال.
  • تُغلق الاتصالات الخاملة. قد يسقط موجّه أو جدار حماية اتصالًا لا يرسل بيانات لبعض الوقت.
  • الوكيل مطلوب. قد يحتاج Git عبر HTTPS على شبكة شركة إلى http.proxy أو متغيرات الوكيل.

كيفية التحقق

  1. اتصل مع إظهار التفاصيل. توضح الأسطر الأخيرة موضع توقف الاتصال.

    ssh -vT git@github.com
  2. اختبر منفذ TCP وحده بمهلة 5 ثوانٍ.

    nc -vz -G 5 github.com 22
  3. جرّب IPv4 فقط. إذا نجح ذلك، فالمشكلة في مسار IPv6.

    ssh -4 -T git@github.com
  4. اختبر خدمة SSH لدى GitHub على المنفذ 443.

    ssh -T -p 443 git@ssh.github.com
  5. اعرض إعداد الوكيل في Git ومتغيرات الوكيل.

    git config --get http.proxy
    env | grep -i proxy

كيفية الإصلاح

  1. إذا كان المنفذ 22 محظورًا، فاستخدم SSH عبر المنفذ 443 لـ GitHub. أضف هذه الكتلة إلى ~/.ssh/config.

    Host github.com
        Hostname ssh.github.com
        Port 443
        User git
  2. إذا فشل IPv6، فاستخدم IPv4 لذلك المضيف. أضف AddressFamily inet إلى كتلته في ~/.ssh/config.

  3. لإبقاء الجلسات الخاملة مفتوحة، أرسل رسالة كل 60 ثانية. أضف ServerAliveInterval 60 إلى كتلة المضيف.

  4. لتجنب الانتظار الطويل، أضف ConnectTimeout 10 إلى كتلة المضيف.

  5. للمستودعات البعيدة عبر HTTPS خلف وكيل، اضبط وكيل Git.

    git config --global http.proxy http://proxy.example.com:8080
  6. للاختبار، استخدم URL الخاص بالمستودع عبر HTTPS بدلًا من URL الخاص بـ SSH.

باستخدام Kilobat

  1. يفحص Kilobat الاتصال عبر IPv4 وIPv6 كلًا على حدة، فيعطي نتيجة واضحة لمسار IPv6 المعطّل.

    kilobat why github.com
  2. اعرض الاتصالات المفتوحة لعملية واحدة.

    kilobat destinations --pid 12345

الأسئلة

لماذا يعمل ssh -4 بينما لا يعمل ssh وحده؟

حاول Mac استخدام IPv6 أولًا، ولم يعمل مسار IPv6. باستخدام -4، يستخدم ssh بروتوكول IPv4 فقط.

ماذا يفعل ServerAliveInterval؟

يرسل ssh رسالة عبر الاتصال بعد انقضاء هذا العدد من الثواني دون بيانات. القيمة الافتراضية 0، ولا ترسل شيئًا.

المصادر

تم التحقق في 29 أكتوبر 2026.