کدام پروتکل: git:// یا ssh:// یا https://؟

Y.P.Y

Well-Known Member
همونطور که می دونید برنامه Git برای کار با repository، پنج پروتکل در اختیار ما گذاشته که هرکدوم مزایا و معایب خودشونو دارن. این پروتکل ها:
1- File (یا همون Local protocol)
2- HTTP (یا همون Dumb protocol)

3- HTTPS (یا همون Smart protocol)
4- SSh
5- Git
هستند. اما از کدوم پروتکل باید استفاده کنیم؟ کدوم پروتکل امنیت بیشتری داره؟ و کدوم پرتکل سرعت بیشتری داره؟
پس وارد جزئیات میشیم!

//:File
این پروتکل برای کار با repository های داخل هارد(local) طراحی شده و ما در اینجا کاری بهش نداریم.

//:HTTP
این پروتکل بخاطر برخی کمبود ها و ضعفهای امنیتیش تقریباً منسوخ شده و هیچ سروری دیگه ازش استفاده نمی کنه و خود تیم Git هم ردش میکنه.


//:HTTPS

  • در حال حاضر، ساده ترین، محبوب ترین و سازگارترین(compatible) پروتکل استفاده از Git هستش.
  • هم قابلیت Read-only داره و هم Writable هه.
  • سرعتش برای انتقال اطلاعات نرماله.
  • سرور بصورت خودکار توسط certificate تایید می شه.
  • hand-shake بین کلاینت و سرور در 2-3 پروسه انجام میشه.
  • توسط X.509 certificate اطلاعات رو رمزنگاری می کنه.
  • نیاز به SSh Keys و آپلود Public Key در سرور نداره، پس از هر مکانی و سیستمی قابل استفادست. (web-based)
  • از Pr@xi پشتیبانی می کنه.
  • معمولاً در پورت 443 تنظیم میشه و توسط Firewall مسدود نشده.
  • گزینه مناسب برای repository های عمومی و خصوصی با ترافیک متوسط.
  • احراز هویت(authentication) توسط username و password حساب کاربر در سرور انجام میشه.
  • در صورت دزدیده شدن username و password، کل حساب کاربری در سرور از دست خواهد رفت.
  • اکثر سرورهای HTTPS اجازه pull و clone کردن بصورت anonymous رو میدن.
  • بیشتر فرایند های امنیتی در مرورگر/وب انجام میشه و نه در Git.
  • دستورات و عملیات بصورت POST/GET ارسال و دریافت میشن.
  • بدون تنظیم credential-caching در کلاینت، کاربر برای push کردن باید هربار احراز هویت کند. (clone و pull رو هم شامل میشه اگر دسترسیش محدود شده باشه)
  • برای راه اندازی سرور Git، به برنامه Git، یک TLS certificate معتبر و Web server نیاز داره. بنابراین راه اندازی سرور HTTPS کمی زمانبر هستش.
  • این پروتکل تقریباً در سال 1995 رونمایی شد.
  • نمونه URL:
    کد:

    git clone https://domain/project.git

//:SSh
  • نسبت به HTTPS از سادگی، محبوبیت و سازگاری(compability) کمتری برخورداره. (چون حرفه ای تر و قدرتمند تره)
  • هم قابلیت Read-only داره و هم Writable هه.
  • سرعتش برای انتقال اطلاعات سریعتر از HTTPS هه.
  • سرور با اجازه کاربر توسط Fingerprint کلید تایید می شه.
  • hand-shake بین کلاینت و سرور در 5-6 پروسه انجام میشه.
  • توسط AES, Blowfish, RC4, 3DES, CAST128 یا Arcfour اطلاعات رو رمزنگاری می کنه.
  • نیاز به SSh Keys و آپلود Public Key در سرور داره، پس کاربر باید به SSh مجهز باشه.
  • از Pr@xi پشتیبانی می کنه.
  • معمولاً در پورت 9418 تنظیم میشه و گاهاً توسط Firewall مسدود شده. (در سرورهای درجه 2-3 یا دولتی)
  • بهترین گزینه برای repository های خصوصی و حساس.
  • احراز هویت(authentication) توسط Key ها انجام میشه. (حداکثر امنیت)
  • در صورت دزدیده شدن Private Key، کافیست Public key از حساب کاربری در سرور حذف بشه.
  • اکثر سرورهای SSh اجازه pull و clone کردن بصورت anonymous رو نمیدن.
  • بیشتر فرایند های امنیتی در خود SSh و Git انجام میشه.
  • دستورات و عملیات بصورت پارامتری ارسال و دریافت میشن.
    کد:

    ssh -x git@domain "git-receive-pack 'project.git'"
  • کاربر برای push کردن کافیست فقط یکبار در کلاینتش احراز هویت کند. (clone و pull رو هم شامل میشه)
  • برای راه اندازی سرور Git، به برنامه Git، و SSh نیاز داره.
  • این پروتکل تقریباً در سال 1995 رونمایی شد.
  • نمونه URL:
    کد:

    git clone ssh://username@domain/project.git
    یا
    git clone username@domain:project.git

//:Git
  • نسبت به SSh از سادگی، محبوبیت و سازگاری(compability) بیشتری برخورداره.
  • در حالت معمول فقط قابلیت Read-only داره.
  • سرعتش برای انتقال اطلاعات بسیار سریعتر از HTTPS و SSh هه.
  • هیچ مکانیزمی برای تایید سرور نداره.
  • تقریباً هیچ hand-shake ای بین کلاینت و سرور انجام نمیشه.
  • هیچ مکانیزم رمزنگاری درکار نیست.
  • نیاز به SSh Keys و آپلود Public Key در سرور نداره، فقط به برنامه Git نیاز داره.
  • از Pr@xi پشتیبانی می کنه.
  • معمولاً در پورت 9418 تنظیم میشه و گاهاً توسط Firewall مسدود شده. (در سرورهای درجه 2-3 و دولتی)
  • بهترین گزینه برای repository های عمومی Read-only با ترافیک بالا یا پروژه های سنگین.
  • هیچ احراز هویت(authentication) ای انجام نمیشه. (حداقل امنیت)
  • هیج گونه اطلاعات حساسی برای دزدیده شدن وجود نداره.
  • همه سرورهای Git اجازه pull و clone کردن بصورت anonymous رو میدن.
  • هیچ فرایند امنیتی انجام نمیشه.
  • دستورات و عملیات بصورت پارامتری ارسال و دریافت میشن.
    git domain "git-receive-pack 'project.git'"
  • در حالت معمول امکان write/push کردن وجود نداره.
  • برای راه اندازی سرور Git فقط به Git نیاز داره.
  • این پروتکل تقریباً در سال 2005 رونمایی شد.
  • نمونه URL:
    کد:

    git clone git://domain/project.git

توجه: شما خودتون هم میتونید دسترسی Read-Only یا Writable به هر پروتوکلی که خواستید بدید.
این نکته رو هم در نظر داشته باشید که هرکدوم مزایا و معایب خودشونو دارن و باید درجای مناسبش پروتکل مناسب رو انتخاب کنید.

این مقاله جامع ترین و کامترین در نوع خودشه، حتی در بین مقالات خارجی.

منبع: Yousha.Blog.ir
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا