آموزش تنظیم ssh-key برای گیت

ssh-keyگیت یک نرم‌افزار اوپن سورس است که در سال 2005 از سوی لینوس تروالدز ایجاد شده است. این ابزار یک «سیستم کنترل نسخه» (Version Control System) است که در ابتدا برای هماهنگ کار چند توسعه‌دهنده روی کرنل لینوکس ساخته شده بود. سیستم‌های کنترل نسخه زیادی مانند CVS ،SVN ،Mercurial و غیره وجود دارند، اما گیت امروزه به یک نرم‌افزار استاندارد برای کنترل نسخه تبدیل شده است.برای شروع استفاده از Git باید بدانید که کجا می‌توانید ریپازیتوری‌های خود را میزبانی کنید. پلتفرم‌های میزبانی زیادی وجود دارند که می‌توانید کد خود را به طور رایگان روی آن‌ها میزبانی کنید. برخی گزینه‌ها رایگان نیستند، اما شما به جز در موارد خاص، به اغلب آن‌ها نیازی نخواهید داشت.در ادامه سه مورد از محبوب‌ترین سرویس‌های میزبانی گیت را ملاحظه می‌کنید:گیت‌هاب ( GitHub): در سال 2008 راه‌اندازی شده و اخیراً از سوی مایکروسافت خریداری شده است. در پاییز 1397 حدود 31 میلیون کاربر داشته است.گیت‌لب (GitLab): در سال 2011 راه‌اندازی شده و تحت مالکیت شرکت GitLab است.بیت‌باکت ( BitBucket): در ژوئن 2008 راه‌اندازی شده است و تحت مالکیت شرکت نرم‌افزاری Atlassian قرار دارد.نکته: پلتفرم‌های میزبانی به دو روش در دسترس هستند که یکی روش کلود (میزبانی آنلاین) و دیگری میزبانی مستقل روی سرور شخصی (میزبانی خصوصی) است. برای انجام هر عملیاتی روی ریپازیتوری های آنلاین(remote) مثل عملیات push یا pull، باید نام کاربری و کلمه‌ی عبور خود را وارد کنید که تکرار این موضوع شاید در طولانی مدت آزار دهنده باشد.در این آموزش قصد داریم روشی را معرفی کنیم که در آن دیگر نیازی به هر بار وارد کردن نام کاربری و کلمه‌ی عبور نیست. برای انجام این کار، از ssh-key استفاده می‌کنیم. ssh key ها ابزاری برای اتصال امن از طریق بستر ssh به یک ریموت سرور می‌باشند و دو طرف از طریق آن احراز هویت می‌شوند. جهت استفاده از قابلیت های گیت نیاز است که ابزار Git را روی سیستم خودمان نصب کنیم. https://git-scm.com/download/win بعد از نصب Git از طریق لینک بالا نیاز است که یک ریپازیتوری local ایجاد کنیم. برای اینکار Git Bash را اجرا کنید و به مسیر مورد نظر جهت ساخت ریپازیتوری می رویم و با دستورات زیر یک ریپازیتوری ایجاد می کنیم.mkdir sshKeySetup cd sshKeySetup git init git config --global user.userName yourUserName git config --global user.email yourEmailمرحله بعدی ایجاد ریپازیتوری روی سرور گیت می باشد که ما در این آموزش GitHub را انتخاب کرده ایم.ابتدا به وب سایت GitHub مراجعه کنید یک حساب کاربری ایجاد کنید و سپس وارد حساب کاربری خود شوید .your repositoriesاز بخش Your repositories یک ریپازیتوری جدید ایجاد می کنیم.create repositoryتنظیمات سطح دسترسی و... بر اساس نیاز خودتون تنظیم کنید و ریپازیتوری را ایجاد کنید.پس از ایجاد ریپازیتوری کافی است که لینک ssh مربوط به ریپازیتوری را کپی کنید و در ریپازیتوری local بعنوان remote تنظیم کنید.ssh-linkبعد از کپی کردن لینک ssh به مسیر ریپازیتوری local بر می گردیم و لینک remote سرور را جهت push , pop تنظیم می کنیم.cd sshKeySetup git remote add origin git@github.com:aramrahmani/sshKeySetup.gitتا اینجای آموزش یک ریپازیتوری local ایجاد کردیم و به یک سرور آنلاین گیت هاب وصل کردیم. در ادامه کافی است که یک جفت کلید خصوصی و عمومی را روی سیستم خودمان ایجاد کنیم. کلید خصوصی را روی سیستم خودمان تنظیم می کنیم و کلید عمومی رو سرور گیت هاب تنظیم می کنیم.برای ایجاد ssh-key باید پکیج ssh روی سیستم ما نصب باشد زمان نصب Git Bash این پکیج به صورت خودکار نصب می شود.(جهت اطمینان از نصب این پکیج کافی است که دستور ssh را در محیط cmd تایپ کنید.sshssh برای ایجاد کلید های خصوصی و عمومی می توانید از دستور زیر استفاده کنید.ssh-KeyGenپس از اجرای دستور فوق، در آدرس ~/.ssh ، دو فایل id_rsa و id_rsa.pub ساخته می‌شوند که به ترتیب کلید خصوصی(private key) و کلید عمومی(public key) شما می‌باشند.ssh-keyگام بعدی کلید عمومی را با یک ادیتور باز کنید و محتوای آن را کپی کنید تا در سرور گیت هاب اضافه کنیم.به سایت گیت هاب برگردید وارد حساب کاربری خود شوید از بخش حساب کاربری وارد بخش تنظیمات شوید و از منو سمت چپ گزینه SSH and GPG Keys را انتخاب کنید.new ssh Keycreate newPublic Keyگام بعدی باید کلید خصوصی رو روی سیستم خودمون تنظیم کنیم . برای این کار به محیط Git Bashبروید و دستورات زیر را اجرا کنید.eval $&quot(ssh-agent )&quot ssh-add /Users/you/.ssh/id_rsaاگر با پیغام زیر مواجه شدید یعنی تنظیمات به درستی انجام شده است.$ ssh-add id_rsaIdentity added: id_rsa در نهایت جهت تست یک فایل متنی از طریق ریپازیتوری local به سرور آنلاین push می کنیم. برای این کار یک فایل متنی با نام test.txt در ریپازیتوری local ایجاد می کنیم و با استفاده از دستورات زیر فایل را push می کنیم.git add test.txt git commit test.txt -m &quotadd test.txt&quot git push origin masterاگر پس از اجرای دستور push با خطای زیر مواجه شدید:errorبا استفاده از دستور زیر این خطا را رفع کنید و مجددا push کنید.ssh-keyscan github.com >> ~/.ssh/known_hosts git push origin masterبا مراجعه به سایت گیت هاب و ریپازیتوری ساخته شده مشاهده می کنید که فایل test.txt ایجاد شده است.add test.txtدر این مقاله سعی شد تنظیم ssh-key برای گیت به صورت ساده و پایه آموزش داده شود امیدوارم مفید واقع بشه.