اتصال به سرور از طریق sshuttle
sshuttle به شما امکان ایجاد یک VPN شفاف (transparent) را از طریق دستگاه خود به هر سرور راه دور که می توانید از طریق ssh به آن وصل شوید را می دهد ، البته به شرطی که آن سرور دارای پایتون 3.6 یا بالاتر باشد. برای کار کردن ، باید روی ماشین محلی دسترسی sudo داشته باشید ، اما می توانید یک حساب کاربری معمولی در سرور داشته باشید.
به زبان ساده فرض کنید که شما در محل کار خود یک سیستم دارین که یکی از سیستم عامل های لینوکس ، MAC و یا FreeBSD بر روی آن نصب هست که میتونین از اون به سرورهای شبکه داخلی وصل بشین. حالا اگه بخواین از سیستم داخل خونه هم به سرورها دسترسی داشته باشین این کار از طریق sshuttle قابل انجام هست.
یکی دیگه از روش هایی که میتونین به سرورهای داخل شرکت از طریق سیستمتون که در داخل شرکت هست وصل بشین tunnling هست که این هم از طریق ssh قابل انجام هست. اما تفاوت tunnling و sshuttle در این هست که در tunnling شما برای هر پورت باید یک کانکشن ssh باز کنین و دسترسی به سرورها از طریق آدرس localhost بر روی سیستم انجام میشه اما در sshuttle با یک کانکشن میتونین تمامی پورت ها به سرورهای مقصد رو باز کنین و از طریق آیپی سرور به آنها وصل شوید. در واقع sshuttle تمامی ترافیک خروجی شما به سمت سرور مقصد را از طریق سیستم واسط شما (همان سیستم موجود در شرکت) عبور داده و اصطلاحا transparent proxy ایجاد میکند.
ابتدا sshuttle رو از طریق دستور زیر نصب کنید:
Ubuntu:
sudo apt-get install sshuttle
CentOS:
sudo yum install epel-release; sudo yum install sshuttle;
فرض کنید یک کامپیوتر در محل کار شما قرار دارد که میتوانید از خانه و یا هر جا دیگری از طریق ssh به آن متصل شوید و آیپی سیستم مد نظر نیز 192.168.1.20 می باشد. همچنین فرض کنید دسترسی به سرورهای داخلی با آیپی های 10.10.10.20 , 172.16.20.50 , 10.10.10.27 , 192.168.20.10 تنها از طریق این سیستم امکان پذیر میباشد. حال برای اینکه بتوانید از طریق کامپیوتر موچود در شرکت از هر نقطه ای به سرورها دستری داشته باشید مراحل زیر را دنبال کنید.
ابتدا میبایست از طریق VPN به شبکه داخلی محل کار خود متصل شوید. البته ممکن است بتوانید مستقیم به سیستم داخل شرکت هم متصل شوید. به طور پیشفرص sshuttle به پورت 22 متصل میشود در صورتیکه پورت ssh سیستم شما متفاوت میباشد میبایست پورت را هم بیان کنید.
اتصال sshuttle با پورت پیشفرض:
sshuttle -r myuser@192.168.1.20 10.10.10.25/32 172.16.20.50/32 10.10.10.27/32 192.168.20.10/32
پس از اجرای دستور بالا از شما پسورد sudo و سپس پسورد سیستم مقصد پرسیده میشود. در صورتیکه با یوزر root دستور را اجرا نمایید پسورد sudo پرسیده نشده همچنین اگر برای اتصال ssh از کلید استفاده میکنید پسورد سیستم هم پرسیده نخواهد شد.
پس از برقراری ارتباط میتوانید با استفاده از آیپی سرور ها مستقیم به آنها متصل شوید.
در صورتیکه می خواهید به رنج آیپی متصل شوید میتوانید subnet مورد نظر خود را وارد نمایید:
sshuttle -r myuser@192.168.1.20 10.10.10.25/24 172.16.20.50/24 192.168.20.10/16
اتصال sshuttle با پورت دلخواه:
فرض کنید پورت اتصال به ssh سیستم داخلی 5080 میباشد در اینصورت دستور sshuttle مشابه زیر خواهد بود:
sshuttle -r myuser@192.168.1.20:5080 10.10.10.25/32 172.16.20.50/32 10.10.10.27/32 192.168.20.10/32
در صورتیکه از VPN استفاده نمیکنید ممکن است سمت فایروال پورت خاصی به سیستم داخلی forward شده باشد. در اینصورت میبایست برای sshuttle آدری آیپی پابلیک را وارد نمایید:
sshuttle -r myuser@PUBLIC_IP:PORT 10.10.10.25/32 172.16.20.50/32 10.10.10.27/32 192.168.20.10/32
درصورتیکه میخواهید sshuttle اصطلاجا در حالت verbose اجرا شده و جزئیات را نمایش دهد میتوانید از آپشن v- استفاده نمایید:
sshuttle -r myuser@192.168.1.20 10.10.10.25/32 172.16.20.50/32 10.10.10.27/32 192.168.20.10/32 -v