المطورون
انتهاء مهلة SSH وGit على Mac
يحتاج SSH وGit إلى اتصال TCP يعمل بالخادم. قد تمنعهما شبكة تحظر المنفذ 22 أو مسار IPv6 معطّل أو وكيل.
الأعراض
- ينتظر
git pushأوgit clone، ثم يعرض «انتهت مهلة العملية». - يعرض
ssh«انتهت مهلة الاتصال» على شبكة، لكنه يعمل على أخرى. - تتجمد جلسة SSH بعد بضع دقائق من الخمول.
- تعمل مستودعات Git البعيدة عبر HTTPS، لكن مستودعات SSH لا تعمل.
الأسباب المحتملة
- المنفذ 22 محظور. تحظر بعض شبكات الشركات والفنادق والشبكات العامة SSH. تقول GitHub إن جدران الحماية ترفض أحيانًا اتصالات SSH.
- مسار IPv6 معطّل. يحاول Mac استخدام IPv6 أولًا. إذا لم يعمل IPv6، ينتظر الاتصال.
- تُغلق الاتصالات الخاملة. قد يسقط موجّه أو جدار حماية اتصالًا لا يرسل بيانات لبعض الوقت.
- الوكيل مطلوب. قد يحتاج Git عبر HTTPS على شبكة شركة إلى
http.proxyأو متغيرات الوكيل.
كيفية التحقق
اتصل مع إظهار التفاصيل. توضح الأسطر الأخيرة موضع توقف الاتصال.
ssh -vT git@github.comاختبر منفذ TCP وحده بمهلة 5 ثوانٍ.
nc -vz -G 5 github.com 22جرّب IPv4 فقط. إذا نجح ذلك، فالمشكلة في مسار IPv6.
ssh -4 -T git@github.comاختبر خدمة SSH لدى GitHub على المنفذ 443.
ssh -T -p 443 git@ssh.github.comاعرض إعداد الوكيل في Git ومتغيرات الوكيل.
git config --get http.proxy env | grep -i proxy
كيفية الإصلاح
إذا كان المنفذ 22 محظورًا، فاستخدم SSH عبر المنفذ 443 لـ GitHub. أضف هذه الكتلة إلى
~/.ssh/config.Host github.com Hostname ssh.github.com Port 443 User gitإذا فشل IPv6، فاستخدم IPv4 لذلك المضيف. أضف
AddressFamily inetإلى كتلته في~/.ssh/config.لإبقاء الجلسات الخاملة مفتوحة، أرسل رسالة كل 60 ثانية. أضف
ServerAliveInterval 60إلى كتلة المضيف.لتجنب الانتظار الطويل، أضف
ConnectTimeout 10إلى كتلة المضيف.للمستودعات البعيدة عبر HTTPS خلف وكيل، اضبط وكيل Git.
git config --global http.proxy http://proxy.example.com:8080للاختبار، استخدم URL الخاص بالمستودع عبر HTTPS بدلًا من URL الخاص بـ SSH.
باستخدام Kilobat
يفحص Kilobat الاتصال عبر IPv4 وIPv6 كلًا على حدة، فيعطي نتيجة واضحة لمسار IPv6 المعطّل.
kilobat why github.comاعرض الاتصالات المفتوحة لعملية واحدة.
kilobat destinations --pid 12345
الأسئلة
لماذا يعمل ssh -4 بينما لا يعمل ssh وحده؟
حاول Mac استخدام IPv6 أولًا، ولم يعمل مسار IPv6. باستخدام -4، يستخدم ssh بروتوكول IPv4 فقط.
ماذا يفعل ServerAliveInterval؟
يرسل ssh رسالة عبر الاتصال بعد انقضاء هذا العدد من الثواني دون بيانات. القيمة الافتراضية 0، ولا ترسل شيئًا.
المصادر
- وثائق GitHub: استخدام SSH عبر منفذ HTTPS
- صفحتا دليل ssh(1) وssh_config(5) المثبتتان مع macOS 27.2
- صفحة دليل nc(1) المثبتة مع macOS 27.2
- صفحة الدليل git-config(1)، http.proxy، المثبتة مع macOS 27.2 (Git 2.56)
تم التحقق في 29 أكتوبر 2026.