رفع مشکل

خطای Connection timed out و Connection refused در SSH؛ رفع گام‌به‌گام

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۶ دقیقه

ERRConnectiontimedoutرفع مشکلخطای Connection timedout و Connection refusedدر SSH؛ رفع گام‌به‌گاممجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

«Connection refused» یعنی بستهٔ شما به سرور رسیده ولی روی آن پورت سرویسی گوش نمی‌دهد (sshd متوقف است یا پورت عوض شده). «Connection timed out» یعنی پاسخی نمی‌رسد؛ معمولاً به‌خاطر خاموش بودن سرور، فایروال، آی‌پی اشتباه یا اختلال مسیر شبکه. ابتدا آی‌پی و پورت را چک کنید، سپس وضعیت سرور را در پنل ببینید و در نهایت فایروال و سرویس SSH را بررسی کنید.

تفاوت timeout و refused در یک نگاه

پیغام معنی محتمل‌ترین علت‌ها
Connection refused سرور در دسترس است ولی پورت بسته است sshd متوقف، پورت SSH تغییر کرده، سرور در حال بوت
Connection timed out پاسخی از سرور نمی‌رسد سرور خاموش یا در حال ساخت، فایروال، آی‌پی اشتباه، اختلال مسیر
No route to host مسیری به مقصد نیست مشکل شبکهٔ محلی یا مسیر
Connection timed out
  • هیچ پاسخی برنمی‌گردد
  • فایروال بسته، آی‌پی اشتباه یا مسیر شبکه قطع
  • سرور ممکن است خاموش باشد
در برابر
Connection refused
  • سرور پاسخ می‌دهد اما پورت بسته است
  • sshd اجرا نیست یا پورت عوض شده
  • سرور روشن است
شکل ۱ timeout یعنی بسته‌ها گم می‌شوند؛ refused یعنی سرور صریحاً رد می‌کند.

ابزار تشخیص سریع

ping -c 4 SERVER_IP
nc -vz SERVER_IP 22
ssh -v root@SERVER_IP

خروجی ssh -v نشان می‌دهد اتصال در کدام مرحله متوقف شده است.

me@laptop: ~
$ ping -c 3 203.0.113.10$ nc -vz 203.0.113.10 22Connection to 203.0.113.10 22 port [tcp/ssh] succeeded!$ ssh -v root@203.0.113.10$ 
شکل ۲ سه دستور برای اینکه بفهمید مشکل از شبکه است، پورت یا خود SSH (آی‌پی نمونه است).

۱۰ علت رایج و راه‌حل

۱. آی‌پی یا پورت اشتباه

آی‌پی را از پنل کپی کنید. اگر پورت SSH را تغییر داده‌اید، آن را با -p مشخص کنید: ssh -p 2222 root@SERVER_IP.

۲. سرور هنوز در حال ساخت یا نصب سیستم‌عامل است

پس از ساخت یا نصب مجدد، نصب سیستم‌عامل چند دقیقه طول می‌کشد و SSH پاسخ نمی‌دهد. صبر کنید تا وضعیت سرور در پنل «فعال» شود.

۳. سرور خاموش یا متوقف است

وضعیت سرور را در پنل ببینید. اگر موجودی کیف پول تمام شده باشد، سرور متوقف می‌شود؛ با شارژ کیف پول در مهلت تعیین‌شده خودکار روشن می‌شود.

۴. فایروال UFW پورت SSH را بسته است

اگر به کنسول دسترسی دارید:

sudo ufw status
sudo ufw allow 22/tcp

همیشه پیش از فعال کردن UFW، پورت SSH را باز کنید.

۵. سرویس SSH متوقف شده است

sudo systemctl status ssh
sudo systemctl restart ssh

در برخی توزیع‌ها نام سرویس sshd است.

۶. پورت SSH تغییر کرده ولی فایروال به‌روز نشده

پس از تغییر Port در /etc/ssh/sshd_config، پورت جدید را در فایروال باز کنید و تا اطمینان از اتصال، نشست فعلی را نبندید.

۷. Fail2ban آی‌پی شما را مسدود کرده است

چند تلاش ناموفق ورود می‌تواند آی‌پی شما را موقتاً مسدود کند. از آی‌پی دیگری وارد شوید و بررسی کنید:

sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip YOUR_IP

۸. اختلال مسیر بین‌الملل یا اپراتور

اگر سرور خارج است و اتصال از یک اپراتور قطع ولی از اپراتور دیگر برقرار است، مشکل از مسیر شبکه است. با mtr SERVER_IP محل قطعی را پیدا کنید و در صورت امکان از شبکهٔ دیگری امتحان کنید.

۹. محدودیت شبکهٔ محل کار یا اینترنت عمومی

برخی شبکه‌ها پورت ۲۲ خروجی را می‌بندند. از اینترنت همراه یا شبکهٔ دیگری تست کنید.

۱۰. کلید یا رمز اشتباه

اگر پیغام Permission denied می‌گیرید، اتصال برقرار است و مشکل احراز هویت است. رمز را از پنل ببینید یا بازنشانی کنید و مسیر کلید را با -i مشخص کنید.

اگر هیچ‌کدام جواب نداد

  • سرور را از پنل ری‌استارت کنید.
  • در آخرین راه، اگر داده‌های مهمی روی سرور ندارید، سیستم‌عامل را از پنل دوباره نصب کنید (همهٔ داده‌ها پاک می‌شود).
  • تیکت پشتیبانی ثبت کنید و این اطلاعات را بفرستید: آی‌پی سرور، زمان دقیق مشکل، خروجی ssh -v و mtr، و اینکه از کدام اپراتور وصل می‌شوید.

عیب‌یابی گام‌به‌گام با خروجی ssh -v

خروجی ssh -v مرحله‌به‌مرحله نشان می‌دهد اتصال کجا متوقف شده است. چند الگوی رایج:

آخرین خط خروجی مرحله معنی و اقدام
Connecting to SERVER_IP port 22. و سپس توقف برقراری TCP سرور پاسخ نمی‌دهد: وضعیت سرور، فایروال یا مسیر شبکه
connect to host ... Connection refused TCP سرور در دسترس است اما sshd روی این پورت نیست
Connection established. و سپس توقف طولانی تبادل کلید اختلال مسیر یا MTU؛ از اینترنت دیگری تست کنید
kex_exchange_identification: Connection closed پس از اتصال sshd اتصال را بسته: Fail2ban، محدودیت MaxStartups یا تنظیمات اشتباه
Permission denied (publickey,password) احراز هویت شبکه سالم است؛ کلید یا رمز اشتباه است

تست از بیرون: مشکل از شبکهٔ شماست یا سرور؟

  • با اینترنت دیگری (مثلاً اینترنت همراه به‌جای ADSL یا برعکس) دوباره وصل شوید. اگر وصل شد، مشکل از مسیر اپراتور اول است.
  • اگر سرور دیگری دارید، از آن به سرور مقصد SSH بزنید: ssh -o ConnectTimeout=5 root@SERVER_IP.
  • برای بررسی مسیر و از دست رفتن بسته‌ها از mtr استفاده کنید؛ راهنمای کامل در رفع پینگ بالا و Packet Loss.

تنظیمات سمت کلاینت برای اتصال پایدارتر

اگر اتصال برقرار می‌شود ولی پس از مدتی بی‌کاری قطع می‌شود، در فایل ~/.ssh/config روی کامپیوتر خودتان این تنظیمات را اضافه کنید:

Host myserver
    HostName SERVER_IP
    User root
    Port 22
    ServerAliveInterval 30
    ServerAliveCountMax 4
    ConnectTimeout 15

سپس فقط با ssh myserver وصل شوید. برای کار طولانی، از tmux استفاده کنید تا با قطع اتصال، کار متوقف نشود (دستورات ضروری لینوکس).

پیشگیری از قفل شدن

  1. پیش از تغییر پورت SSH یا فعال کردن فایروال، یک پنجرهٔ SSH باز نگه دارید و اتصال جدید را در پنجرهٔ دوم تست کنید.
  2. پورت جدید را قبل از تغییر در sshd_config، در فایروال باز کنید (آموزش UFW).
  3. پس از ویرایش sshd_config با sudo sshd -t درستی تنظیمات را بررسی کنید و بعد ری‌استارت کنید.
  4. اگر ورود با رمز را غیرفعال می‌کنید، مطمئن شوید ورود با کلید کار می‌کند (کلید SSH و تغییر پورت).
  5. آی‌پی خودتان را در Fail2ban در فهرست ignoreip قرار دهید (اگر آی‌پی ثابت دارید).

گزارش به پشتیبانی

اگر هیچ‌کدام از مراحل جواب نداد، با این اطلاعات تیکت ثبت کنید تا بررسی سریع‌تر شود: آی‌پی سرور، زمان دقیق خطا، اپراتور اینترنت شما، خروجی ssh -v و نتیجهٔ ping و nc -vz. پشتیبانی کلودیفای هر روز از ساعت ۹ تا ۲۲ پاسخ‌گوست.

سؤالات متداول

چرا SSH بعد از ساخت سرور وصل نمی‌شود؟

احتمالاً نصب سیستم‌عامل هنوز تمام نشده است. چند دقیقه صبر کنید تا وضعیت سرور «فعال» شود.

چطور بفهمم مشکل از سرور است یا از اینترنت من؟

از یک شبکهٔ دیگر (مثلاً اینترنت همراه) تست کنید. اگر از آنجا وصل شد، مشکل از مسیر شبکهٔ اول است.

بعد از فعال کردن UFW قفل شدم؛ چه کنم؟

از کنسول یا حالت Rescue (در صورت وجود) وارد شوید و پورت SSH را باز کنید؛ در غیر این صورت با پشتیبانی تماس بگیرید.

ping جواب می‌دهد ولی SSH وصل نمی‌شود؛ چرا؟

ping از پروتکل ICMP استفاده می‌کند و SSH از TCP پورت ۲۲. پاسخ ping یعنی سرور روشن است، اما پورت SSH ممکن است با فایروال بسته یا sshd متوقف باشد.

پس از نصب مجدد سیستم‌عامل، خطای «REMOTE HOST IDENTIFICATION HAS CHANGED» می‌گیرم.

کلید میزبان سرور عوض شده است. با ssh-keygen -R SERVER_IP کلید قدیمی را از کامپیوتر خود پاک و دوباره وصل شوید.

از PuTTY استفاده می‌کنم؛ همین مراحل صدق می‌کند؟

بله؛ پیغام‌ها کمی متفاوت‌اند (مثلاً «Network error: Connection timed out»)، اما علت‌ها و راه‌حل‌ها یکسان است. آموزش اتصال SSH روش ویندوز را هم توضیح می‌دهد.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.