جستجو برای:
سبد خرید 0
  • خانه
  • دوره ها
  • معرفی ابزارهای لینوکس
  • مقالات
  • فروم لینوکس لرن
  • تماس با ما

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
  • 09159612321
  • info@linuxlearn.org
  • درباره ما
0
آموزش لینوکس 🐧 آموزش دوآپس 🐋
  • خانه
  • دوره ها
  • معرفی ابزارهای لینوکس
  • مقالات
  • فروم لینوکس لرن
  • تماس با ما
شروع کنید

وبلاگ

آموزش لینوکس 🐧 آموزش دوآپس 🐋مقالاتمقالاتنحوه ایجاد SSH Tunnel یا Port Forward در لینوکس

نحوه ایجاد SSH Tunnel یا Port Forward در لینوکس

29 بهمن 1397
ارسال شده توسط عارف اختری
مقالات

SSH Tunnel (همچنین به عنوان SSH port forwarding هم شناخته میشود) در حقیقت مسیردهی آسان ترافیک شبکه local از طریق SSH به هاست های ریموت میباشد.
با این روش تمام کانکشن های شما با استفاده از encryption امن هستند.

این شیوه راه آسانی برای تعریف یک VPN (مخفف Virtual Private Network) فراهم میآورد، که برای ارتباط به شبکه های private از بستر شبکه های public غیر امن مانند اینترنت میباشد.

شما ممکن است همچنین سرورهای local ی که پشت NAT و Firewall قرار دارند را از بستر تانل های امن دسترسی دهید،

همانطور که در ngrok پیاده سازی شده است. مقاله ngrok چیست می تواند مفید باشد

SSH Tunnel
SSH Tunnel

به طور پیش فرض session های SSH برقراری تانل برای ارتباطات شبکه را مجاز میداند و همچنین سه نوع SSH port forwarding وجود دارد :

  • Local
  • Dynamic
  • Remote

این مثال را با توجه به مقادیر پیش فرض زیر ادامه می دهیم.

هاست لوکال : 192.168.43.31
هاست ریموت : server1.example.com

معمولا، شما میتوانید به طور امن به یک سرور ریموت با استفاده از SSH همانند مثال زیر متصل شوید. من لاگین ssh بدون پسورد را بین هاست های remote و local را کانفیگ کرده ام در نتیجه از من درخواست پسورد نمیشود.

$ ssh admin@server1.example.com

ssh output
ssh output

 

Local SSH Port Forwarding

این نوع از port forwarding به شما اجازه میدهد از کامپیوتر لوکال تان به سرور ریموت متصل شوید.

فرض میکنیم که شما پشت یک فایروال محدود هستید یا توسط یک فایروال خروجی از دسترسی به یک اپلیکیشن در حال اجرا روی پورت 3000 روی سرور ریموت تان block شده اید.

شما میتوانید یک پورت local را فوروارد کنید (به طور مثال 8080) که میتوانید از آن برای دسترسی به اپلیکیشن به صورت local استفاده کنید.

آپشن -L برای تعریف پورت فوروارد شده به هاست ریموت و remote port میباشد.

$ ssh admin@server1.example.com -L 8080: server1.example.com:3000

اضافه کردن آپشن -N به معنای اجرا نکردن یک دستور remote است که در این شرایط شما shell ی دریافت نخواهید کرد.

$ ssh -N admin@server1.example.com -L 8080: server1.example.com:3000

آپشن -f دستور ssh را در محیط background اجرا میکند.

$ ssh -f -N admin@server1.example.com -L 8080: server1.example.com:3000

اکنون روی ماشین لوکال تان یک مرورگر باز کنید
به جای دسترسی به اپلیکیشن ریموت به جای استفاده از آدرس server1.example.com:3000 شما میتوانید به آسانی از localhost:8080 یا192.168.43.31:8080 همانند تصویر زیر استفاده کنید.

خروجی 192.168.43.31:8080
خروجی 192.168.43.31:8080

 

Remote SSH Port Forwarding

Remote SSH Port Forwarding به شما این امکان را میدهد که از ماشین ریموت خود به کامپیوتر لوکال تان متصل شوید. به صورت پیش فرض ssh اجازه remote port forwarding را نمیدهد
شما میتوانید آنرا با استفاده از بخش GatewayPorts در تنظیمات اصلی sshd واقع در فایل کانفیگ /etc/ssh/sshd_config روی هاست ریموت خود فعال کنید.

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

$ sudo vim /etc/ssh/sshd_config

به دنبال بخش مورد نظر بگردید و آنرا از کامنت خارج کنید و مقدار آنرا همانند زیر برابر با yes قرار دهید.

GatewayPorts yes

GatewayPorts yes
GatewayPorts yes

تغییرات را ذخیره کنید و از آن خارج شوید. سپس به منظور اعمال تغییرات شما نیاز دارید که سرویس sshd را ریستارت کنید.

$ sudo systemctl restart sshd
or
$ sudo service sshd restart

سپس دستور زیر را برای فوروارد کردن پورت 5000 روی ماشین ریموت به پورت 3000 روی ماشین لوکال اجرا کنید.

$ ssh -f -N admin@server1.example.com -R 5000:localhost:3000

به محض اینکه شما این روش از tunneling را درک کنید شما میتوانید به آسانی و به شیوه ای امن یک سرور برنامه نویسی لوکال را پابلیش کنید مخصوصا اگر پشت NAT و Firewall باشد.
تانل های همانند Ngrok, pagekite, localtunnel و متدهای بیشمار دیگر همه به شیوه ای مشابه کار میکنند.

Dynamic SSH Port Forwarding

این سومین روش از port forwarding میباشد.
برخلاف port forward لوکال و ریموت که ارتباط با یک پورت مجزا را امکان پذیر میکردند این روش یک رنج کاملی از ارتباطات TCP را از طریق یک رنجی از پورت ها ممکن میسازد.

روش Dynamic Port Forwarding ماشین شما را به عنوان یک SOCKS proxy server که به صورت پیش فرض روی پورت 1080 در حال listen میباشد، تنظیم و تعریف میکند.

برای مبتدیان باید بگوییم که SOCKS یک پروتکل اینترنت است که نحوه اتصال یک کلاینت به یک سرور را از طریق یک سرور پراکسی (در اینجا SSH میباشد) تعریف میکند.

شما میتوانید Dynamic Port Forwarding را با آپشن -D فعال کنید.

دستور زیر یک پراکسی SOCKS را روی پورت 1080 آغاز میکند که به شما امکان اتصال به هاست ریموت را میدهد.

$ ssh -f -N -D 1080 admin@server1.example.com

از این به بعد شما میتوانید کاری کنید که اپلیکیشن های روی ماشین تان از این سرور SSH Proxy استفاده کنند،
تنها کافیست تنظیمات و کانفیگ آنها را طوری انجام دهید که از این سرور استفاده کنند.

دقت کنید که Socks Proxy بعد از اینکه session ssh بسته شود کار خود را متوقف خواهد کرد.

خلاصه

در این پست ما انواع گوناگون port forwarding از یک ماشین به ماشین دیگر را و برای tunneling ترافیک از طریق کانکشن امن SSH توضیح دادیم.

این یکی از استفاده های بیشمار از SSH است. شما نیز میتوانید نظرات خود را در این پست ارسال کنید.

نکته : port forwarding ssh معایب قابل ملاحظه ای دارد، این دستور میتواند آثار سوءی داشته باشد، میتواند برای bypass کردن مانیتورینگ شبکه و برنامه های فیلترینگ ترافیک (یا فایروال) مورد استفاده قرار گیرد.

هکرها میتوانند از آن برای فعالیت های مخرب خود استفاده کنند.

برچسب ها: Dynamic SSH Port Forwardinghow to create ssh tunnel in linuxhow-to-create-ssh-tunnelLocal SSH Port ForwardingPort Forward در لینوکسRemote SSH Port ForwardingSocks ProxysshSSH port forwardingSSH TunnelVirtual Private Networkنحوه ایجاد SSH Tunnelنحوه ایجاد SSH Tunnel یا Port Forwardنحوه ایجاد SSH Tunnel یا Port Forward در لینوکس
بعدی FHS در لینوکس
قبلی لیستی از سایت های آموزشی برای هکر ها

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پشتیبانی
دسته‌ها
  • مقالات
برچسب‌ها
debian fedora freebsd glusterfs in linux kali learnlinux learn linux Linux linux academy linux and unix linux Desktop linux enthusiastic linuxlearn linux learn linuxlearnorg linuxorg linux passion linux server linuxtutor linuxtutorial linuxuser plasma tutorial tutorial video zabbix آشنایی با توزیع های لینوکس آغاز کار با لینوکس آموزش تخصصی لینوکس آموزش سرور لینوکس آموزش لینوکس آنتی ویروس اموزش لینوکس اوبونتو بات نت بهترین توزیع لینوکس توزیع های لینوکس دبیان سرور لینوکس سودو فدورا لینوکس لینوکس لرن لینوکس چیست نرم افزار
  • محبوب
  • جدید
  • دیدگاه ها
پشتیبانی
بایگانی
  • دی ۱۳۹۹
  • آذر ۱۳۹۹
  • آبان ۱۳۹۹
  • مهر ۱۳۹۹
  • شهریور ۱۳۹۹
  • مرداد ۱۳۹۹
  • اردیبهشت ۱۳۹۹
  • دی ۱۳۹۸
  • آذر ۱۳۹۸
  • مهر ۱۳۹۸
  • شهریور ۱۳۹۸
  • مرداد ۱۳۹۸
  • تیر ۱۳۹۸
  • خرداد ۱۳۹۸
  • اسفند ۱۳۹۷
  • بهمن ۱۳۹۷
  • دی ۱۳۹۷
  • آذر ۱۳۹۷

لینوکس لرن حاصل تلاش یک تیم متخصص و علاقه مند است که سعی می کند آموزش ها را با نهایت کیفیت به مشتریان ارائه نماید. ارائه خدمات پیشتاز امضاء بزرگی بر شعار لینوکس لرن یعنی ” تحولی بزرگ در ارائه خدمات لینوکس ” می باشد.

  • ایران - مشهد
  • 09159612321
  • info@linuxlearn.org
دسترسی سریع
  • خانه
  • مقالات
  • معرفی ابزارهای لینوکس
  • دوره ها
  • مدرسان
  • کتابخانه لینوکس لرن
  • سیاست حریم خصوصی
  • فروم لینوکس لرن
  • تماس با ما
  • درباره ما
خبرنامه

لوگوی اعتماد
Designed By Behnam 09158634525
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://linuxlearn.org/?p=6192
علاقمندی ها 0
صفحه علاقمندی های من ادامه خرید
  • دسته بندی دوره ها
  • دوره های من
  • جستجو

دسته بندی دوره ها

دوره های آکادمیک

[1 دوره]

دوره های ابری

[1 دوره]

دوره های رایگان

[18 دوره]

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

[18 دوره]

صفر تا صد لینوکس

[7 دوره]

کتاب های الکترونیکی

[9 دوره]

دوره های من

جستجو

مرورگر شما از HTML5 پشتیبانی نمی کند.