یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

 

برنامه 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 به هر پروتوکلی که خواستید بدید.

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

 

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

نظرات (۱)

عالی بود سپاس
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">