حل مشكلة رفض اتصال SSH: Connection refused و Connection timed out
Connection refused تعني أن طلبك وصل إلى الخادم ولا شيء يستقبله على المنفذ، و Connection timed out تعني أن الطلب لا يصل أصلًا. هذه خطوات تحديد السبب وإصلاحه.
آخر تحديث:
ما الفرق بين الخطأين؟
Connection refused: الخادم يعمل وردّ عليك بالرفض، فالسبب غالبًا أن خدمة SSH متوقفة، أو تعمل على منفذ غير 22، أو أن جدارًا ناريًا يرفض الاتصال.
Connection timed out: لا يصلك أي رد، فالسبب غالبًا أن الخادم متوقف، أو العنوان خاطئ، أو جدار ناري يُسقط الطلب بصمت، أو شبكتك تحجب المنفذ.
أولًا: تأكد أن الخادم يعمل وأن العنوان صحيح
افتح لوحة مزوّدك وتأكد أن الخادم في حالة تشغيل وأن عنوان IP هو نفسه الذي تستخدمه. ثم أعد المحاولة مع الوضع المفصّل، فهو يخبرك أين يتوقف الاتصال.
$ ssh -v root@SERVER_IPثانيًا: ادخل من شاشة الخادم وشغّل خدمة SSH
شاشة الخادم (VNC أو Console) لا تحتاج إلى SSH، فهي الطريق عندما لا يعمل الاتصال. سجّل الدخول منها ثم افحص الخدمة. اسمها ssh على Ubuntu و Debian، و sshd على AlmaLinux و Rocky و CentOS.
$ sudo systemctl status ssh $ sudo systemctl restart ssh
ثالثًا: تأكد من المنفذ
إذا كانت الخدمة تعمل على منفذ غير 22 فيجب ذكره في أمر الاتصال. هذان الأمران يعرضان المنفذ الفعلي والمنفذ المكتوب في الإعدادات.
$ sudo ss -tlnp | grep ssh $ sudo grep -i '^Port' /etc/ssh/sshd_config
$ ssh -p 2222 root@SERVER_IPرابعًا: راجع الجدار الناري من الداخل والخارج
قد يوجد جداران: واحد داخل النظام (ufw أو firewalld) وآخر في لوحة المزوّد. يجب أن يسمح كلاهما بالمنفذ. على Ubuntu و Debian استخدم ufw، وعلى عائلة Red Hat استخدم firewall-cmd.
$ sudo ufw status $ sudo ufw allow 22/tcp
$ sudo firewall-cmd --permanent --add-service=ssh $ sudo firewall-cmd --reload
خامسًا: جرّب من شبكة أخرى
اتصل عبر بيانات الهاتف بدل شبكتك. إذا نجح الاتصال فالمشكلة في شبكتك أو في حظر عنوانك على الخادم. أداة fail2ban تحظر العناوين بعد محاولات دخول فاشلة، ويمكنك فكّ الحظر من شاشة الخادم.
$ sudo fail2ban-client status sshd $ sudo fail2ban-client set sshd unbanip YOUR_IP

