
توی این پست میخوام چیزهایی که خودم از reverse ssh بلدم رو به اشتراک بذارم.
کاربردش چیه؟ خیلی چیزا
کاربردی به من داشت این بود که سایتهای شبکه داخلی شرکتمون رو پروکسی میکنم به کامپیوتر خونه. یا بدون آی پی ولید به کامپیوتر شرکت یا خونه یا حتی مبایلم ssh میزنم.
پیش نیازش چیه؟ یه ماشین با آی پی ولید. مثلا یه ماشین مجازی vps
خوب من سه تا ماشین دارم.
یکی کامپیوتر دفتر کارم

یکی وی پی اسم

یکی هم لب تابی که خونه باهاش کار می کنم

خوب به مرحله اول میاز کامپیوتر شرکت وصل میشم به وی پی اس

خوب این دستور چیه میگه؟ میگه که هر درخواستی که به پورت ۱۰۰۲۲ سرور میاد پروکسیش کن به پورت ۲۲ کامپیوتر سر کار.
✘ saeb-work ~ ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667
-R برای -R (Remotely forwarded ports)
و چون من پورت پیشفرض ssh رو از ۲۲ به 667 تغییر دادم با -p 667 گفتم که به پورت ۶۶۷ ssh بزن و این ربطی به آموزشمون نداره.
الان من توقع دارم که اگه توی وی پی اس به پورت ۱۰۰۲۲ اس اس اچ بزنم بتونم وصل شم کامپیوتر شرکتمون.
توی لبتاب دوتا ترمینال باز میکنم. توی ترمینال اول میزنم
home-laptop ~ ssh -L 20022:localhost:10022 vps.saeb.id.ir -p 667

خوب اینبار به جای R زدیم L
-L (Locally forwarded ports)
این دستور چی میگه؟
یگه که هر درخواستی به پورت ۲۰۰۲۲ لب تاب من میاد رو وصل کن به پورت ۱۰۰۲۲ وی پی اس. پورت ۱۰۰۲۲ وی پی اس هم که میدونیم وصله به پورت ۲۲ کامپیوتر سر کار. حالا من توقع دارم که اگه با لب تاب به پورت ۲۰۰۲۲ وصل شم، بتونم وصل شم به کامپیوتر سر کارم.
خوب پس تا الان دوتا دستور زدیم. اول توی کامپیوتر سر کار زدیم
✘ saeb-work ~ ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667
و توی ترمینال اول لب تاب توی خونه زدیم
home-laptop ~ ssh -L 20022:localhost:10022 vps.saeb.id.ir -p 667
خوب حالا من توی لب تابم یه ترمینال دیگه باز میکنم و میزنم
✘ saeb-home ~ ssh -p 20022 -L 15900:localhost:5900 -L 16000:devops01.icico.net.ir:80 localhost

با
-L 16000:devops01.icico.net.ir:80
گفتم که پورت ۱۶۰۰۰ لب تابم رو وصل کن به آدرس
devops01.icico.net.ir
با پورت ۸۰ که فقط از طریق شبکه شرکتمون دسترسه. ولی حالا میتونم از مرور لبتابم با آدرس
localhost:16000
بهش دسترسی داشته باشم

حالا اگه روی کامپیوتر شرکتم یه وی ان سی سرور یا آر دی پی سرور نصب داشته باشم، میتونم ریموت هم بزنم به کامپیوتر شرکت.
مثلا توی ترمینال دوم وقتی به کامپیوتر شرکت وصل شدم یه وی ان سی سرور باز میکنم
خوب اگه پیچیده شد یه بار خلاصه سه تا دستوری که زدم رو میگم.
یک توی شرکت دستور زیر رو زدم و پورت ۱۰۰۲۲ وی پی اس رو وصل کردم به پورت ۲۲ کامپیوتر شرکت
ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667
تو لب تابم دوتا ترمینال باز کردم. توی ترمینال اول دستور زیر رو زدم و پورت ۲۰۰۲۲ لب تاب رو وصل کردم به پورت ۱۰۰۲۲ وی پی اس که خود پورت ۱۰۰۲۲ وصله به پورت ۲۲ کامپیتور شرکت
ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667
و توی ترمینال دوم لب تابم کد زیر رو زدم و پورت ۱۶۰۰۰ لب تابم رو وصل کردم به آدرس سایتی که فقط توی شرکت در دسترسه و خارج شرکت در دسترس نیست.
ssh -p 20022 -L 15900:localhost:5900 -L 16000:devops01.icico.net.ir:80 localhost
همین دیگه تموم شد.
البته درخواست ssh ی که از کامپیوتر شرکت میفرستم رو میذارم توی حلقه while که اگه مشکلی پیش اومد دوباره وصل شه.
و توی کانفیگ ssh هم میگم هر ۶۰ ثانیه یه درخواست خالی بفرست به وی پی اس که ارتباطم قطع نشه.


