تونل SSH چیست؟ آموزش کامل تانلینگ بین دو سرور ۱۴۰۴

📌 خلاصه مطلب (TL;DR)
- تونل SSH چیست؟ روشی امن برای انتقال رمزنگاریشده دادهها بین دو سرور از طریق پروتکل SSH.
- انواع تانلینگ: Local Port Forwarding، Remote Port Forwarding، Dynamic Port Forwarding (پروکسی SOCKS).
- کاربرد اصلی: دسترسی امن به دیتابیسها، دور زدن فایروال، دسترسی به سرویسهای داخلی شبکه.
- دستور سریع:
ssh -L 3306:localhost:3306 user@serverبرای تونل MySQL.
🔍 کدام نوع تونل برای شما مناسب است؟
قدم اول: هدف شما از تانلینگ چیست؟
- ✅ دسترسی به سرویس روی سرور: Local Port Forwarding →
ssh -L - ⚠️ دادن دسترسی به سیستم محلی: Remote Port Forwarding →
ssh -R - 🔸 پروکسی SOCKS برای مرور امن: Dynamic Port Forwarding →
ssh -D
قدم دوم: پیشنیازهای تونل SSH:
- 🔸 دسترسی SSH به سرور مقصد (پورت ۲۲)
- 🔸 احراز هویت با رمز عبور یا کلید SSH
- 🔸 پورت مبدا روی سیستم محلی آزاد باشد
تونلزدن یا Tunneling یکی از مهمترین تکنیکهای امنیتی در مدیریت سرورها و شبکهها است. با استفاده از تانلینگ SSH، میتوانید ارتباطات رمزنگاریشدهای بین دو سرور یا بین سیستم محلی و سرور برقرار کنید. این روش بهویژه برای دسترسی امن به دیتابیسها، سرویسهای داخلی، و دور زدن محدودیتهای فایروال کاربرد دارد.
جدول مقایسه انواع تونل SSH
| نوع تونل | دستور | کاربرد | مثال |
|---|---|---|---|
| Local Port Forwarding | ssh -L |
دسترسی به سرویس روی سرور | تونل به MySQL سرور |
| Remote Port Forwarding | ssh -R |
دادن دسترسی به سیستم محلی | دسترسی به لوکالهاست از سرور |
| Dynamic Port Forwarding | ssh -D |
پروکسی SOCKS | مرور امن اینترنت |
تونل SSH چیست و چگونه کار میکند؟
SSH Tunneling یا SSH Port Forwarding، روشی برای انتقال امن دادهها از طریق یک اتصال SSH رمزنگاریشده است. در این روش، پورتهای شبکهای از یک سیستم به سیستم دیگر هدایت میشوند و تمام ترافیک از طریق کانال SSH رمزنگاری میشود.
به زبان ساده، تصور کنید یک تونل امن و رمزنگاریشده بین دو نقطه ایجاد میکنید که هر دادهای از این تونل عبور کند، کاملاً محافظت شده است.
مزایای استفاده از تونل SSH
- امنیت بالا: تمام دادهها رمزنگاری میشوند
- دور زدن فایروال: دسترسی به سرویسهای بلاکشده
- سادگی: نیاز به نرمافزار اضافی نیست
- انعطافپذیری: پشتیبانی از انواع سرویسها و پورتها
Local Port Forwarding: دسترسی به سرویسهای سرور
رایجترین نوع تانلینگ، Local Port Forwarding است. با این روش میتوانید به سرویسی که روی سرور راهدور اجرا میشود، از طریق پورت محلی دسترسی پیدا کنید.
فرمت دستور
مثال: تونل به MySQL
فرض کنید میخواهید به دیتابیس MySQL روی سرور خود متصل شوید که فقط روی localhost در دسترس است:
ssh -L 3306:localhost:3306 user@your-server.com
# حالا میتوانید از MySQL Workbench به localhost:3306 متصل شوید
💡 نکته: با استفاده از این روش، میتوانید به دیتابیسهایی که بهدلایل امنیتی فقط روی localhost در دسترس هستند، بهصورت امن متصل شوید. اگر به سرور مجازی با دسترسی SSH نیاز دارید، سرویسهای VPS برتینا را بررسی کنید.
Remote Port Forwarding: دادن دسترسی به سیستم محلی
Remote Port Forwarding برعکس Local عمل میکند. با این روش میتوانید یک سرویس محلی را از طریق سرور راهدور در دسترس قرار دهید.
فرمت دستور
مثال: دسترسی به وبسرور محلی از طریق سرور
ssh -R 8080:localhost:3000 user@your-server.com
# حالا your-server.com:8080 به سرور محلی شما متصل میشود
Dynamic Port Forwarding: پروکسی SOCKS
Dynamic Port Forwarding یک پروکسی SOCKS ایجاد میکند که میتوانید تمام ترافیک مرورگر یا سایر برنامهها را از آن عبور دهید.
ssh -D 1080 user@your-server.com
# تنظیم مرورگر برای استفاده از پروکسی SOCKS5 روی localhost:1080
بهترین روشهای امنیتی تانلینگ SSH در سال ۱۴۰۴
برای استفاده امن از تونل SSH، رعایت نکات زیر ضروری است:
۱. استفاده از کلید SSH بهجای رمز عبور
کلیدهای SSH امنتر از رمز عبور هستند و از حملات Brute Force جلوگیری میکنند. از الگوریتم ED25519 استفاده کنید:
۲. غیرفعال کردن لاگین Root
در فایل /etc/ssh/sshd_config تنظیم کنید:
۳. محدود کردن Port Forwarding
فقط به کاربران مجاز اجازه تانلینگ بدهید:
PermitOpen localhost:3306
۴. استفاده از autossh برای اتصال پایدار
برای تونلهای دائمی، autossh بهطور خودکار اتصال قطعشده را برقرار میکند:
تانلینگ بین دو سرور لینوکس
برای برقراری تونل بین دو سرور لینوکس (مثلاً انتقال ترافیک از سرور A به سرور B):
ssh -N -L 0.0.0.0:8080:localhost:80 user@server-b.com
# حالا سرور A روی پورت 8080 ترافیک را به سرور B هدایت میکند
برای زنجیرهسازی تونلها (Jump Host)، از گزینه -J استفاده کنید:
ssh -J user@jump-server user@final-server
موارد استفاده رایج تونل SSH
- دسترسی به دیتابیس: اتصال امن به MySQL، PostgreSQL، MongoDB
- دسترسی به پنل مدیریت: phpMyAdmin، cPanel بدون باز کردن پورت به اینترنت
- توسعه و تست: دسترسی به محیطهای Staging و Development
- دور زدن فایروال: دسترسی به سرویسهای محدودشده
- مرور امن اینترنت: با استفاده از Dynamic Port Forwarding
💡 از تجربه ما: این راهنما بر اساس تجربه تیم DevOps برتینا در مدیریت صدها سرور و برقراری تونلهای امن تهیه شده است. اگر به سرور اختصاصی با دسترسی کامل نیاز دارید، سرویسهای Dedicated برتینا را بررسی کنید.
سوالات متداول درباره تونل SSH
تفاوت تونل SSH با VPN چیست؟
تونل SSH فقط ترافیک پورتهای مشخص را رمزنگاری میکند، در حالی که VPN تمام ترافیک شبکه را از طریق یک کانال امن عبور میدهد. SSH برای دسترسی به سرویسهای خاص مناسبتر است و نیاز به نرمافزار اضافی ندارد.
آیا تونل SSH امن است؟
بله، تونل SSH از رمزنگاری قوی (AES-256) استفاده میکند و تمام دادههای عبوری را رمزنگاری میکند. با استفاده از کلیدهای SSH و بهترین روشهای امنیتی، یکی از امنترین روشهای انتقال داده محسوب میشود.
چگونه تونل SSH را بهصورت دائمی اجرا کنم؟
برای اجرای دائمی تونل SSH از ابزار autossh استفاده کنید که بهطور خودکار اتصال قطعشده را برقرار میکند. همچنین میتوانید یک سرویس systemd ایجاد کنید تا تونل با راهاندازی سیستم شروع شود.
چرا تونل SSH قطع میشود؟
قطع شدن تونل معمولاً بهدلیل بیفعالیتی (Idle Timeout) اتفاق میافتد. برای جلوگیری از این مشکل، از گزینههای ServerAliveInterval و ServerAliveCountMax در تنظیمات SSH استفاده کنید یا از autossh بهره ببرید.
برای راهاندازی تونل SSH به سرور نیاز دارید؟
در این مقاله، انواع تونل SSH و نحوه برقراری تانلینگ بین دو سرور را بررسی کردیم. برای استفاده از تونل SSH به یک سرور با دسترسی SSH نیاز دارید:
- ✅ با سرور مجازی (VPS) برتینا، دسترسی کامل SSH و Root داشته باشید
- ✅ سرور اختصاصی برای پروژههای بزرگ با نیاز به منابع بالا
- ✅ هاست لینوکس با دسترسی SSH برای پروژههای کوچکتر
منابع معتبر: مستندات DigitalOcean | LinuxMind SSH Guide




