نحوه ایجاد تونل از طریق SSH یا SSH Port Forwarding در لینوکس
SSH port forwarding
SSH tunneling یا SSH port forwarding به صورت کاملا ساده قادر است ترافیک شبکه داخلی را از طریق تونل SSH به هاست راه دور مسیردهی کند. این بدین معنی است که همه ترافیک ارسالی از طریق رمزنگاری امن میشود. این راهکار یک روش ساده برای ایجاد تونل VPN ارایه میدهد که برای اتصال به شبکههای خصوصی در بستر اینترنت روشی کاربردی است.
همچنین ممکن است از این راهکار از بستر اینترنت برای دسترسی به سرورهایی که پشت NAT یا فایروال قرار دارند استفاده شود.
نشستهای SSH به صورت پیش فرض اجازه تونل کردن تمام ارتباطات شبکهای را میدهند. در حال حاضر سه روش برای SSH port forwarding ارایه شده است: Local یا محلی، Remote یا راه دور و Dynamic یا پویا.
به طور معمول ما میتوانیم با استفاده از SSH به صورت امن به سرور خود متصل شویم.
SSH port forwarding محلی
این نوع از Port forwarding امکان اتصال از کامپیوتر Local به سرویسهای سرور راه دور از طریق تونل SSH را فراهم میکند. با فرض این دو سناریو که یا سیستم ما در شبکهای قرار دارد که از طریق فایروال، ارتباطات بیرونیاش محدود شده یا سرور راه دور پشت فایروالی قرار دارد که اجازه اتصال بر روی پورت خاصی مانند پورت 9000 را به ما نمیدهد.
ما میتوانیم یک پورت بر روی سیستم خودمان (مانند پورت 8080) را طبق دستور زیر و از طریق امکان Port forwarding تونل SSH برای دسترسی به پورت برنامه کاربردی بر روی سرور راه دور (مانند پورت 9000) استفاده کنیم. پرچم L- برای تعریف Port forwarding مربوط به سرور راه دور و پورت آن میباشد.
ssh [email protected] -L 8080: server.iranshell.ir:9000
اضافه کردن پرچم N- به معنی عدم اجرای دستور به صورت راه دور برای گرفتن Shell میباشد.
ssh -N [email protected] -L 8080: server.iranshell.ir:9000
اضافه کردن پرچم f- برای اجرای SSH در پشت صحنه میباشد.
ssh -f -N [email protected] -L 8080: server.iranshell.ir:9000
الان میتوانیم از سیستم خود و در صورتی که سرویس مورد نظر از طریق مروگر وب قابل اجرا باشد، با زدن آدرس Localhost:8080 به جای server.iranshell.ir:9000 به سرویس مورد نظر از طریق تونل SSH دسترسی پیدا کنیم.
SSH port forwarding راه دور
Remote port forwarding به ما این امکان را میدهد که از سرور راه دور به سیستم موجود در شبکه Local متصل شویم. به صورت پیشفرض SSH اجازه SSH port forwarding را دور را نمیدهد و بایستی امکان Gatewayport در تنظیمات مربوط به سرویس SSH از مسیر /etc/ssh/sshd_config فعال شود.
GatewayPorts yes
بعد از ریستارت سرویس SSH دستور زیر را برای Forward کردن پورت 5000 بروری سرور به پورت 3000 سیستم Local استفاده میکنیم.
ssh -f -N [email protected] -R 5000: Localhost:3000
SSH port forwardinf پویا یا داینامیک
SSH port forwarding داینامیک برخلاف دو نوع قبلی که فقط اجازه ارتباط با یک پورت را میدادند، امکان ارتباط با استفاده از کلیه پورتهای TCP را فراهم میکند. Dynamic port forwarding سیستم شما را به صورت پروکسی تنظیم میکند که بر روی پورت 1080 به ارتباطات TCP گوش میدهد.
Dynamic port forwarding با استفاده از دستور زیر فعال میشود.
ssh -f -N -D 1080 [email protected]
دیدگاهتان را بنویسید