بعضی وقتا شده که هنگام متصال شدن به سرور با SSH مدتی منتظر میمونیم و در نهایت با خطایی شبیه این مواجه میشویم:
ssh: connect to host 203.0.113.10 port 22: Connection timed outیا در بعضی سیستمها:
ssh: connect to host 203.0.113.10 port 22: Operation timed outمعمولاً ،مشکل هنوز به Password، Username یا SSH Key مربوط نیست.
در این وضعیت SSH Client تلاش کرده به IP و Port مقصد متصل شود، اما در زمان موردانتظار نتوانسته ارتباط لازم را برقرار کند.
رایجترین علتها عبارتاند از:
IP سرور اشتباه است
Port SSH اشتباه انتخاب شده
سرور خاموش یا Network Interface آن Down است
Firewall سرور Packetهای SSH را Drop میکند
Cloud Firewall یا Security Group پورت SSH را بسته است
Route بین Client و Server مشکل دارد
ISP یا یک شبکه میانی پورت موردنظر را Filter میکند
Domain به IP اشتباه Resolve میشود
IPv6 یا IPv4 بهدرستی Route نمیشود
SSH فقط روی Address دیگری Listen میکند
پس در این خطا بهتر است اول این سؤال را جواب بدیم:
آیا Packetهای من اصلاً به IP و Port صحیح سرور میرسند و پاسخی برمیگردد؟
خطای SSH Connection timed out دقیقاً یعنی چه؟
برای شروع یک SSH Session، Client ابتدا باید بتواند یک Connection با SSH Server برقرار کند.
بهصورت ساده:
SSH Client
│
▼
Local Network
│
▼
Internet / Routing
│
▼
Server Firewall
│
▼
TCP Port 22
│
▼
OpenSSH Server
│
▼
Authenticationدر خطای:
Connection timed outاین مسیر قبل از Authentication کامل نشده است.
OpenSSH گزینهای به نام ConnectTimeout داره که مدت انتظار برای برقرارشدن اتصال اولیه را کنترل میکند؛ این Timeout به مرحله برقراری Connection و Handshake اولیه مربوط است، نه مدت زمانی که بعد از Login در Shell بیکار ماندهاید. (OpenSSH)
بنابراین تغییر:
authorized_keysیا ساخت یک SSH Key جدید معمولاً راهحل این خطا نیست.
Connection timed out با Connection refused چه تفاوتی دارد؟
این دو خطا را نباید یکسان عیبیابی کرد.
Connection refused
معمولاً Connection خیلی سریع Fail میشود:
ssh: connect to host SERVER_IP port 22: Connection refusedاین وضعیت اغلب نشان میدهد:
Server reachable
↓
TCP response received
↓
اما Port اتصال را قبول نمیکندبرای مثال:
sshdخاموش استPort اشتباه است
هیچ Listener روی Port وجود ندارد
Firewall اتصال را
REJECTکرده است
Connection timed out
در Timeout معمولاً Client مدتی منتظر میماند:
Connecting...
...
Connection timed outاین وضعیت بیشتر ما را به سمت:
Firewall DROP
Routing
Server Offline
Wrong IP
Cloud Firewall
Provider Filteringمیبرد.
خلاصه:
خطا | وضعیت معمول |
|---|---|
| پاسخ رد دریافت شده |
| پاسخ لازم دریافت نشده |
| Connection برقرار شده، Authentication رد شده |
این تفاوت مسیر Troubleshooting را بسیار کوتاهتر میکند.
قدم اول: IP سرور را دوباره بررسی کنید
قبل از تغییر Firewall یا SSH Configuration، مطمئن شوید واقعاً به Server صحیح وصل میشوید.
مثلاً:
ssh root@203.0.113.10IP را با اطلاعات VPS در پنل ارائهدهنده مقایسه کنید.
یک اشتباه کوچک مثل:
203.0.113.10بهجای:
203.0.113.100کافی است تا مدت زیادی دنبال مشکلی بگردید که اصلاً روی Server شما نیست.
اگر با سرور مجازی VPS کار میکنید، IP عمومی نمایشدادهشده در پنل سرویس را با IP مورد استفاده در دستور SSH تطبیق دهید.
اگر با Domain وصل میشوید، DNS را بررسی کنید
ممکن است بهجای IP بنویسید:
ssh root@server.example.comدر این حالت ابتدا Domain باید به IP تبدیل شود.
در Windows:
Resolve-DnsName server.example.comیا:
nslookup server.example.comدر Linux:
dig server.example.comیا:
getent hosts server.example.comIP خروجی را با IP واقعی VPS مقایسه کنید.
اگر DNS هنوز به IP قدیمی اشاره کند، SSH ممکن است به Server اشتباهی متصل شود یا Timeout شود.
برای تست، مستقیماً از IP صحیح استفاده کنید:
ssh user@SERVER_IPاگر با IP اتصال برقرار شد ولی Domain Timeout شد، مشکل احتمالاً در DNS یا انتخاب Address است.
قدم دوم: Port واقعی SSH را بررسی کنید
Port پیشفرض SSH:
22است.
بنابراین:
ssh user@SERVER_IPمعمولاً معادل اتصال به Port 22 است.
اما اگر SSH روی Port دیگری اجرا شود، مثلاً:
2222باید بنویسید:
ssh -p 2222 user@SERVER_IPاگر Port را اخیراً تغییر دادهاید، چهار بخش باید با هم هماهنگ باشند:
SSH Server
Firewall
Cloud Firewall
SSH Clientیعنی اگر Server روی 2222 Listen میکند ولی Cloud Firewall فقط 22 را Allow کرده، اتصال جدید ممکن است Timeout شود.
قدم سوم: Port را مستقیماً از Client تست کنید
یکی از بهترین تستها این است که قبل از خود SSH بررسی کنیم TCP Port قابل دسترسی هست یا نه.
Linux و macOS
اگر nc دارید:
nc -vz -w 5 SERVER_IP 22مثلاً:
nc -vz -w 5 203.0.113.10 22اگر Port قابل دسترسی باشد، خروجیای شبیه:
Connection to 203.0.113.10 22 port [tcp/ssh] succeeded!میبینید.
اگر Test منتظر بماند و Timeout شود، مشکل در سطح Connection است.
تست Port 22 در Windows
در PowerShell:
Test-NetConnection -ComputerName 203.0.113.10 -Port 22بخش مهم خروجی:
TcpTestSucceededاست.
اگر:
TcpTestSucceeded : Trueباشد، TCP Port قابل دسترسی است.
اگر:
TcpTestSucceeded : Falseباشد، هنوز نباید سراغ Password یا SSH Key بروید.
اول باید Network Path یا Server-side Filtering را بررسی کنید.
خود SSH را با Timeout کوتاهتر تست کنید
برای اینکه برای هر Test مدت زیادی منتظر نمانید، میتوانید موقتاً ConnectTimeout تعیین کنید:
ssh -o ConnectTimeout=10 user@SERVER_IPیا همراه Port:
ssh -o ConnectTimeout=10 -p 2222 user@SERVER_IPعدد 10 یعنی Client برای مرحله Connection مدت محدودتری منتظر بماند.
این گزینه مشکل را حل نمیکند؛ فقط Troubleshooting را سریعتر میکند.
مثلاً:
ssh -vvv -o ConnectTimeout=10 user@SERVER_IPهم Verbose Output میدهد و هم Test را بینهایت طولانی نمیکند.
OpenSSH نیز -v را برای Debug کردن مشکلات Connection، Authentication و Configuration در نظر گرفته است. (OpenSSH)
قدم چهارم: Ping را تست کنید؛ اما نتیجه را قطعی ندانید
میتوانید اجرا کنید:
ping SERVER_IPدر Windows:
ping SERVER_IPاگر Server پاسخ بدهد، حداقل بخشی از مسیر Network برقرار است.
اما اگر Ping جواب ندهد، نمیتوانیم فوراً نتیجه بگیریم Server Offline است.
بسیاری از Serverها یا Firewallها ICMP Echo را Block میکنند.
ممکن است:
Ping ✗
SSH ✓کاملاً امکانپذیر باشد.
بنابراین Ping فقط یک Signal کمکی است.
تست TCP Port اهمیت بیشتری دارد.
قدم پنجم: اتصال را از یک اینترنت دیگر امتحان کنید
این تست بسیار ارزشمند است.
مثلاً اگر روی اینترنت خانه Timeout دارید:
ADSL / Fiber
↓
SSH Timeoutیک بار از:
Mobile Hotspotیا شبکه دیگری تست کنید.
اگر:
Network A → Timeout
Network B → Worksمشکل احتمالاً سمت Server عمومی نیست.
بیشتر باید مواردی مانند:
ISP Filtering
Router Firewall
Corporate Network Policy
مسیر Routing خاص
محدودیت Port
را بررسی کنید.
این تست سریع کمک میکند مشخص کنیم مشکل وابسته به Source Network هست یا نه.
قدم ششم: اگر Console دارید، از داخل Server وضعیت شبکه را بررسی کنید
اگر SSH Timeout میشود، برای بررسی Server از:
Web Console
VNC
Serial Console
Recovery Consoleدر صورت ارائه توسط سرویسدهنده استفاده کنید.
بعد ابتدا Interfaceها را ببینید:
ip addrباید Network Interface اصلی را در وضعیت:
UPببینید و IP مورد انتظار نیز روی آن وجود داشته باشد.
برای مثال:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>Ubuntu برای مشاهده Interfaceها و Addressهای شبکه نیز از ابزار ip استفاده میکند. (مستندات شبکه Ubuntu)
Route پیشفرض Server را بررسی کنید
اجرا کنید:
ip routeمعمولاً باید یک Default Route ببینید:
default via 203.0.113.1 dev eth0اگر Default Route از بین رفته یا Gateway اشتباه باشد، Server ممکن است Packet ورودی را دریافت کند اما نتواند Reply را از مسیر صحیح برگرداند.
برای مشاهده Route به یک Destination مشخص:
ip route get 1.1.1.1نیز کاربردی است.
Routing دقیقاً تعیین میکند Packetها از چه مسیری به Destination ارسال شوند. مستندات Ubuntu نیز Routing Table و Default Gateway را از اجزای اصلی اتصال شبکه معرفی میکند. (Ubuntu)
بعد از تغییر Network Configuration با احتیاط عمل کنید
روی Ubuntu، Network Configuration معمولاً با Netplan مدیریت میشود.
فایلها معمولاً در:
/etc/netplan/قرار دارند.
اما اگر SSH تنها روش دسترسی شماست، تغییر Network Configuration از راه دور بسیار حساس است.
یک اشتباه در:
IP
Gateway
Route
DNS
Interfaceممکن است ارتباط Server را کاملاً قطع کند.
بنابراین برای Troubleshooting اولیه، بدون دلیل وارد تغییر Netplan نشوید.
اول:
ip addr
ip routeو اطلاعات پنل Provider را با وضعیت Server مقایسه کنید.
قدم هفتم: مطمئن شوید SSH Service واقعاً در حال اجراست
Timeout بیشتر ما را سمت Network هدایت میکند، اما Service را هم باید Verify کنیم.
در Ubuntu:
sudo systemctl status sshدر AlmaLinux / Rocky Linux / RHEL معمولاً:
sudo systemctl status sshdو برای Listener:
sudo ss -tlnp | grep sshdیا:
sudo ss -tlnp | grep ':22'اگر Server کاملاً سالم است و SSH روی Port 22 Listen میکند، باید چیزی شبیه:
0.0.0.0:22یا:
[::]:22مشاهده کنید.
اگر Listener وجود ندارد و Connection فوراً Fail نمیشود، احتمال دارد Firewall در مسیر Packet را Drop کند و Timeout واقعی را پنهان کرده باشد.
قدم هشتم: UFW را بررسی کنید
حالا به یکی از محتملترین علتها میرسیم.
وضعیت UFW:
sudo ufw status verboseاگر SSH روی Port 22 است، Rule مناسب باید وجود داشته باشد.
مثلاً:
sudo ufw allow 22/tcpیا:
sudo ufw allow OpenSSHاگر Port شما 2222 است:
sudo ufw allow 2222/tcpبعد:
sudo ufw status numberedرا بررسی کنید.
Ubuntu در مستندات رسمی Firewall نیز ufw allow 22 و ufw status verbose را برای مدیریت دسترسی به Portها مستند کرده است. (Ubuntu Firewall)
تفاوت DROP و REJECT در این خطا مهم است
Firewall میتواند با Packet دو رفتار مهم داشته باشد.
DROP
Packet را بیصدا کنار میگذارد:
Client
→ SYN
→ Firewall
→ DROP
→ No responseClient منتظر میماند و نهایتاً ممکن است:
Connection timed outبدهد.
REJECT
Firewall پاسخ رد ارسال میکند:
Client
→ SYN
→ Firewall
→ REJECT
→ Responseدر چنین حالتی ممکن است Fail سریعتری مثل:
Connection refusedببینید.
مستندات Firewall اوبونتو نیز ACCEPT، DROP و REJECT را بهعنوان رفتارهای تعیینکننده Packet Filtering مطرح میکند. (Ubuntu)
این تفاوت دلیل خوبی است که چرا:
Timeout معمولاً ما را بیشتر به سمت Silent Filtering و مشکلات مسیر شبکه میبرد.
Firewall پنل Cloud را بررسی کنید
یکی از دلایل بسیار رایج SSH Timeout این است که Firewall داخل Linux درست است، ولی Firewall دیگری خارج از VPS وجود دارد.
مثلاً:
Internet
│
▼
Cloud Firewall
│
▼
VPS Firewall
│
▼
SSHFirewall خارجی ممکن است با نامهایی مثل این دیده شود:
Cloud Firewall
Security Group
Network ACL
Inbound Rules
Provider Firewallبررسی کنید Inbound Rule مناسب برای Port SSH دارید.
برای Port 22:
TCP
Port 22
Source: IP موردنظر یا Range مجازاگر فقط IP شرکت خودتان Allow شده اما اکنون از اینترنت دیگری وصل میشوید، Timeout طبیعی است.
اگر Firewall را فقط برای IP مشخص باز کردهاید
این Configuration از نظر امنیت میتواند مفید باشد:
Allow TCP/22
Source: YOUR_PUBLIC_IPاما Public IP Client ممکن است تغییر کرده باشد.
مثلاً ISP شما دیروز:
198.51.100.20داشته و امروز:
198.51.100.87است.
اگر Firewall فقط IP قدیمی را Allow کند، Connection جدید ممکن است Timeout شود.
Public IP فعلی خودتان را بررسی کنید و Rule را با سیاست امنیتی مناسب اصلاح کنید.
nftables یا iptables را هم در نظر بگیرید
ممکن است UFW بگوید:
Status: inactiveاما هنوز Rules دیگری روی سیستم فعال باشند.
برای nftables:
sudo nft list rulesetو در سیستمهایی که از iptables استفاده میکنند:
sudo iptables -L -n -vرا میتوان بررسی کرد.
اما Ruleها را بدون درک Configuration حذف نکنید.
Production Server ممکن است Rules مهم دیگری برای:
Docker
NAT
VPN
Security
Routing
داشته باشد.
هدف ابتدا پیدا کردن Rule مشکلدار است، نه پاک کردن کل Firewall.
آیا Fail2ban باعث Timeout میشود؟
ممکن است.
اگر IP شما توسط Jail مربوط به SSH Block شده باشد:
sudo fail2ban-client status sshdرا بررسی کنید.
اما رفتار نهایی به Firewall Backend و Action تعریفشده بستگی دارد.
پس قبل از تمرکز روی Fail2ban، ترتیب زیر را رعایت کنید:
Port
Service
Listener
UFW
Cloud Firewall
Routing
↓
بعد Security Toolsقدم نهم: مسیر Network را بررسی کنید
اگر Server روشن است، Listener صحیح است و Firewallها هم ظاهراً درستاند، باید مسیر Network را بررسی کنیم.
در Linux:
traceroute SERVER_IPدر Windows:
tracert SERVER_IPاین ابزارها مسیر تقریبی Packet تا Destination را نمایش میدهند.
اما یک هشدار مهم:
توقف
tracerouteروی یک Hop الزاماً به معنی خرابی همان Router نیست.
بسیاری از Routerها به Packetهای Diagnostic پاسخ نمیدهند ولی Traffic واقعی را Forward میکنند.
پس Traceroute یک ابزار کمکی است، نه حکم قطعی.
یک Test بهتر: همان Server را از چند Location بررسی کنید
اگر امکان دارید SSH Port را از:
کامپیوتر خودتان
Mobile Internet
Server دیگری
شبکه شرکت
تست کنید.
مثلاً:
Home → Timeout
Mobile → Timeout
Another VPS → Timeoutاحتمال Server-side Problem زیاد میشود.
اما:
Home → Timeout
Mobile → Works
Another VPS → Worksبیشتر Source Network یا مسیر خاص خانه را متهم میکند.
این تست در Troubleshooting شبکه بسیار ارزشمند است.
اگر فقط Port 22 Timeout میشود چه؟
فرض کنیم Server این موارد را دارد:
HTTP 80 → Works
HTTPS 443 → Works
SSH 22 → Timeoutاین یک Signal خوب است:
خود Server احتمالاً Online است، اما SSH Port یا Traffic آن مشکل دارد.
در این حالت موارد زیر اولویت بیشتری دارند:
SSH Listener
UFW
Cloud Firewall
Provider filtering
SSH Portدیگر لازم نیست ابتدا کل Network Interface سرور را متهم کنیم.
اگر تمام Portها Timeout میشوند چه؟
اگر:
22 → Timeout
80 → Timeout
443 → Timeoutو Console هم نشان میدهد Server مشکل Network دارد، دایره احتمالات عوض میشود:
Server Offline
Network Interface
IP Configuration
Route
Gateway
Provider Network
Cloud Firewallدر این شرایط بررسی sshd_config احتمالاً اولویت پایینی دارد.
IPv4 و IPv6 میتوانند باعث Timeout گیجکننده شوند
فرض کنید Domain شما هر دو Record را دارد:
A
AAAAممکن است Client ابتدا IPv6 را امتحان کند، اما مسیر IPv6 Server درست نباشد.
برای تست فقط IPv4:
ssh -4 user@server.example.comبرای تست فقط IPv6:
ssh -6 user@server.example.comاگر:
ssh -4 → Works
ssh -6 → Timeoutمشکل تقریباً مشخص است:
IPv6 Routing
IPv6 Firewall
AAAA Record
ListenAddressرا باید بررسی کنید.
Addressهایی که sshd روی آنها Listen میکند را بررسی کنید
روی Server:
sudo ss -tlnp | grep sshdو:
sudo sshd -T | grep -Ei '^(port|listenaddress|addressfamily)'را اجرا کنید.
ممکن است SSH فقط روی IPv4 یا یک Address خاص Bind شده باشد.
مثلاً:
127.0.0.1:22برای Remote Access مناسب نیست.
یا ممکن است فقط:
[::]:22با Configuration خاص مشاهده شود و Behavior موردانتظار IPv4 وجود نداشته باشد.
Listener واقعی مهمتر از حدس از روی فایل Configuration است.
اگر Server پشت NAT باشد چه؟
در VPSهای دارای Public IP معمولاً مستقیمتر هستیم، اما در شبکههای خصوصی یا Serverهای On-Premise ممکن است SSH Server پشت NAT قرار داشته باشد.
ساختار:
Internet
│
▼
Router / NAT
│
Port Forward
│
▼
Linux Serverدر این حالت باید Router پورت External را به IP و Port داخلی Server Forward کند.
مثلاً:
Public 2222
→
192.168.1.10:22Client:
ssh -p 2222 user@PUBLIC_IPاگر Port Forward وجود نداشته باشد یا IP داخلی Server تغییر کرده باشد، اتصال ممکن است Fail یا Timeout شود.
برای یک VPS معمولی با Public IP مستقیم، این بخش معمولاً کاربردی نیست.
آیا تغییر Port SSH مشکل Timeout را حل میکند؟
نه، مگر اینکه دلیل واقعی مشکل به همان Port مرتبط باشد.
مثلاً اگر یک Network خاص Port 22 را Filter میکند و شما SSH را بهصورت صحیح و امن روی Port دیگری تنظیم کرده باشید، ممکن است ارتباط برقرار شود.
اما این:
Timeout
→ Port را تصادفی تغییر بدهروش Troubleshooting خوبی نیست.
اول مشخص کنید:
Port واقعی چیست؟
آیا Listener وجود دارد؟
Firewall چه میکند؟
آیا Port از شبکه دیگری در دسترس است؟بعد تصمیم بگیرید.
اگر اتصال فقط گاهی Timeout میشود چه؟
این حالت با Timeout دائمی کمی متفاوت است.
اگر مثلاً:
Attempt 1 → Works
Attempt 2 → Timeout
Attempt 3 → Worksدارید، موارد زیر را بررسی کنید:
Packet Loss
Network instability
Load Balancer
چند IP پشت DNS
Firewall Rate Limit
Fail2ban
مسیرهای مختلف IPv4/IPv6
Server Load
Provider Network
اگر Domain چند IP دارد:
dig server.example.comرا بررسی کنید.
ممکن است یکی از Addressها سالم باشد و دیگری مشکل داشته باشد.
Timeout بعد از Login با Connection timed out اولیه فرق دارد
یک نکته مهم:
ممکن است SSH با موفقیت وصل شود ولی بعد از چند دقیقه Session قطع شود.
این موضوع با:
ssh: connect to host ... Connection timed outدر ابتدای Connection یکی نیست.
بعد از برقرارشدن Session، مواردی مانند:
ServerAliveInterval
ServerAliveCountMax
ClientAliveInterval
Network instability
NAT timeoutو استفاده از ابزارهایی مثل tmux اهمیت پیدا میکنند.
در این مقاله تمرکز ما روی Timeout هنگام برقراری اتصال اولیه SSH است.
اگر فقط میخواهید سریع علت را پیدا کنید، این ترتیب را بروید
روی Client
ابتدا:
ssh -vvv -o ConnectTimeout=10 user@SERVER_IPسپس Port:
nc -vz -w 5 SERVER_IP 22یا در Windows:
Test-NetConnection -ComputerName SERVER_IP -Port 22بعد:
IP را Verify کنید
Domain DNS را Verify کنید
از اینترنت دیگری Test کنید
در صورت نیاز IPv4 و IPv6 را جدا تست کنید
روی Server از طریق Console
ip addrسپس:
ip routeو:
sudo systemctl status sshبعد:
sudo ss -tlnp | grep sshdسپس:
sudo ufw status verboseو در نهایت Cloud Firewall و Provider Rules را بررسی کنید.
جدول تشخیص سریع SSH Timeout
وضعیت | احتمال بیشتر | قدم بعد |
|---|---|---|
Port 22 از همه شبکهها Timeout | Server/Firewall/Provider | Console و Firewall |
فقط از یک اینترنت Timeout | Source Network/ISP | تست با شبکه دیگر |
IP کار میکند، Domain نه | DNS | بررسی A/AAAA |
IPv4 کار میکند، IPv6 نه | IPv6 | Route/Firewall/AAAA |
Port 443 کار میکند، 22 نه | SSH Port Filtering | Listener/Firewall |
همه Portها Timeout | Network/Server Offline | Console/Provider |
Service روشن ولی Port Remote Timeout | Firewall | UFW/Cloud Firewall |
Port Test موفق ولی SSH Fail میشود | لایه بالاتر SSH | Verbose/Auth |
اتصال فوراً Refused میشود | Listener/Reject | مقاله Connection refused |
اشتباهات رایج هنگام رفع SSH Timeout
تغییر SSH Key
اگر TCP Connection برقرار نشده، Key هنوز بررسی نشده است.
غیرفعال کردن کامل Firewall
این کار روی Production Server میتواند مشکل امنیتی ایجاد کند.
بهجای:
sudo ufw disableبهتر است ابتدا:
sudo ufw status numberedرا بررسی کنید و Rule مربوط به SSH را پیدا کنید.
تغییر همزمان چند چیز
مثلاً:
SSH Port
Firewall
DNS
sshd_config
Network Configرا همزمان تغییر ندهید.
در غیر این صورت اگر مشکل حل شود نمیدانید علت چه بوده، و اگر بدتر شود تشخیص مشکل سختتر خواهد شد.
فرض اینکه Ping یعنی همهچیز
Ping ابزار مفیدی است، اما تست TCP Port برای SSH بسیار مرتبطتر است.
Restart کردن Network از راه دور بدون Console
تغییر Netplan یا Restart شبکه روی Server Remote میتواند آخرین ارتباط شما را نیز قطع کند.
قبل از تغییرات حساس Network، Console یا Recovery Access داشته باشید.
اگر هیچ Console یا دسترسی دیگری نداریم چه کنیم؟
اگر SSH Timeout میشود و تنها روش دسترسی شما SSH بوده، بسیاری از بررسیهای Server-side را نمیتوانید اجرا کنید.
در این حالت از پنل Provider دنبال مواردی مثل:
Web Console
VNC Console
Serial Console
Rescue Mode
Recoveryبگردید.
همچنین در پنل بررسی کنید:
Server روشن است؟
IP تغییر نکرده؟
Network Interface متصل است؟
Firewall خارجی فعال است؟
Incident شبکه وجود دارد؟
اگر سرویس هیچ روش Recovery در اختیار شما نمیگذارد، ممکن است نیاز به بررسی توسط Provider داشته باشید.
جمعبندی
خطای:
ssh: connect to host SERVER_IP port 22: Connection timed outمعمولاً یعنی SSH Client در زمان مورد انتظار نتوانسته Connection اولیه را با مقصد برقرار کند.
در این مرحله تمرکز اصلی باید روی:
IP
Port
Network
Routing
Firewall
Cloud Firewall
IPv4 / IPv6
SSH Listenerباشد، نه Password و SSH Key.
برای شروع از Client:
ssh -vvv -o ConnectTimeout=10 user@SERVER_IPو:
nc -vz -w 5 SERVER_IP 22را امتحان کنید.
در Windows:
Test-NetConnection -ComputerName SERVER_IP -Port 22و اگر Port در دسترس نیست، از Console سرور بررسی کنید:
ip addr
ip route
sudo systemctl status ssh
sudo ss -tlnp
sudo ufw status verboseسپس Cloud Firewall و Route شبکه را بررسی کنید.
ترتیب پیشنهادی ما:
IP / DNS
↓
Port
↓
Client Network
↓
Server Network
↓
SSH Listener
↓
Host Firewall
↓
Cloud Firewall
↓
Routing / Providerو مهمترین نکته:
Connection timed outرا باConnection refusedیاPermission deniedاشتباه نگیرید؛ هرکدام در مرحله متفاوتی از اتصال SSH رخ میدهند و مسیر عیبیابی متفاوتی دارند.
سوالات متداول
خطای SSH Connection timed out یعنی چه؟
معمولاً یعنی Client نتوانسته در زمان موردانتظار Connection اولیه را با IP و Port SSH مقصد برقرار کند. Firewall Drop، Routing، IP اشتباه، Server Offline یا Cloud Firewall از علتهای رایج هستند.
آیا SSH Key اشتباه باعث Connection timed out میشود؟
معمولاً خیر. SSH Key بعد از برقرارشدن Connection و آغاز Authentication بررسی میشود. Key اشتباه بیشتر خطایی مثل Permission denied (publickey) ایجاد میکند.
چطور Port 22 را تست کنیم؟
در Linux/macOS:
nc -vz -w 5 SERVER_IP 22در Windows:
Test-NetConnection -ComputerName SERVER_IP -Port 22چرا Ping جواب میدهد ولی SSH Timeout میشود؟
چون Ping و SSH از Traffic یکسانی استفاده نمیکنند. ممکن است ICMP مجاز باشد ولی TCP Port 22 توسط Firewall یا Cloud Firewall Drop شود.
چرا SSH از یک اینترنت کار میکند ولی از اینترنت دیگر Timeout میشود؟
این حالت میتواند نشاندهنده محدودیت ISP، Firewall شبکه Client، Route متفاوت یا Rule محدودشده به Source IP باشد.
چرا با IP وصل میشوم ولی با Domain نه؟
احتمالاً DNS به IP اشتباه یا Address دیگری مثل IPv6 مشکلدار اشاره میکند. Recordهای A و AAAA را بررسی کنید.
ConnectTimeout چه کاری انجام میدهد؟
مدت انتظار SSH Client برای برقراری Connection و Handshake اولیه را محدود میکند. مثلاً:
ssh -o ConnectTimeout=10 user@SERVER_IPبرای Troubleshooting سریعتر مفید است، اما علت اصلی Network Timeout را برطرف نمیکند.




