دسترسی به گیت(gitlab) از طریق Proxy

gitlab.comخبر بدی که چند هفته پیش بهش برخوردیم مهاجرت Gitlab.com از سرویس مایکروسافت آژر به سرویس ابری گوگل بود. البته این خبر تنها برای ما و چندتا کشور مثل کره شمالی و کریمه و ... خبر بدی محسوب میشد. حالا چرا این خبر بده؟ از زمان مهاجرت دسترسی به پروژه هامون تقریبا داره گرفته میشه و باید پروژه هامون رو به سرویس مشابه دیگه ای منتقل کنیم یا مثل تمام سرویس های دیگه که تو ایران عزیزمون در دسترس نیست از proxy استفاده کنیم و تحریم رو دور بزنیم!راه حلساده ترین راه حل اینه که هر برنامه ای که کامپیوتر شما رو از فیلتر رد میکنه اجرا کنید و از گیت لب استفاده کنید ولی این کار خیلی برای من راحت نبود. من دوست نداشتم تمام کامپیوترم رو proxy کنم و تصمیم گرفتم راه حل خودم رو اینجا بنویسم.۱- راه اندازی Socks5اگر خودتون از هر طریقی دسترسی به Socks5 دارید دیگه نیازی به این تنظیمات نیست و به مرحله بعدی برید.من از طریق یک سرور لینوکسی که خارج از ایران دارم به راحتی تونستم با استفاده از ترمینال و این تنظیمات روی کامپیوتر خودم یه Socks5 درست کنم:ssh -D 1080 -N -C username@serverدستور بالا یه Ssh Tunnel برای من درست میکنه و تمام اطلاعات که از کامپیوتر من به پورت ۱۰۸۰ میره رو از سرور خارج از ایران من رد میکنه. تنظیماتی هم که استفاده کردم به این معنی هستند:پارامتر -D برای بایند کردن پورت ۱۰۸۰ کامپیوتر خودم.پارامتر -N باعث میشه روی سرور من هیچ دستوری اجرا نشه و فقط به عنوان Proxy استفاده بشه.پارامتر -C تمام اطلاعات رفت و برگشت بین من و سرور رو فشرده میکنه.پارامتر username نام کاربری یا همون یوزر سرورم هستش.پارامتر server هم آی پی سرور یا اسم دومین سرور هستش. مثلا google.com.پارامتر های username و server رو تو دستور بالا با اطلاعات خودتون تغییر بدید و توی ترمینال اجراش کنید. بعد از اجرا پسورد سرور رو وارد کنید و ترمینال رو نبندید چون proxy شما از کار میافته. ۲- تنظیمات git proxy برای httpsبرای استفاده از گیت میتونید از دوحالت https یا ssh استفاده کنید. برای اینکه بفهمید الان دارید از کدوم استفاده میکنید، کافیه یه نگاه به تنظیمات گیت پروژه بندازید. برای این کار فایل تنظیمات رو با یه ویرایش گر باز کنید. من از داخل پروژه با vi این کار رو کردم:vi .git/config چیزی که باید دنبالش بگردید ["remote "origin] یا هر اسمی دیگه که شما به عنوان origin ازش استفاده می کنید. دو حالت ممکنه وجود داشته باشه. حالت اول به صورت https:[remote "origin"] url = https://gitlab.com/milad/milad.git fetch = +refs/heads/*:refs/remotes/origin/*حالت دوم به صورت ssh:[remote "origin"] url = git@gitlab.com:milad/milad.git fetch = +refs/heads/*:refs/remotes/origin/*اگر از حالت اول استفاده میکنید کار خیلی سادست. دستور زیر رو وارد کنید تا تمام git شما در حالت https از proxy که ایجاد کردید رد بشه:git config --global https.proxy 'socks5://127.0.0.1:1080'یا میتونید با یک ویرایشگر اون رو به تنظیمات گیت خودتون اضافه کنید:vi ~/.gitconfigبعد اطلاعات پروکسی رو به تنظیمات اضافه کنید و فایل رو ذخیره کنید: [https] proxy = socks5://127.0.0.1:1080هر موقع پشیمون شدید میتونید این تنظیمات رو پاک کنید و تمام. مثل روز اول از گیت استفاده کنید. ۳- تنظیمات git proxy برای sshاگر آدرس origin شما با git@gitlab شروع میشه پس شما دارید از حالت ssh استفاده میکنید. برای اینکار کافی تنظیمات ssh خودتون رو ویرایش کنید و تنظیمات رو بهش اضافه کنید.با استفاده از ویرایشگر فایل زیر رو باز کنید:vi ~/.ssh/configتنظیمات زیر رو بهش اضافه کنید و اون رو ذخیره کنید:Host gitlab.com User git ProxyCommand nc -x localhost:1080 %h %pتو این حالت هم اگر خواستید این تنظیمات رو پاک کنید و به حالت اولیه برگردید.امیدوارم یه روزی همه به اینترنت آزاد دسترسی داشته باشیم!تمام.