رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آشنایی کامل با SSH Port Forwarding (تونل‌سازی SSH)

آشنایی کامل با SSH Port Forwarding (تونل‌سازی SSH)

آموزش SSH Port Forwarding (تونل‌سازی SSH) — راهنمای کامل Local، Remote و Dynamic SSH Port Forwarding که با نام SSH Tunneling هم شناخته می‌شود، یکی از مهم‌ترین روش‌ها برای ایجاد ارتباط امن بین سیستم‌ها در شبکه‌های ناامن است. با استفاده از این قابلیت، ترافیک شبکه از داخل یک تونل رمزنگاری‌شده عبور می‌کند و از شنود، دستکاری و حملات احتمالی در امان می‌ماند.

Local ،Remote و Dynamic به زبان ساده

SSH Port Forwarding یا تونل‌سازی SSH روشی امن برای عبور دادن ترافیک شبکه از داخل یک اتصال رمزنگاری‌شده SSH است. این تکنیک به شما اجازه می‌دهد حتی روی شبکه‌های ناامن (مثل اینترنت عمومی یا Wi-Fi عمومی) بدون نگرانی از شنود یا دستکاری داده‌ها، به سرویس‌های راه دور متصل شوید.

این قابلیت برای مدیران سرور، توسعه‌دهندگان، متخصصان امنیت و افرادی که با دیتابیس‌ها و سرویس‌های ریموت کار می‌کنند یک ابزار حیاتی محسوب می‌شود.

در این راهنما سه نوع اصلی Port Forwarding را یاد می‌گیرید:

  • Local Port Forwarding

  • Remote Port Forwarding

  • Dynamic Port Forwarding

همراه با مثال‌های کاربردی، سناریوهای واقعی و نکات عیب‌یابی.


SSH Port Forwarding چیست؟

تونل‌سازی SSH یک مسیر ارتباطی امن بین دو سیستم ایجاد می‌کند که تمام داده‌ها در آن رمزنگاری می‌شوند.
می‌توانید آن را مثل یک تونل خصوصی در نظر بگیرید که ترافیک شبکه شما را از دید افراد غیرمجاز پنهان می‌کند.

کاربردهای اصلی:

  • دسترسی امن به دیتابیس‌های راه دور

  • عبور از محدودیت‌های فایروال

  • تست و توسعه سرویس‌های ریموت

  • محافظت از داده‌های حساس در حال انتقال


1️⃣ Local Port Forwarding (‎ssh -L‎)

این روش ترافیک را از سیستم محلی شما به یک سرویس روی سرور راه دور هدایت می‌کند.

کاربردها

  • اتصال امن به دیتابیس ریموت

  • دسترسی به وب‌اپلیکیشن‌های داخلی سرور

  • تست سرویس‌های راه دور در محیط لوکال

  • عبور امن از محدودیت‌های فایروال

ساختار دستور

 
ssh -L local_port:destination_host:destination_port user@ssh_server

مثال عملی (اتصال به PostgreSQL)

 
ssh -L 5433:localhost:5432 user@remote-db.com

حالا اگر برنامه شما به localhost:5433 وصل شود، در واقع به دیتابیس PostgreSQL روی سرور ریموت متصل شده است، آن هم از داخل یک تونل رمزنگاری‌شده.

ویژگی‌های امنیتی

  • رمزنگاری کامل داده‌ها

  • احراز هویت SSH

  • جلوگیری از شنود و دستکاری اطلاعات


2️⃣ Remote Port Forwarding (‎ssh -R‎)

این روش برعکس حالت قبل است. ترافیک از سرور راه دور به سمت سیستم محلی شما هدایت می‌شود.

کاربردها

  • نمایش محیط توسعه لوکال به دیگران

  • دور زدن NAT یا فایروال‌های محدودکننده

  • دسترسی ریموت به سرویس‌های لوکال

  • انتشار موقت یک سرویس بدون تغییر تنظیمات شبکه

ساختار دستور

 
ssh -R remote_port:local_host:local_port user@remote_ssh_server

مثال

 
ssh -R 9000:localhost:9000 user@remote-ssh.com

هر ترافیکی که روی پورت 9000 سرور ریموت بیاید، به پورت 9000 سیستم شما منتقل می‌شود.

تنظیم مهم روی سرور

در فایل:

 
/etc/ssh/sshd_config

این گزینه باید فعال باشد:

 
GatewayPorts yes

سپس:

 
sudo systemctl restart sshd

3️⃣ Dynamic Port Forwarding (‎ssh -D‎)

در این حالت SSH یک SOCKS Proxy می‌سازد که می‌تواند انواع مختلفی از ترافیک را از داخل تونل SSH عبور دهد.

کاربردها

  • وب‌گردی امن روی شبکه‌های عمومی

  • عبور از محدودیت‌های شبکه

  • مخفی کردن IP واقعی

  • پروکسی کردن ترافیک برنامه‌ها

دستور

 
ssh -D 8080 user@secure-server.com

سپس در مرورگر یا نرم‌افزارها، پروکسی را روی:

 
127.0.0.1:8080 (SOCKS5)

تنظیم می‌کنید.


تنظیم Port Forwarding در فایل SSH Config

برای ساده‌تر شدن اتصال‌های تکراری:

 
~/.ssh/config

مثال:

 
Host db-forward HostName remote-db.com User user LocalForward 5433 localhost:5432

اتصال فقط با:

 
ssh db-forward

فوروارد همزمان چند پورت

 
ssh -L 8080:localhost:80 -L 5432:localhost:5432 user@server.com

کاربردهای واقعی

  • مدیریت امن دیتابیس‌ها

  • دیباگ وب‌اپلیکیشن‌های ریموت

  • وب‌گردی امن با تونل SSH

  • دسترسی امن به سرویس‌های داخلی شرکت


مشکلات رایج و عیب‌یابی

1. اشتباه گرفتن جهت تونل

-L از لوکال به ریموت
-R از ریموت به لوکال

2. تداخل پورت

بررسی:

 
sudo lsof -i :PORT

3. خطای Permission Denied

در سرور:

 
AllowTcpForwarding yes

نکات امنیتی مهم

  • فقط پورت‌های ضروری را فوروارد کنید

  • از SSH Key به جای پسورد استفاده کنید

  • اتصال‌های فعال را مانیتور کنید

  • لاگ‌های SSH را بررسی کنید

  • نرم‌افزار SSH را به‌روز نگه دارید


تفاوت Local و Remote در یک نگاه

نوعجهت ترافیککاربرد اصلی
Local (-L)لوکال → ریموتدسترسی به سرویس‌های ریموت
Remote (-R)ریموت → لوکالنمایش سرویس‌های لوکال
Dynamic (-D)پروکسی عمومیوب‌گردی امن و عبور از فیلتر

جمع‌بندی

SSH Port Forwarding یکی از قدرتمندترین قابلیت‌های SSH است که امکان ایجاد ارتباطات امن، انعطاف‌پذیر و کنترل‌شده را فراهم می‌کند. با تسلط بر سه حالت Local، Remote و Dynamic می‌توانید:

  • داده‌های حساس را امن منتقل کنید

  • محدودیت‌های شبکه را دور بزنید

  • توسعه و مدیریت سرور را ساده‌تر انجام دهید

این تکنیک بخش مهمی از ابزارهای حرفه‌ای مدیریت سرور و امنیت شبکه محسوب می‌شود.