قبل از اینکه به دلایل این مشکل بپردازیم، ابتدا ایده این خطا را بررسی کنیم.
خطای Connection refused به این معنی است که درخواست برای اتصال به سرور شما از طریق SSH ارسال شده است ، اما سرور این درخواست را قبول نمی کند و پیام خطا را ارسال می کند.
در این مورد شما با اروری شبیه زیر مواجه خواهید شد:
ssh: connect to host 192.xxx.12x.1x port xx: Connection refused
این ارور می تواند 4 دلیل داشته باشد که به آن ها می پردازیم.
سرویس SSH از کار افتاده باشد
سرویس SSH از daemon sshd برای گوش دادن به اتصالات ورودی استفاده می کند و احراز هویت کاربر، اتصالات ترمینال و غیره را مدیریت می کند.
بنابراین، در صورت خرابی این سرویس، با این ارور رو به رو می شوید.
راه حل:
دلیل خرابی سرویس ها می تواند موجب ترافیک، قطع شدن منابع، خطاهای دیسک، حملات DDoS و غیره باشد.
اگر سرویس به شمکل خورده باشد و نتواند پاسخی برای درخواست های ما بدهد ، ما پروسه خراب را قطع می کنیم و سرویس را مجددا راه اندازی می کنیم.
برای مثال، در یک CentOS 7، سرویس SSH را با استفاده از فرمان زیر راه اندازی مجدد کنید.
systemctl restart sshd
پس از آن، ما تأیید میکنیم که SSH در حال اجرا است و خروجی مانند این خواهد بود.
sshd.service – OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Mon 2018-12-19 10:00:22 GMT; 3 days ago
پورت SSH اشتباه است
از آنجا که پورت های استاندارد برای آسیب پذیری بیشتر مورد حمله قرار میگیرند ، بسیاری از میزبان های وب پورت SSH را به یک پورت سفارشی تغییر می دهند.
حال اگر به پورت اشتباه درخواست ارتباط ارسال نمایید با این ارور رو به رو می شوید.
راه حل:
در بیشتر سیستم ها، فایل پیکربندی سرویس SSH در / etc / ssh / sshd_config قرار دارد. برای شناسایی پورت مورد استفاده در سیستم، برای مشخص کردن پارامتر “Port” باید فایل کانفیگ SSH را بررسی کنید.
محدودیت فایروال
به طور مشابه، مشکلات اتصال SSH ممکن است به دلیل تنظیمات فایروال نامناسب رخ دهد.
بعضی از شبکه های عمومی ممکن است به طور پیش فرض SSH پورت 22 یا SSH پورت های سفارشی را مسدود کند.
اگر پورت ها برای اتصالات در فایروال مجاز نباشند، اتصال می تواند منجر به خطا شود و اتصال SSH را رد کند.
راه حل:
در ابتدا ما اتصال به پورت SSH را از یک شبکه خارجی مورد بررسی قرار میدهیم:
telnet IP PORT
در اینجا IP را با آی پی سرور مورد نظر و PORT با پورت SSH جایگزین کنید.
اگر ما قوانینی را که اتصال به پورت SSH را ببینیم ، ما باید آن را در تنظیمات فایروال حذف نماییم.
برای مثال، در سرورهای CentOS، اگر ما یک قانون را برای رد کردن یا DROP اتصالات ورودی در پورت SSH ببینیم، این قانون را از فایروال حذف خواهیم کرد.
به این صورت عمل می نماییم:
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
آدرس آی پی میزبان اشتباه است
در صورتی که آی پی سرور را اشتباه وارد کنید ممکن است یبا این ارور بر خورد کنید که مشخصا برای رفع آن باید آی پی درست را وارد نمایید.