حل مشكلة رفض اتصال ⁦SSH⁩: ⁦Connection refused⁩ و ⁦Connection timed out⁩

⁦Connection refused⁩ تعني أن طلبك وصل إلى الخادم ولا شيء يستقبله على المنفذ، و ⁦Connection timed out⁩ تعني أن الطلب لا يصل أصلًا. هذه خطوات تحديد السبب وإصلاحه.

آخر تحديث:

ما الفرق بين الخطأين؟

⁦Connection refused⁩: الخادم يعمل وردّ عليك بالرفض، فالسبب غالبًا أن خدمة ⁦SSH⁩ متوقفة، أو تعمل على منفذ غير ⁦22⁩، أو أن جدارًا ناريًا يرفض الاتصال.

⁦Connection timed out⁩: لا يصلك أي رد، فالسبب غالبًا أن الخادم متوقف، أو العنوان خاطئ، أو جدار ناري يُسقط الطلب بصمت، أو شبكتك تحجب المنفذ.

أولًا: تأكد أن الخادم يعمل وأن العنوان صحيح

افتح لوحة مزوّدك وتأكد أن الخادم في حالة تشغيل وأن عنوان ⁦IP⁩ هو نفسه الذي تستخدمه. ثم أعد المحاولة مع الوضع المفصّل، فهو يخبرك أين يتوقف الاتصال.

⁦terminal⁩
$ ⁦ssh -v root⁩@⁦SERVER⁩_⁦IP⁩

ثانيًا: ادخل من شاشة الخادم وشغّل خدمة ⁦SSH⁩

شاشة الخادم (⁦VNC⁩ أو ⁦Console⁩) لا تحتاج إلى ⁦SSH⁩، فهي الطريق عندما لا يعمل الاتصال. سجّل الدخول منها ثم افحص الخدمة. اسمها ⁦ssh⁩ على ⁦Ubuntu⁩ و ⁦Debian⁩، و ⁦sshd⁩ على ⁦AlmaLinux⁩ و ⁦Rocky⁩ و ⁦CentOS⁩.

⁦console⁩
$ ⁦sudo systemctl status ssh⁩
$ ⁦sudo systemctl restart ssh⁩

ثالثًا: تأكد من المنفذ

إذا كانت الخدمة تعمل على منفذ غير ⁦22⁩ فيجب ذكره في أمر الاتصال. هذان الأمران يعرضان المنفذ الفعلي والمنفذ المكتوب في الإعدادات.

⁦console⁩
$ ⁦sudo ss -tlnp⁩ | ⁦grep ssh⁩
$ ⁦sudo grep -i⁩ '^⁦Port⁩' /⁦etc/ssh/sshd⁩_⁦config⁩
⁦terminal⁩
$ ⁦ssh -p 2222 root⁩@⁦SERVER⁩_⁦IP⁩

رابعًا: راجع الجدار الناري من الداخل والخارج

قد يوجد جداران: واحد داخل النظام (⁦ufw⁩ أو ⁦firewalld⁩) وآخر في لوحة المزوّد. يجب أن يسمح كلاهما بالمنفذ. على ⁦Ubuntu⁩ و ⁦Debian⁩ استخدم ⁦ufw⁩، وعلى عائلة ⁦Red Hat⁩ استخدم ⁦firewall-cmd⁩.

⁦console⁩
$ ⁦sudo ufw status⁩
$ ⁦sudo ufw allow 22/tcp⁩
⁦console⁩
$ ⁦sudo firewall-cmd --permanent --add-service⁩=⁦ssh⁩
$ ⁦sudo firewall-cmd --reload⁩

خامسًا: جرّب من شبكة أخرى

اتصل عبر بيانات الهاتف بدل شبكتك. إذا نجح الاتصال فالمشكلة في شبكتك أو في حظر عنوانك على الخادم. أداة ⁦fail2ban⁩ تحظر العناوين بعد محاولات دخول فاشلة، ويمكنك فكّ الحظر من شاشة الخادم.

⁦console⁩
$ ⁦sudo fail2ban-client status sshd⁩
$ ⁦sudo fail2ban-client set sshd unbanip YOUR⁩_⁦IP⁩
هل كانت الصفحة مفيدة؟