وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

تفاوت Connection refused و Connection timed out در SSH

تفاوت خطای refused و timed out در اتصال SSH و روش آزمایش پورت، سرویس و مسیر شبکه بدون خاموش کردن فایروال.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله تفاوت Connection refused و Connection timed out در SSH در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
می‌خواهید به سرور وصل شوید، ولی SSH یکی از دو پیام Connection refused یا Connection timed out را نشان می‌دهد. هر دو مانع ورود می‌شوند، اما سرنخ یکسانی ندارند. پیش از تغییر تنظیمات، آدرس و پورت واقعی سرور را از پنل یا مدیر آن بگیرید. در مثال زیر example.com فقط نمونه است.

refused یعنی چه؟

معمولاً یعنی تلاش اتصال به مقصد یا دستگاهی در مسیر رسیده و پاسخ رد دریافت کرده است. ممکن است برنامه SSH روی آن پورت گوش ندهد، پورت اشتباه باشد یا یک فایروال اتصال را صریح رد کند. این پیام به تنهایی اثبات نمی‌کند سرور خاموش است.

timeout یعنی چه؟

یعنی در زمان تعیین‌شده پاسخ لازم برای برقراری اتصال دریافت نشده است. قطع مسیر شبکه، محدودیت فایروال، آدرس اشتباه یا مشکل سرور از احتمال‌ها هستند. Timeout به تنهایی نمی‌گوید کدام طرف بسته را مسدود کرده است. قبل از دستکاری تنظیمات، همین آزمایش را با اینترنت دیگری نیز انجام دهید؛ نتیجه دو شبکه می‌تواند برای پشتیبانی سرنخ مفیدی باشد.

پورت و نشانی را دقیق امتحان کنید

در PowerShell ویندوز به جای نام و پورت نمونه، اطلاعات واقعی را قرار دهید:
کد / دستورTest-NetConnection example.com -Port 22
اگر TcpTestSucceeded برابر True باشد، آن آزمایش TCP به آن مقصد و پورت موفق بوده است. اگر False باشد، هنوز مشخص نیست مشکل از سرویس، دیواره آتش یا مسیر است. پینگ و پاسخ SSH یکی نیستند؛ شکست پینگ به تنهایی برای نتیجه‌گیری کافی نیست.
برای دیدن جزئیات اتصال SSH از این دستور استفاده کنید:
کد / دستورssh -v -p 22 user@example.com
نام کاربری، پورت و نشانی را با اطلاعات واقعی جایگزین کنید. خروجی را پیش از ارسال مرور کنید؛ اطلاعات حساب یا نشانی‌های خصوصی را فقط از مسیر امن در اختیار پشتیبانی قرار دهید. خطای رمز یا کلید بعد از برقراری اتصال، موضوع جداگانه‌ای است.

از کنسول ببینید سرویس فعال است و به چه پورتی گوش می‌دهد

اگر کنسول سرور را در پنل ارائه‌دهنده دارید، از همان راه وارد شوید. این کنسول به اتصال SSH رایانه شما وابسته نیست. در میزبانی اشتراکی معمولاً به کنسول مدیریتی دسترسی ندارید؛ در آن حالت نتیجه آزمایش‌های بالا، زمان خطا و پورت را برای میزبان بفرستید و از او بخواهید وضعیت سرویس و قانون دسترسی IP شما را بررسی کند.
در سرور لینوکسی، وضعیت سرویس و پورت‌های فعال را ببینید:
کد / دستورsudo systemctl status ssh sudo systemctl status sshd sudo ss -lntp
معمولاً فقط یکی از نام‌های ssh یا sshd وجود دارد؛ پیام نبودن نام دیگر به‌تنهایی نشانه خرابی نیست. در خروجی سرویس، active (running) یعنی سرویس فعال است و inactive یعنی اکنون اجرا نمی‌شود. در خروجی ss به ستون Local Address:Port نگاه کنید: عدد بعد از دونقطه پورت است. اگر نشانی فقط 127.0.0.1 باشد، آن سرویس از بیرون مستقیماً در دسترس نیست. حالا طبق نتیجه خودتان یکی از دو بخش بعدی را دنبال کنید.

اگر سرویس خاموش است، آن را از کنسول بالا بیاورید

کنسول پنل سرور و یک نشست مدیریتی باز را نگه دارید. اگر در Ubuntu نام واقعی سرویس ssh.service و وضعیت آن inactive است، پس از اطمینان از اینکه توقف عمدی نبوده این فرمان را در کنسول اجرا کنید:
کد / دستورsudo systemctl start ssh.service sudo systemctl status ssh.service --no-pager
در AlmaLinux معمولاً نام سرویس sshd.service است؛ همان دو فرمان را با این نام اجرا کنید. اگر شروع نشد، با sudo sshd -t پیکربندی را آزمایش و با sudo journalctl -u sshd.service -n 50 --no-pager گزارش Alma را ببینید؛ در Ubuntu نام سرویس را ssh.service بگذارید. به خطاهای کلید، پورت یا تنظیم رسیدگی کنید و صرفاً تکرار فرمان را ادامه ندهید. این شروع، فعال‌سازی دائمی پس از راه‌اندازی مجدد نیست.

اگر پورت یا آدرس گوش‌دادن اشتباه است

اگر ss نشان می‌دهد سرویس روی پورت 2222 گوش می‌دهد، ابتدا از رایانه با پورت واقعی و بدون تغییر سرور امتحان کنید: ssh -p 2222 user@example.com. اگر لازم است پورت را تغییر دهید، از تنظیمات SSH و فایل‌های شامل‌شده پشتیبان بگیرید، کنسول را باز نگه دارید و فقط پورت مجاز مورد نیاز را با هماهنگی مدیر در تنظیم سرویس و فایروال همان مسیر اصلاح کنید. پیش از اعمال، sudo sshd -t را اجرا کنید؛ در صورت خطا فایل قبلی را برگردانید. روی Ubuntu ممکن است سرویس از socket activation استفاده کند و پورت در واحد socket تنظیم شده باشد؛ ابتدا systemctl status ssh.socket و مستندات همان نسخه را ببینید.
اگر سرویس فقط روی 127.0.0.1 گوش می‌دهد، ابتدا مشخص کنید این محدودیت عمدی یا برای تونل است. برای دیدن تنظیم مؤثر، این دستور را اجرا کنید:
کد / دستورsudo sshd -T | grep -E '^(port|listenaddress) '
اگر واقعاً باید از بیرون مجاز باشد، محل خط ListenAddress را در فایل اصلی /etc/ssh/sshd_config و فایل‌های شامل‌شده پیدا کنید. قبل از ویرایش، از همان فایل یک کپی با نام مشخص و متفاوت بگیرید. فقط آدرس مجاز سرور را جایگزین آدرس داخلی کنید؛ پورت و دیگر گزینه‌ها را بی‌دلیل تغییر ندهید. به جای باز کردن همه فایروال، فقط مبدأ و پورت مجاز را اجازه دهید. سپس sudo sshd -t را اجرا کنید؛ اگر خطا داد، پیکربندی را اعمال نکنید و فایل پشتیبان را برگردانید.
پس از تست موفق، در AlmaLinux معمولاً sudo systemctl reload sshd.service و در Ubuntu معمولاً sudo systemctl reload ssh.service تنظیم را دوباره می‌خواند؛ نام و روش فعال‌سازی را در همان سیستم کنترل کنید. سپس ss و یک اتصال تازه از شبکه مجاز را امتحان کنید. اگر اتصال جدید شکست خورد، از کنسول نسخه پشتیبان همان فایل را برگردانید، تست پیکربندی و reload سرویس مربوط را تکرار کنید. در میزبانی اشتراکی معمولاً این دسترسی وجود ندارد؛ از میزبان بخواهید وضعیت سرویس، پورت و قانون مربوط به IP مجاز شما را بررسی کند.
برای پشتیبانی، نتیجه دو شبکه، زمان با منطقه زمانی، مقصد، پورت و متن دقیق خطا را ارسال کنید. ارائه‌دهنده سپس می‌تواند قوانین امنیتی و دسترسی سرور را با همان داده‌ها بررسی کند.
اگر برای راه‌اندازی پروژه در ایران به سرور تازه نیاز دارید، در صفحه سرور مجازی ایران می‌توانید مشخصات پلن‌ها را ببینید؛ برای رفع مشکل اتصال سرور فعلی ابتدا همان بررسی‌های بالا را انجام دهید.
برچسب‌ها:
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام