خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه رفع خطای SSH “Connection Refused” در لینوکس

خطای SSH “connection رد شد” می تواند مانع از دسترسی شما به ماشین های راه دور در شبکه شود. در اینجا نحوه عیب یابی آن آمده است.

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

بیایید به برخی از دلایل احتمالی دریافت خطای SSH “connection reded” و روش‌های رفع آن نگاهی بیندازیم.

1. بررسی کنید که آیا سرور SSH نصب شده است یا خیر

یکی از دلایل احتمالی خطای “اتصال رد شد” این است که دستگاه راه دور یک سرور SSH را اجرا نمی کند. بدون سرور SSH، دستگاه اتصالات SSH ورودی را نمی پذیرد و شما نمی توانید از راه دور به آن دسترسی داشته باشید.

بنابراین اولین قدم در عیب یابی خطا این است که بررسی کنید آیا سرور SSH روی دستگاه راه دور نصب شده است یا خیر. برای تأیید نصب سرور SSH از دستور زیر استفاده کنید:

در توزیع های مبتنی بر دبیان:

dpkg --list | grep ssh

در توزیع های مبتنی بر RHEL:

yum list installed | grep ssh

در openSUSE:

zypper search -i | grep ssh

در مورد توزیع های مبتنی بر Arch:

pacman -Q | grep ssh

اگر سرور SSH روی دستگاه راه دور نصب شده باشد، آن را در خروجی لیست می‌کنید. در غیر این صورت، باید سرور OpenSSH را روی دستگاه راه دوری که می خواهید از طریق SSH به آن دسترسی داشته باشید، نصب کنید. OpenSSH یک نسخه منبع باز از ابزار SSH برای دسترسی از راه دور و کنترل سیستم ها است.

مطلب مرتبط:   وابستگی های بسته در لینوکس چیست؟ توضیح داد

برای نصب سرور OpenSSH از دستورات زیر استفاده کنید:

در توزیع های مبتنی بر دبیان:

sudo apt install openssh-server

در توزیع های مبتنی بر RHEL:

sudo yum install openssh-server

در openSUSE:

sudo zypper install openssh

در مورد توزیع های مبتنی بر Arch:

pacman -S openssh

2. وضعیت سرویس SSH را بررسی کنید

یکی دیگر از دلایل دریافت خطای “اتصال رد شده” می تواند این باشد که سرویس SSH غیرفعال است یا در دستگاه راه دور اجرا نمی شود. هنگامی که مطمئن شدید که سرور SSH نصب شده است، دومین چیزی که باید بررسی کنید وضعیت سرور است.

sudo systemctl status sshd

اگر سرویس راه اندازی و اجرا شود، خروجی آن را فعال (در حال اجرا) نشان می دهد. در غیر این صورت چیزی شبیه غیرفعال (مرده) خواهید دید.

وضعیت سرور SSH

اگر سرور SSH در حال اجرا نیست، می توانید با استفاده از دستور زیر آن را به صورت دستی راه اندازی کنید:

sudo systemctl start sshd

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

sudo systemctl enable sshd

3. پورت SSH را بررسی کنید

به طور پیش فرض، سرور SSH روی پورت 22 اجرا می شود. با این حال، می توان پورت پیش فرض را تغییر داد. بنابراین، اگر خطای SSH “connection redd” را دریافت کردید، ممکن است به این دلیل باشد که در حال تلاش برای اتصال به سرور SSH در درگاه پیش‌فرض 22 در حالی که در پورت دیگری در حال اجرا است.

می توانید از دستور netstat با grep برای یافتن پورتی که سرور SSH به آن گوش می دهد استفاده کنید:

sudo netstat -plntu | grep ssh

پورت ssh را بررسی کنید

همچنین می توانید پورت SSH را از فایل sshd_config با استفاده از دستور زیر پیدا کنید:

grep port /etc/ssh/sshd_config

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

مطلب مرتبط:   نحوه رفع خطای عدم دسترسی ویندوز 0x80070005

4. فایروال سیستم خود را بررسی کنید

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

برای اینکه بفهمید آیا فایروال اتصال را مسدود می کند یا خیر، با استفاده از دستورات زیر فایروال را به طور موقت غیرفعال کنید:

در توزیع‌های لینوکس مبتنی بر دبیان و آرچ:

sudo ufw disable

در توزیع های مبتنی بر RHEL و openSUSE:

sudo systemctl disable firewalld

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

در توزیع‌های لینوکس مبتنی بر دبیان و آرچ، از دستور زیر برای اجازه دادن به SSH در فایروال UFW استفاده کنید:

sudo ufw allow ssh

همچنین می توانید SSH را با شماره پورت موجود در فایروال مجاز کنید. فرض کنید سرور SSH از پورت 5555 استفاده می کند، سپس از دستور زیر برای اجازه دادن به آن در فایروال استفاده می کنید:

sudo ufw allow 5555

برای بررسی اینکه آیا قانون با موفقیت اضافه شده است، وضعیت UFW را بررسی کنید:

sudo ufw status

در توزیع های مبتنی بر RHEL و openSUSE، از دستور زیر برای اجازه دادن به SSH در فایروال استفاده کنید:

sudo firewall-cmd --permanent --add-service=ssh

برای اجازه دادن به SSH توسط شماره پورت، از دستور زیر استفاده کنید:

sudo firewall-cmd --permanent --add-port={port}/tcp

برای سرور SSH که بر روی پورت 4444 اجرا می شود، دستور به صورت زیر خواهد بود:

sudo firewall-cmd --permanent --add-port=4444/tcp

برای تأیید اضافه شدن موفقیت آمیز قانون در فایروال، اجرا کنید:

sudo firewall-cmd --list-all

5. تضاد آدرس IP را حل کنید

همچنین به دلیل مغایرت IP سرور SSH با IP سیستم دیگری در شبکه، احتمال بروز خطای SSH “connection رد شد” وجود دارد. این زمانی اتفاق می‌افتد که دو سیستم در یک شبکه ادعا می‌کنند که آدرس IP یکسانی دارند، که منجر به تضاد IP می‌شود.

مطلب مرتبط:   نحوه رفع عدم کارکرد چت صوتی Roblox در ویندوز

برای تأیید وجود تداخل IP در شبکه شما، از ابزار arp-scan به صورت زیر استفاده کنید:

arp-scan [network-id]

اگر تداخل IP وجود داشته باشد، آدرس IP تکراری را در خروجی خواهید دید. تصویر زیر نمونه ای از تضاد IP در یک شبکه است:

با استفاده از arp-scan برای یافتن ip تکراری

برای جلوگیری از تداخل IP، مطمئن شوید که هیچ دستگاهی آدرس IP ثابتی نداشته باشد که با آدرس‌های استخر DHCP همپوشانی داشته باشد.

نکته پاداش: SSH را در حالت کلامی اجرا کنید

هر زمان که با خطای SSH مواجه شدید، دستور ssh را در حالت verbose اجرا کنید تا مشکل را پیگیری کنید. برای اجرای SSH در حالت verbose از دستور ssh با گزینه -vvv به صورت زیر استفاده کنید:

ssh -vvv username@ip_address

اشکال زدایی ssh

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

عیب یابی خطای SSH “Connection Refused” در لینوکس

با شناسایی علل احتمالی خطای اتصال SSH و پیاده سازی راه حل های پیشنهادی، قادر به عیب یابی و رفع خطای SSH “connection reded” خواهید بود. علاوه بر این مراحل، مطمئن شوید که به آدرس IP صحیح وصل شده اید و از اعتبارنامه های ورود مناسب استفاده می کنید.

برای ایمن‌تر کردن اتصال راه دور خود، می‌توانید احراز هویت دو مرحله‌ای را برای SSH در لینوکس تنظیم کنید.