دانستنی‌های دنیای وب و زیرساخت

وصل نشدن SSH به سرور؛ رفع Timeout، Refused و Permission denied

سرور و کلید اتصال SSH با مسیر شبکه به سبک ایزومتریک

وصل نشدن SSH به سرور را از متن خطا دسته‌بندی کنید: timeout معمولاً بررسی مسیر و فیلتر شبکه را می‌طلبد؛ Connection refused بیشتر به نبود listener یا رد فعال اتصال اشاره دارد؛ Permission denied یعنی به مرحله احراز هویت رسیده‌اید. راه‌حل این سه حالت یکسان نیست و تغییر تصادفی رمز، پورت و فایروال می‌تواند دسترسی را سخت‌تر کند.

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

نقشه سریع تشخیص خطای اتصال SSH

پیام یا نشانهکدام مرحله؟بررسی بعدی
Could not resolve hostnameپیداکردن مقصداملای نام و پاسخ DNS
Connection timed outبرقراری اتصال شبکهIP، پورت، مسیر و فیلترها
Connection refusedاتصال رد شدهlistener و سرویس یا قانون رد فعال
Permission deniedاحراز هویتکاربر، کلید و سیاست ورود
Host key verification failedتطبیق هویت سروراثر انگشت از مسیر مورد اعتماد

این جدول راهنمای انتخاب قدم بعدی است، نه تشخیص قطعی همه معماری‌ها. برای نمونه، یک تجهیز میان مسیر می‌تواند اتصال را رد کند؛ بنابراین refused الزاماً ثابت نمی‌کند که پاسخ از خود VPS آمده است. زمان دقیق و نتیجه آزمون از یک شبکه مستقل، به محدودکردن مسئله کمک می‌کند.

۱. IP، نام کاربری و پورت واقعی را دوباره تطبیق دهید

اطلاعات را از پنل رسمی سرویس یا مستندات تحویل بگیرید. پس از نصب مجدد یا تغییر IP، میانبر قدیمی ممکن است به مقصد قبلی اشاره کند. نام کاربر پیش‌فرض در همه توزیع‌ها یکسان نیست. اگر ارائه‌دهنده ورود root را مجاز ندانسته، اصرار بر همان نام کاربری کمکی نمی‌کند؛ کاربر مجاز تحویل‌داده‌شده را استفاده کنید.

اگر با دامنه وصل می‌شوید، پاسخ DNS را با IP مورد انتظار مقایسه کنید. برای دامنه دارای A و AAAA، کلاینت ممکن است مسیر IPv6 را امتحان کند. تفاوت رفتار دو مسیر را از اطلاعات اتصال ببینید و به‌جای حذف عمومی IPv6، رکورد و مسیر واقعی را بررسی کنید. برای عیب‌یابی DNS، راهنمای NXDOMAIN مسیر مکملی ارائه می‌کند.

ssh -p 22 USER@SERVER_IP

در فرمان نمونه، 22 را فقط اگر پورت واقعی شماست نگه دارید. گزینه -p با حرف کوچک در ssh برای پورت است. از کپی‌کردن IP داخل یک مقاله به‌عنوان مقصد آزمایش خودداری کنید؛ مقدارهای بزرگ‌نویسی‌شده این راهنما جای‌نگهدارند و باید تعویض شوند.

۲. پورت TCP را از دستگاه خودتان بررسی کنید

در ویندوز، Test-NetConnection در PowerShell می‌تواند برقراری اتصال TCP به پورت موردنظر را بررسی کند. این آزمون ورود به حساب را انجام نمی‌دهد و موفقیت آن به معنی معتبر بودن کلید یا مجازبودن کاربر نیست. نتیجه TcpTestSucceeded را در کنار آدرس مقصد و شبکه‌ای که از آن وصل هستید بخوانید.

Test-NetConnection -ComputerName SERVER_IP -Port 22

اگر آزمون موفق نشد، IP و پورت را دوباره تطبیق دهید و در صورت امکان از یک اتصال مستقل مجاز مقایسه کنید. پاسخ ping برای SSH کافی نیست و نبود پاسخ ping نیز بازنبودن TCP را ثابت نمی‌کند؛ ممکن است ICMP محدود شده باشد. به‌جای بازکردن همه پورت‌ها، همان پورت و مبدأ مشخص را در مسیر بررسی کنید.

تصویر ایزومتریک سه مسیر عیب‌یابی وصل نشدن SSH به سرور
نمای مفهومی خطاهای شبکه، سرویس و احراز هویت؛ متن دقیق خطای اتصال را مبنای انتخاب مسیر عیب‌یابی قرار دهید.

۳. برای timeout، فیلترهای مسیر را مرحله‌به‌مرحله ببینید

محدودیت می‌تواند در شبکه محلی، فایروال سیستم‌عامل VPS، فایروال پنل ارائه‌دهنده یا قانون مبدأ مجاز باشد. اگر IP اینترنت شما عوض شده، allowlist قدیمی ممکن است دیگر با مبدأ شما تطبیق نداشته باشد. وجود یک قانون در UFW، سلامت فایروال بیرونی را اثبات نمی‌کند؛ هر لایه مسئولیت جدا دارد.

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

۴. برای refused، listener و سرویس را از کنسول بررسی کنید

اگر SSH تنها راه دسترسی شماست و اکنون قطع است، کنسول وب یا سریال ارائه‌دهنده نقطه شروع است. در سیستم دارای systemd، وضعیت واحد SSH را بخوانید. نام سرویس در برخی توزیع‌ها ssh و در برخی sshd است. از نام واقعی نصب خودتان استفاده کنید. در معماری socket activation، وضعیت socket نیز باید در نظر گرفته شود.

sudo ss -lntp
systemctl status ssh --no-pager
sudo journalctl -u ssh --since "30 minutes ago"

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

sudo /usr/sbin/sshd -t

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

۵. برای Permission denied، کلید و سیاست ورود را بررسی کنید

وقتی به این مرحله می‌رسید، تغییر فایروال معمولاً پاسخ مسئله احراز هویت نیست. نام کاربر را کنترل کنید، مطمئن شوید کلید عمومی درست برای همان حساب نصب است و کلاینت کلید خصوصی موردنظر را ارائه می‌دهد. در دستگاهی با چند کلید، انتخاب صریح کلید به تشخیص کمک می‌کند. کلید خصوصی را برای پشتیبانی ارسال نکنید.

ssh -vv -o IdentitiesOnly=yes -i /path/to/private_key -p 22 USER@SERVER_IP

خروجی verbose نشان می‌دهد کدام روش و کلید امتحان شده است. لاگ را پیش از اشتراک‌گذاری از نام‌ها، مسیرهای خصوصی و نشانی‌های حساس پاک کنید. در سمت سرور، مالکیت و مجوز پوشه خانه، .ssh و authorized_keys و تنظیمات Match را بررسی کنید. مجوز 777 برای حل مشکل، نه لازم است و نه جایگزین اصلاح مالکیت و سیاست درست می‌شود.

با هشدار تغییر کلید میزبان چه کنیم؟

پس از نصب مجدد، تغییر کلید می‌تواند طبیعی باشد، اما نباید آن را بدون تطبیق بپذیرید. اثر انگشت جدید را از کنسول رسمی یا مسیر مورد اعتماد ارائه‌دهنده بگیرید و با هشدار کلاینت مقایسه کنید. اگر تطبیق ندارید، اتصال را ادامه ندهید و بررسی کنید به IP درست وصل می‌شوید. پاک‌کردن کامل known_hosts صرفاً برای حذف هشدار، هویت مقصد را اثبات نمی‌کند.

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

پس از اصلاح، یک نشست جدید باز کنید، هویت سرور را تطبیق دهید و با کاربر مجاز وارد شوید. نشست قدیمی را تا پایان آزمون نگه دارید. اگر پورت یا قانون مبدأ تغییر کرده، مستندات دسترسی تیم را نیز اصلاح کنید. یک اتصال موفق از شبکه داخلی، الزاماً مسیر خارجی موردنیاز شما را بررسی نکرده است.

گزارش مناسب شامل IP مقصد، پورت، زمان و منطقه زمانی، متن دقیق خطا و نتیجه TCP از شبکه شماست. رمز و کلید خصوصی لازم نیست. برای انتخاب زیرساخت، مشخصات سرور مجازی ایران و برای نگهداری و بررسی تکرار اختلال، خدمات مدیریت سرور آفاق هاست را ببینید.

پرسش‌های رایج

آیا عوض‌کردن پورت SSH مشکل timeout را حل می‌کند؟

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

چرا ping موفق است اما SSH وصل نمی‌شود؟

ICMP و TCP پورت SSH دو آزمون متفاوت‌اند. سرویس، پورت و قوانین TCP را جدا بررسی کنید.

آیا برای Permission denied باید ورود رمزی یا root را فعال کنم؟

خیر. ابتدا نام کاربر، کلید و سیاست موجود را بررسی کنید. کاهش حفاظت ورود، جای تشخیص علت رد احراز هویت نیست.

منابع رسمی

از مطالعه تا اجرا

سرویس‌های مرتبط با این مطلب

برای بررسی راهکار مناسب، مشخصات و شرایط این خدمات را ببینید.

مدیریت سرور و سایت

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

بررسی سرویس
نظر شما مهم است

این مطلب چقدر برایتان مفید بود؟

اولین نفری باشید که به این مطلب امتیاز می‌دهد.

ادامه گفت‌وگو

این مطلب را به اشتراک بگذارید

اگر برایتان مفید بود، آن را برای همکاران و دوستانتان بفرستید.

تجربه شما، ادامه این مطلب

پرسش‌ها و دیدگاه‌های شما

سؤال یا تجربه مرتبط با این مطلب دارید؟ با ما و خوانندگان مجله آفاق هاست در میان بگذارید.

دیدگاهتان را بنویسید

دیدگاه‌ها پس از بررسی منتشر می‌شوند. لطفاً پرسش یا تجربه مرتبط با همین مطلب را بنویسید.

برای ادامه مطالعه
همه مطالب مجله
قدم بعدی را با هم برداریم

برای شروع، یک گفت‌وگو کافی‌ست.

از انتخاب سرور تا ساخت وب‌سایت، مسیر مناسب کسب‌وکارتان را پیدا کنیم.

تماس با آفاق هاست 021-91092061