خانه سرور اختصاصی و کولوکیشن تونل زدن یا ( tunneling) بین دو سرور چیست؟
تاریخ به‌روزرسانی : 1402/06/29
به قلم : شهاب بیرامی
زمان مطالعه : 7 دقیقه

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

آموزش تانلینگ و تونل 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 است. با این روش می‌توانید به سرویسی که روی سرور راه‌دور اجرا می‌شود، از طریق پورت محلی دسترسی پیدا کنید.

فرمت دستور

ssh -L [local_port]:[destination_host]:[destination_port] [user]@[ssh_server]

مثال: تونل به MySQL

فرض کنید می‌خواهید به دیتابیس MySQL روی سرور خود متصل شوید که فقط روی localhost در دسترس است:

# ایجاد تونل به MySQL سرور
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 [remote_port]:[local_host]:[local_port] [user]@[ssh_server]

مثال: دسترسی به وب‌سرور محلی از طریق سرور

# وب‌سرور محلی روی پورت 3000 اجرا می‌شود
ssh -R 8080:localhost:3000 user@your-server.com

# حالا your-server.com:8080 به سرور محلی شما متصل می‌شود

Dynamic Port Forwarding: پروکسی SOCKS

Dynamic Port Forwarding یک پروکسی SOCKS ایجاد می‌کند که می‌توانید تمام ترافیک مرورگر یا سایر برنامه‌ها را از آن عبور دهید.

# ایجاد پروکسی SOCKS روی پورت 1080
ssh -D 1080 user@your-server.com

# تنظیم مرورگر برای استفاده از پروکسی SOCKS5 روی localhost:1080

بهترین روش‌های امنیتی تانلینگ SSH در سال ۱۴۰۴

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

۱. استفاده از کلید SSH به‌جای رمز عبور

کلیدهای SSH امن‌تر از رمز عبور هستند و از حملات Brute Force جلوگیری می‌کنند. از الگوریتم ED25519 استفاده کنید:

ssh-keygen -t ed25519 -C "your_email@example.com"

۲. غیرفعال کردن لاگین Root

در فایل /etc/ssh/sshd_config تنظیم کنید:

PermitRootLogin no

۳. محدود کردن Port Forwarding

فقط به کاربران مجاز اجازه تانلینگ بدهید:

AllowTcpForwarding yes
PermitOpen localhost:3306

۴. استفاده از autossh برای اتصال پایدار

برای تونل‌های دائمی، autossh به‌طور خودکار اتصال قطع‌شده را برقرار می‌کند:

autossh -M 0 -f -N -L 3306:localhost:3306 user@server

تانلینگ بین دو سرور لینوکس

برای برقراری تونل بین دو سرور لینوکس (مثلاً انتقال ترافیک از سرور A به سرور B):

# روی سرور A اجرا کنید
ssh -N -L 0.0.0.0:8080:localhost:80 user@server-b.com

# حالا سرور A روی پورت 8080 ترافیک را به سرور B هدایت می‌کند

برای زنجیره‌سازی تونل‌ها (Jump Host)، از گزینه -J استفاده کنید:

# اتصال به سرور C از طریق سرور B (Jump Host)
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 نیاز دارید:

منابع معتبر: مستندات DigitalOcean | LinuxMind SSH Guide

نظرات