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

 gitlab.com
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

تو این حالت هم اگر خواستید این تنظیمات رو پاک کنید و به حالت اولیه برگردید.


امیدوارم یه روزی همه به اینترنت آزاد دسترسی داشته باشیم!

تمام.