معرفی
آیا در دسترسی به سرور راه دور از طریق SSH مشکل دارید؟ اگر خطای SSH با پیام Connection Refused دریافت نمودید، ممکن است لازم باشد درخواست را تغییر دهید یا تنظیمات را بررسی کنید.
در این آموزش، رایج ترین دلایل خطای اتصال SSH را بررسی میکنیم.
چرا وقتی SSH می زنیم اتصال برقرار نمیشود؟
دلایل زیادی وجود دارد که ممکن است هنگام تلاش برای SSH به سرور خود با خطای “Connection Refused” مواجه شوید. برای حل این مشکل، ابتدا باید شناسایی کنید که چرا سیستم اتصال شما را از طریق SSH رد کرده است.
-
کلاینت SSH نصب نشده است
قبل از عیب یابی سایر مشکلات، اولین قدم این است که بررسی کنید آیا SSH به درستی نصب شده است یا خیر. دستگاهی که از آن به سرور دسترسی دارید باید کلاینت SSH را راه اندازی کند. بدون راهاندازی صحیح کلاینت، نمیتوانید از راه دور وارد سرور شوید.
برای بررسی اینکه آیا کلاینت SSH روی سیستم خود دارید یا خیر، کامند های زیر را در سرور ران کنید:
ssh
اگر ترمینال لیستی از گزینه های دستور ssh را ارائه دهد، کلاینت SSH روی سیستم نصب می شود. با این حال، اگر با دستور یافت نشد پاسخ داد، باید OpenSSH Client را نصب کنید.
راه حل: SSH Client را نصب کنید
برای نصب SSH Client بر روی دستگاه خود، ترمینال را باز کرده و یکی از دستورات فهرست شده در زیر را اجرا کنید.
برای سیستم هایUbuntu/Debian:
sudo apt install openssh-client
برای سیستم های CentOS/RHEL:
sudo yum install openssh-client
توجه: برای راهنمای گام به گام نصب، نحوه نصب OpenSSH در CentOS یا نحوه فعال کردن SSH در اوبونتو را بررسی کنید.
-
SSH Daemon روی سرور نصب نشده است
درست همانطور که برای دسترسی به سرور راه دور به نسخه سرویس گیرنده SSH نیاز دارید، برای گوش دادن و پذیرش اتصالات به نسخه سرور نیز نیاز دارید. بنابراین، اگر سرور SSH مفقود باشد یا راهاندازی معتبر نباشد، سرور ممکن است اتصال ورودی را رد کند.
برای بررسی اینکه آیا SSH در سرور راه دور موجود است، دستور را اجرا کنید:
ssh localhost
اگر خروجی با Connection Refused پاسخ داد، به نصب SSH روی سرور بروید.
راه حل: SSH را روی سرور راه دور نصب کنید
برای رفع مشکل سرور SSH از دست رفته، به نحوه نصب سرور OpenSSH مراجعه کنید.
اعتبارنامه اشتباه است
اشتباهات تایپی یا اعتبارنامه های نادرست دلایل رایج برای رد اتصال SSH هستند. اطمینان حاصل کنید که نام کاربری یا رمز عبور را اشتباه تایپ نکرده اید.
سپس، بررسی کنید که آیا از آدرس IP صحیح سرور استفاده می کنید یا خیر.
در نهایت، بررسی کنید که پورت SSH صحیح را باز کرده اید. شما می توانید با اجرا بررسی کنید:
grep Port /etc/ssh/sshd_config
خروجی شماره پورت را مانند تصویر زیر نمایش می دهد.
سرویس SSH از کار افتاده است
سرویس SSH باید فعال و در پس زمینه اجرا شود. اگر سرویس قطع باشد، دیمون SSH نمی تواند اتصالات را بپذیرد.
برای بررسی وضعیت سرویس این دستور را وارد کنید:
sudo service ssh status
خروجی باید پاسخ دهد که سرویس فعال است. اگر ترمینال پاسخ داد که سرویس قطع است، آن را فعال کنید تا مشکل برطرف شود.
راه حل: سرویس SSH را فعال کنید
اگر سیستم نشان داد که دیمون SSH فعال نیست، میتوانید با اجرای زیر سرویس را راهاندازی کنید:
systemctl start sshd
برای فعال کردن سرویس در هنگام بوت، دستور زیر را اجرا کنید:
sudo systemctl enable sshd
-
فایروال از اتصال SSH جلوگیری می کند
SSH می تواند به دلیل محدودیت های فایروال از اتصال خودداری کند. فایروال از سرور در برابر اتصالات مضر بالقوه محافظت می کند. با این حال، اگر SSH را روی سیستم تنظیم کردهاید، باید فایروال را طوری پیکربندی کنید که اجازه اتصال SSH را بدهد.
اطمینان حاصل کنید که فایروال اتصالات SSH را مسدود نمی کند زیرا ممکن است باعث خطای “اتصال رد شده” شود.
راه حل: اجازه اتصال SSH از طریق فایروال را بدهید
برای رفع مشکلی که در بالا به آن اشاره کردیم، میتوانید از ufw (فایروال بدون عارضه)، ابزار رابط خط فرمان برای مدیریت پیکربندی فایروال استفاده کنید.
دستور زیر را در پنجره ترمینال تایپ کنید تا اتصالات SSH مجاز باشد:
sudo ufw allow ssh
-
پورت SSH بسته است
هنگامی که سعی می کنید به یک سرور راه دور متصل شوید، SSH درخواستی را به یک پورت خاص ارسال می کند. برای پذیرش این درخواست، سرور باید پورت SSH را باز داشته باشد.
اگر پورت بسته باشد، سرور از اتصال خودداری می کند.
به طور پیشفرض، SSH از پورت 22 استفاده میکند. اگر هیچ تغییری در پیکربندی در پورت ایجاد نکردهاید، میتوانید بررسی کنید که آیا سرور به درخواستهای ورودی گوش میدهد یا خیر.
برای فهرست کردن همه پورت هایی که در حال گوش دادن هستند، اجرا کنید:
sudo lsof -i -n -P | grep LISTEN
پورت 22 را در خروجی پیدا کنید و بررسی کنید که STATE آن روی LISTEN تنظیم شده است یا خیر.
همچنین، می توانید بررسی کنید که آیا یک پورت خاص باز است یا خیر، در این مورد، پورت 22:
sudo lsof -i:22
راه حل: پورت SSH را باز کنید.
برای فعال کردن پورت 22 برای LISTEN به درخواست ها، از دستور iptables استفاده کنید:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
همچنین می توانید با تغییر تنظیمات فایروال پورت ها را از طریق رابط کاربری گرافیکی باز کنید.
-
اشکال زدایی و ثبت SSH
برای تجزیه و تحلیل مشکلات SSH در لینوکس، می توانید حالت verbose یا حالت debugging را روشن کنید. هنگامی که این حالت را فعال می کنید، SSH پیام های اشکال زدایی را نمایش میدهد که به عیب یابی مشکلات مربوط به اتصال ، پیکربندی و احراز هویت کمک می کند.
ssh -v [server_ip]
به طور متناوب، می توانید استفاده کنید:
ssh -vv [server_ip]
یا :
ssh -vvv [server_ip]
نتیجه :
این مقاله برخی از رایج ترین دلایل خطای Connection Refused در SSH را فهرست کرده است. برای عیب یابی مشکل، لیست را مرور کنید و مطمئن شوید که تمام تنظیمات به درستی پیکربندی شده اند.
همچنین در مقاله میتوانید امنیت SSH و در مقاله تغییر پورت SSH را بررسی بفرمایید.