اگر هنگام اتصال به VPS لینوکسی با SSH با خطاهایی مانند Connection timed out، Connection refused، Connection reset by peer یا Permission denied مواجه شدهاید، لزوماً به این معنی نیست که سرور خاموش است. ممکن است مشکل از سرویس SSH، پورت، فایروال، شبکه، تنظیمات sshd، احراز هویت، محدودیتهای امنیتی یا حتی سیستم مبدأ باشد.
در این آموزش، مرحلهبهمرحله بررسی میکنیم که چگونه علت مشکل SSH را پیدا کنیم و بدون حدسزدن، محل خرابی را مشخص کنیم.
SSH چیست و چرا ممکن است از کار بیفتد؟
SSH یا Secure Shell پروتکلی برای اتصال امن و مدیریت از راه دور سیستمهای لینوکسی است. یک اتصال معمولی SSH تقریباً این مسیر را طی میکند:
کامپیوتر شما
│
▼
اینترنت
│
▼
IP سرور
│
▼
پورت SSH
│
▼
Firewall
│
▼
sshd
│
▼
احراز هویت
│
▼
Shell
اگر هرکدام از این بخشها مشکل داشته باشند، اتصال SSH ممکن است برقرار نشود.
این آموزش برای چه سرورهایی مناسب است؟
این راهنما برای بیشتر VPSهای لینوکسی قابل استفاده است، از جمله:
🔹 Ubuntu 20.04
🔹 Ubuntu 22.04
🔹 Ubuntu 24.04 و نسخههای جدیدتر
🔹 Debian 10 / 11 / 12 / 13
🔹 Rocky Linux
🔹 AlmaLinux
🔹 CentOS
🔹 RHEL
🔹 Oracle Linux
🔹 Fedora Server
🔹 openSUSE
🔹 SUSE Linux Enterprise
البته نام بعضی دستورات مدیریت سرویس یا فایروال ممکن است بین توزیعها متفاوت باشد.
قبل از شروع؛ مشکل دقیقاً چیست؟
اول باید متن خطایی که هنگام اتصال مشاهده میکنید را مشخص کنید. برای مثال:
Connection timed out Connection refused Connection reset by peer Permission denied (publickey)
هرکدام از این خطاها میتواند مسیر عیبیابی متفاوتی داشته باشد.
۱. خطای Connection Timed Out
یکی از رایجترین خطاهای SSH این است:
ssh: connect to host SERVER_IP port 22: Connection timed out
این خطا معمولاً یعنی درخواست شما به پورت موردنظر پاسخ مناسبی دریافت نکرده است. علتهای احتمالی:
🔹 IP اشتباه
🔹 سرور از شبکه خارج شده
🔹 پورت SSH اشتباه است
🔹 فایروال پورت را مسدود کرده
🔹 فایروال دیتاسنتر یا ارائهدهنده VPS اتصال را مسدود کرده
🔹 سرویس شبکه سرور مشکل دارد
🔹 Route شبکه دچار مشکل شده است
🔹 IP شما توسط Firewall یا سیستم امنیتی سرور Block شده است
بررسی اتصال به پورت SSH در ویندوز
اگر از Windows استفاده میکنید، PowerShell را باز کنید و اجرا کنید:
Test-NetConnection SERVER_IP -Port 22 Test-NetConnection 192.168.1.100 -Port 22
اگر خروجی شامل TcpTestSucceeded : True باشد، یعنی اتصال TCP به پورت 22 برقرار شده است. اگر TcpTestSucceeded : False باشد، باید پورت، فایروال، شبکه و سرویس SSH را بررسی کنید.
۲. بررسی IP سرور
گاهی مشکل SSH بسیار ساده است: IP اشتباه وارد شده است. فرمان اتصال را بررسی کنید:
ssh root@SERVER_IP ssh root@203.0.113.10
اگر VPS شما IP عمومی دارد، مطمئن شوید همان IP فعلی را در پنل سرویسدهنده مشاهده میکنید. همچنین اگر اخیراً VPS را حذف و دوباره ساختهاید، ممکن است IP قبلی دیگر متعلق به سرور شما نباشد.
۳. بررسی پورت SSH
SSH الزاماً روی پورت 22 اجرا نمیشود. ممکن است مدیر سرور پورت SSH را تغییر داده باشد. برای اتصال به پورت خاص:
ssh -p 2222 root@SERVER_IP ssh -p 2222 root@203.0.113.10
اگر پورت SSH را تغییر دادهاید، استفاده از پورت 22 باعث میشود تصور کنید SSH خراب است، در حالی که سرویس روی پورت دیگری در حال اجراست.
سرور مجازی پایدار با پشتیبانی تخصصی ایرانیکاسرور
اگر درگیر خطاهای مکرر SSH، قطعی شبکه یا کندی سرور هستید، یک سرور مجازی با منابع اختصاصی میتواند مسیر عیبیابی را برای همیشه پایان دهد. ایرانیکاسرور با CPU و RAM اختصاصی، دیسک NVMe پرسرعت، پهنای باند نامحدود، آپتایم بالا و پشتیبانی ۲۴/۷ همراه شماست؛ مناسب برای میزبانی سایت، رانکردن سرویسهای تحت وب، میکروتیک، گیمسرور و پروژههای حساس.
تماس با پشتیبانی: 91302460–021 1 | ایرانیکاسرور
۴. بررسی باز بودن پورت SSH از داخل سرور
اگر از طریق کنسول VPS، VNC، KVM یا پنل ارائهدهنده به سرور دسترسی دارید، ابتدا وضعیت پورت را بررسی کنید:
ss -tlnp ss -tlnp | grep :22
اگر SSH روی پورت 22 فعال باشد، معمولاً چیزی مشابه LISTEN 0 128 0.0.0.0:22 یا LISTEN 0 128 [::]:22 مشاهده میکنید. اگر هیچ خروجی مشاهده نمیکنید، ممکن است sshd روی این پورت در حال Listen نباشد.
۵. بررسی سرویس SSH
در Ubuntu و Debian معمولاً میتوانید وضعیت سرویس را با این دستور ببینید:
systemctl status ssh systemctl status sshd
اگر سرویس متوقف شده باشد، میتوانید آن را اجرا کنید و برای فعال شدن خودکار هنگام Boot:
systemctl start ssh systemctl enable ssh systemctl start sshd systemctl enable sshd
۶. ریاستارت کردن SSH
اگر سرویس SSH اجرا میشود اما رفتار غیرعادی دارد، میتوانید آن را Restart کنید:
systemctl restart ssh systemctl restart sshd
⚠️ نکته مهم: اگر در حال حاضر از طریق SSH به سرور متصل هستید، قبل از تغییر تنظیمات SSH باید احتیاط کنید. یک تنظیم اشتباه میتواند باعث قطع دسترسی شود.
۷. بررسی تنظیمات SSH
فایل اصلی تنظیمات SSH معمولاً در مسیر /etc/ssh/sshd_config قرار دارد. برای مشاهده آن:
nano /etc/ssh/sshd_config sshd -t
اگر هیچ خروجی نمایش داده نشود، معمولاً یعنی خطای Syntax در تنظیمات وجود ندارد. اما اگر خطایی مانند /etc/ssh/sshd_config line 25: … مشاهده کردید، باید همان خط را بررسی و اصلاح کنید.
۸. بررسی پورت تعریفشده در sshd_config
در فایل تنظیمات SSH دنبال گزینه Port بگردید. مثلاً Port 22 یا Port 2222. اگر پورت SSH را تغییر دادهاید، باید هنگام اتصال نیز همان پورت را مشخص کنید:
ssh -p 2222 root@SERVER_IP
۹. خطای Connection Refused
خطای دیگری که ممکن است مشاهده کنید: Connection refused. این خطا با Timeout متفاوت است. در بسیاری از موارد یعنی سیستم مقصد قابل دسترسی است، اما روی آن پورت سرویس مناسبی در حال Listen نیست یا اتصال توسط یک سرویس/Firewall به شکل Reject پاسخ داده میشود. مهمترین مواردی که باید بررسی شوند:
systemctl status ssh ss -tlnp | grep :22 sshd -t
اگر SSH روی پورت دیگری تنظیم شده، همان پورت را بررسی کنید.
۱۰. خطای Connection Reset by Peer
ممکن است هنگام اتصال با خطایی شبیه Connection reset by peer مواجه شوید. این وضعیت میتواند دلایل مختلفی داشته باشد. برای مثال:
🔹 sshd اتصال را قطع میکند
🔹 Firewall یا سیستم امنیتی اتصال را Reset میکند
🔹 تنظیمات SSH مشکل دارد
🔹 Fail2ban یا ابزار مشابه IP شما را مسدود کرده است
🔹 محدودیتهای امنیتی روی سرور اعمال شده است
🔹 سرویس SSH دچار خطا شده است
🔹 مشکل شبکه باعث قطع Connection شده است
در این حالت لاگهای SSH بسیار مهم هستند.
۱۱. بررسی لاگهای SSH
در Ubuntu و Debian میتوانید لاگهای احراز هویت را بررسی کنید:
tail -f /var/log/auth.log tail -n 100 /var/log/auth.log journalctl -u ssh journalctl -u ssh --no-pager -n 100 journalctl -u sshd --no-pager -n 100
در برخی توزیعهای دیگر ممکن است لاگها در /var/log/secure قرار داشته باشند.
۱۲. استفاده از SSH با حالت Debug
اگر علت مشکل مشخص نیست، یکی از بهترین ابزارها حالت Debug خود SSH است. روی کامپیوتر خود اجرا کنید:
ssh -v root@SERVER_IP ssh -vv root@SERVER_IP ssh -vvv root@SERVER_IP ssh -vvv root@203.0.113.10
خروجی Debug به شما نشان میدهد اتصال در چه مرحلهای متوقف شده است.
۱۳. اگر مشکل در مرحله اتصال شبکه باشد
اگر خروجی تقریباً در مرحلهای شبیه Connecting to SERVER_IP port 22 متوقف شود، باید بیشتر روی موارد زیر تمرکز کنید:
🔹 IP
🔹 Port
🔹 Firewall
🔹 Routing
🔹 Network
🔹 وضعیت VPS
اما اگر اتصال برقرار شود و مشکل در مرحله Authentication ظاهر شود، باید سراغ Username، Password، SSH Key و تنظیمات احراز هویت بروید.
۱۴. خطای Permission Denied
اگر خطایی مانند Permission denied یا Permission denied (publickey) میبینید، مشکل احتمالاً مربوط به احراز هویت است، نه خاموش بودن سرور. موارد زیر را بررسی کنید:
🔹 Username صحیح است؟
🔹 Password صحیح است؟
🔹 کلید SSH صحیح است؟
🔹 کلید عمومی روی سرور قرار دارد؟
🔹 Permission فایلهای SSH صحیح است؟
🔹 ورود با Root فعال است؟
🔹 تنظیمات sshd_config اجازه روش احراز هویت موردنظر را میدهد؟
۱۵. بررسی کاربر SSH
مثلاً اگر با ssh root@SERVER_IP متصل میشوید اما سرور اجازه ورود مستقیم Root را نمیدهد، ممکن است نیاز باشد با کاربر دیگری وارد شوید:
ssh username@SERVER_IP
گزینههای مربوط به Root و Authentication بسته به نسخه OpenSSH و تنظیمات سیستم میتوانند متفاوت باشند؛ بنابراین قبل از تغییر آنها، وضعیت فعلی را بررسی کنید.
۱۶. بررسی Firewall با UFW
در Ubuntu معمولاً ufw یکی از ابزارهای رایج Firewall است. وضعیت آن:
ufw status ufw allow 22/tcp ufw allow ssh ufw allow 2222/tcp
⚠️ هشدار: قبل از فعال کردن Firewall مطمئن شوید پورت SSH شما اجازه دسترسی دارد؛ در غیر این صورت ممکن است دسترسی SSH خودتان را قطع کنید.
۱۷. بررسی Firewall با iptables یا nftables
در بعضی سرورها ممکن است قوانین Firewall توسط iptables یا nftables مدیریت شوند. برای مشاهده قوانین:
iptables -L -n -v nft list ruleset
۱۸. بررسی Fail2ban
اگر چند بار رمز عبور اشتباه وارد کرده باشید یا رفتار اتصال شما توسط سیستم امنیتی مشکوک تشخیص داده شده باشد، ممکن است IP شما توسط Fail2ban مسدود شده باشد. بررسی وضعیت:
systemctl status fail2ban fail2ban-client status fail2ban-client status sshd
نام Jail در سیستمهای مختلف ممکن است متفاوت باشد.
۱۹. بررسی اینکه SSH روی کدام IP گوش میدهد
گاهی SSH فقط روی یک Interface یا IP خاص Listen میکند. برای بررسی:
ss -tlnp | grep ssh
اگر خروجی فقط شامل 127.0.0.1:22 باشد، SSH فقط روی Localhost در دسترس است و اتصال مستقیم از اینترنت برقرار نخواهد شد. در مقابل، مواردی مانند 0.0.0.0:22 نشان میدهد سرویس روی Interface گستردهتری Listen میکند.
۲۰. بررسی منابع سرور
گاهی SSH به دلیل فشار شدید منابع سرور پاسخ مناسبی نمیدهد. CPU، حافظه RAM، فضای دیسک و Inodeها را بررسی کنید:
top htop free -h df -h df -i
اگر دیسک کاملاً پر شده باشد، ممکن است سرویسهای مختلف با مشکل مواجه شوند. مثلاً Use% 100% برای یک Partition میتواند یک علامت هشدار جدی باشد.
۲۱. بررسی OOM Killer
اگر RAM سرور تمام شده باشد، Linux ممکن است برای آزاد کردن حافظه بعضی Processها را خاتمه دهد. برای جستجوی پیامهای مربوط به OOM:
dmesg | grep -i "out of memory" journalctl -k | grep -i "out of memory" dmesg | grep -i "killed process"
اگر sshd یا Processهای مهم دیگر در اثر کمبود حافظه Kill شده باشند، باید مصرف RAM و SWAP را بررسی کنید.
۲۲. بررسی DNS
اگر به جای IP از Domain Name استفاده میکنید، مشکل ممکن است از DNS باشد. ابتدا بررسی کنید Domain به IP صحیح Resolve میشود:
nslookup example.com dig example.com ssh root@SERVER_IP
اگر با IP متصل میشوید اما با Domain نه، احتمالاً باید DNS را بررسی کنید.
۲۳. بررسی Route شبکه
در Linux میتوانید مسیر شبکه را با ابزارهایی مانند traceroute بررسی کنید. در Windows نیز میتوانید از tracert استفاده کنید:
traceroute SERVER_IP tracert SERVER_IP
این تست میتواند برای تشخیص بعضی مشکلات مسیر شبکه مفید باشد، اما Timeout در یک Hop بهتنهایی لزوماً به معنی خرابی همان Hop نیست؛ برخی تجهیزات شبکه به درخواستهای Traceroute پاسخ نمیدهند.
۲۴. بررسی اتصال با Netcat
برای تست TCP یک پورت میتوانید از nc استفاده کنید:
nc -vz SERVER_IP 22 nc -vz 203.0.113.10 22
اگر پورت قابل دسترسی باشد، معمولاً پیام موفقیت مشاهده میکنید. اگر اتصال برقرار نشود، باید Firewall، Network و سرویس مقصد را بررسی کنید.
۲۵. جدول تشخیص سریع خطاهای SSH
| خطا | احتمال اولیه | مواردی که باید بررسی شوند |
|---|---|---|
| Connection timed out | عدم دریافت پاسخ | Firewall، Network، IP، Port |
| Connection refused | سرویس روی پورت پاسخ نمیدهد | SSH، Port، Firewall |
| Connection reset by peer | اتصال توسط مقصد قطع شده | sshd، Firewall، Fail2ban، Logs |
| Permission denied | احراز هویت ناموفق | Username، Password، SSH Key |
| No route to host | مشکل مسیر شبکه | Routing، Network، Gateway |
| Could not resolve hostname | مشکل DNS | Domain، DNS |
| Host key verification failed | مشکل Host Key | known_hosts، تغییر کلید سرور |
ترتیب پیشنهادی عیبیابی SSH
اگر SSH کار نمیکند، بهتر است بهجای تغییر تصادفی تنظیمات، این ترتیب را دنبال کنید:
🔹 مرحله ۱ — IP را بررسی کنید: SERVER_IP
🔹 مرحله ۲ — پورت را بررسی کنید: 22 یا پورت سفارشی SSH
🔹 مرحله ۳ — اتصال TCP را تست کنید: Test-NetConnection SERVER_IP -Port 22
🔹 مرحله ۴ — اگر به Console دسترسی دارید، وضعیت SSH را بررسی کنید: systemctl status ssh
🔹 مرحله ۵ — پورت Listening را بررسی کنید: ss -tlnp | grep :22
🔹 مرحله ۶ — تنظیمات SSH را بررسی کنید: sshd -t
🔹 مرحله ۷ — Firewall را بررسی کنید: ufw status یا ابزار Firewall مورد استفاده سرور
🔹 مرحله ۸ — لاگها را بررسی کنید: journalctl -u ssh –no-pager -n 100
🔹 مرحله ۹ — Debug را فعال کنید: ssh -vvv root@SERVER_IP
🔹 مرحله ۱۰ — منابع VPS را بررسی کنید: top، free -h، df -h
اگر SSH کاملاً قطع شده باشد چه کنیم؟
اگر SSH به هیچ عنوان وصل نمیشود، مهمترین ابزار شما Console خارج از SSH است. بسته به ارائهدهنده VPS ممکن است گزینههایی مانند موارد زیر وجود داشته باشد:
🔹 Web Console
🔹 VNC
🔹 KVM
🔹 Serial Console
🔹 Rescue Mode
با ورود از این روشها میتوانید بدون نیاز به SSH وضعیت سرویس، Firewall، دیسک، RAM و تنظیمات sshd را بررسی کنید.
مشکل SSH دارید؟ کارشناسان ما کمکتان میکنند
اگر همچنان درگیر خطاهای SSH هستید و نمیدانید علت قطعی یا Timeout کجاست، تیم فنی ایرانیکاسرور آماده است تا سرور شما را بررسی، کانفیگ و عیبیابی کند. کافی است درخواست خود را ثبت کنید تا در سریعترین زمان ممکن راهنمایی شوید.
تماس با پشتیبانی: 91302460–021 | ایرانیکاسرور
یک نکته بسیار مهم درباره تغییر تنظیمات SSH
یکی از اشتباهات رایج این است که کاربر فایل /etc/ssh/sshd_config را تغییر میدهد و بلافاصله SSH را Restart میکند. روش امنتر این است:
sshd -t systemctl restart ssh
⚠️ هنگام تغییر پورت SSH بهتر است جلسه SSH فعلی را نبندید تا ابتدا اتصال جدید را با پورت جدید آزمایش کنید.
سوالات متداول درباره عیبیابی SSH
چرا SSH من Connection timed out میدهد؟
معمولاً به دلیل مسدود بودن پورت توسط فایروال، IP اشتباه، تغییر پورت SSH یا مشکل در مسیر شبکه. ابتدا IP و پورت را بررسی کنید و سپس با Test-NetConnection یا nc اتصال TCP را تست کنید.
تفاوت Connection refused و Connection timed out چیست؟
در Timeout پاسخ دریافت نمیشود و احتمال مسدود بودن مسیر وجود دارد، اما در Connection refused سیستم مقصد قابل دسترسی است ولی روی آن پورت سرویس Listen نمیکند یا اتصال Reject میشود.
چگونه بفهمم SSH روی چه پورتی اجرا میشود؟
با دستور ss -tlnp پورتهای Listening را ببینید و با ss -tlnp | grep ssh پورت مربوط به SSH را پیدا کنید. همچنین مقدار Port در فایل /etc/ssh/sshd_config را بررسی کنید.
آیا Fail2ban میتواند باعث قطع SSH شود؟
بله. اگر چند بار رمز اشتباه وارد کنید یا رفتار مشکوکی داشته باشید، Fail2ban ممکن است IP شما را مسدود کند. با fail2ban-client status sshd وضعیت Jail را بررسی کنید.
اگر SSH کاملاً قطع شد چگونه وارد سرور شوم؟
از Console خارج از SSH مثل VNC، KVM، Serial Console یا Rescue Mode که ارائهدهنده VPS در اختیار شما قرار میدهد استفاده کنید و سپس سرویس، فایروال و تنظیمات sshd را بررسی کنید.
جمعبندی
خرابی SSH لزوماً به معنی خاموش بودن VPS نیست. برای پیدا کردن علت واقعی باید مشکل را از چند لایه بررسی کنید:
IP ↓ Network ↓ Port ↓ Firewall ↓ sshd ↓ Configuration ↓ Authentication ↓ User
اگر با Timeout مواجه هستید، ابتدا شبکه، IP، پورت و Firewall را بررسی کنید. اگر Connection Refused دریافت میکنید، وضعیت sshd و پورت Listening را بررسی کنید. اگر Connection Reset مشاهده میکنید، لاگهای SSH، Firewall و ابزارهای امنیتی مانند Fail2ban اهمیت بیشتری پیدا میکنند. و اگر Permission Denied دریافت میکنید، تمرکز اصلی باید روی احراز هویت، Username، Password، SSH Key و تنظیمات دسترسی باشد.
با همین روش مرحلهبهمرحله میتوانید بهجای آزمونوخطای تصادفی، محل دقیق مشکل SSH را پیدا کنید.
سرور مجازی حرفهای، از ایرانیکاسرور
برای میزبانی سایت، اجرای سرویسهای تحت وب، میکروتیک، گیمسرور و پروژههای حساس، میتوانید روی سرور مجازی ایران، سرور اختصاصی، میکروتیک، هاست وردپرس و دامین ایرانیکاسرور حساب کنید. منابع اختصاصی، دیسک NVMe، پهنای باند نامحدود و پشتیبانی ۲۴/۷ در کنار شماست.
تماس با پشتیبانی: 91302460–021 | ایرانیکاسرور
💬 دیدگاهها 0
هنوز دیدگاهی ثبت نشده است. اولین نفری باشید که نظر میدهید!
✍️ دیدگاه خود را بنویسید