محمد علی امینی
محمد علی امینی
خواندن ۵ دقیقه·۲ سال پیش

گامبگام مُراویدن (وصل شدن) به چند حساب گیت‌لب/گیت‌هاب با SSH در لینوکس/مک

در این گامبگام با پیکریدن (پیکربندی) گیت برای وَصْلِشتن (وصل شدن) به دو حساب، یکی در گیت‌لب و دیگری گیت‌هاب، با پروتکل SSH آشنایِشی (آشنا بشوی)؛ فقط بِوَجْه (توجه کن) که بسادگی بتوانی همین روند را برای افزودن حساب‌های بیشتر هم بِبَهْری (استفاده کنی).


بِوَجْهْ. چون آسوندن (آسان کردن) و قاعدیدن (قاعده‌مند کردن) زبان را بسیار میلم (تمایل دارم)، برای هر فهماء (مفهوم) جدید هی (جدیدی) که بِآموزم یه واژه جدید عُرْفَمْ (تعریف می‌کنم) تا ساختار زبان بسیار ساده بشود.
امیدوارم خوشایندت باشد.

کُلُبین (کلیت را ببین)

کلیت کار به سه قسمائد (قسمت است):

  1. ایجیدن (ایجاد کردن) زوج کلیدهای SHH برای هر حساب گیت‌هاب/گیت‌لب تا امناَ (بشکل امن) بتوانیم بهشان بِمُراویم (ارتباط بگیریم)؛
  2. علنیدن (معرفی کردن) کلیدها عمومی در هر حساب گیت‌هاب/گیت‌لب
  3. عَلَنیدن (معرفی کردن) کلیدهای خصوصی هی (ای) که برای هر میزبان (گیت‌هاب/گیت‌لب) باید هنگام مُراوِش (فرایند ارتباط ) بَهْرِشته بشوند (استفاده بشوند) در فایل config

نکته: در این گامبگام چون میزبان‌ها برای دو سکوی خُلْفائد (مختلف اند)، هنگام بهرش (استفاده) نیاز به عمل خاص هی (خاصی) نیست، ولی اگر مثلا دو حساب گیت‌هاب/گیت‌لب داشته باشی باید یه نکته هی را بِرَعایتی (رعایت کنی) که در آخر روند مقاله گویینم (خواهم گفت).

پیکرش ابتدایی گیت

پیش از شروعیدن (شروع کردن) بهتره پیکرش (پیکربندی) اولیه گیت را بِاَنْجامی (انجام بدهی)؛ برای این، دستورهای زیر را در یه کارهال (پایانه؛ ترمینال) بِاِجر (اجرا کن):

git config --global user.name &quot[نامت]&quot git config --global user.email &quot[رایانامه‌ات]&quot # توصیم (توصیه می‌کنم) دستور زیر را برای صُلحیدن (اصلاح کردن) نویسه خط جدید ویندوز بِاِجری (اجرا کنی) git config --global core.autocrlf input # اگر از ویژوال استودیو کد استفاده می‌کنی، می‌توانی با دستور زیر بعنوان ویرایشگر پیشفرض گیتت معرفی اش کنی git config --global core.editor &quotcode --wait&quot

ایجیدن (ایجاد کردن) زوج کلیدهای SSH

برای اینکار، ابزارک ssh-keygen با تگ‌های t و c بهرشته بشود:
- تگ t برای عِیْنیدن (تعیین کردن) نوع رَمْزِش (رمزنگاری) بهرشته بشود (استفاده می‌شود)؛ برای بیشتر کاربردها ed25519 مناسبه؛
- تگ C برای درجیدن عبارت هی (ای) است که هنگام بهریدن (استفاده کردن) کلید هه نِمویِشْته بشود (نشان داده می‌شود)؛
- تگ f هم برای عینیدن (تعیین کردن) مسیر ذخیرشتن (ذخیره شدن) زوج کلیدها بهرشته بشود (استفاده می‌شود).

# حساب اصلی گیت‌لبت ssh-keygen -t ed25519 -C &quotGitlab: $(git config --global user.email)&quot -f ~/.ssh/gitlab_ed25519 # حساب اصلی گیت‌هابت ssh-keygen -t ed25519 -C &quotGithub: $(git config --global user.email)&quot -f ~/.ssh/github_ed25519 ... # اگر حساب کاری هم داری دستورهای زیر را بِبَهْر (استفاده کن) ssh-keygen -t ed25519 -C &quotGitlab: [email_work@email.com]&quot -f ~/.ssh/gitlab_work_ed25519 ssh-keygen -t ed25519 -C &quotGithub: [email_work@email.com]&quot -f ~/.ssh/github_work_ed25519

برای گرفتن اطلاع‌ها بیشتر دستور را `ssh-keygen --help` را بِاِجرْ (اجرا کن).

عَلَنیدن کلیدن عمومی در حساب‌هایمان

برای اینکار، باید کلیدهای عمومی هر حسابت را به کلیدهای SSH حسابت بِاَفْزایی (اضافه کنی) که ازطریق وندال‌های (لینک‌های) گیت‌لب/گیت‌هاب بتوانی بِقَدَمی (اقدام کنی). برای دساوردن (به دست آوردن) کلیدهای عمومی ات هم بتوانی دستورهای زیر را بِبَهْری (استفاده کنی):

# حساب اصلی گیت‌لب cat ~/.ssh/gitlab_ed25519.pub # یا xclip -sel clip < ~/.ssh/gitlab_ed25519.pub # حساب اصلی گیت‌هاب cat ~/.ssh/github_ed25519.pub # یا xclip -sel clip < ~/.ssh/github_ed25519.pub ... # حساب کاری گیت‌لب cat ~/.ssh/gitlab_work_ed25519.pub # یا xclip -sel clip < ~/.ssh/gitlab_work_ed25519.pub # حساب کاری گیت‌هاب cat ~/.ssh/github_work_ed25519.pub # یا xclip -sel clip < ~/.ssh/github_work_ed25519.pub

بوجه: اگر در گام پیش نام کلیدها را عَوَضیده‌ای (عوض کرده‌ای) در این گام باید نام فایل‌های با پسوند pub را در دستورهای بالا بِوُرودی (وارد کنی).

برای صُحاجدن (صحت سنجی) کارهایت هم بتوانی دستورهای زیر را بِبَهْری (استفاده کنی):

# صَحاجیدن مُراودش با گیت‌لب ssh -T git@gitlab.com -i ~/.ssh/gitlab_ed25519 # صَحاجیدن مُراوِدِش با گیت‌هاب ssh -T git@github.com -i ~/.ssh/github_ed25519

دَبِریدن (مدیریت کردن) کلیدها خصوصی با فایل config

در این گام، چون بیش از یک زوج کلید داریم، باید بِعِیْنیم (تعیین کنیم) که کدام زوج کلید هنگام مُراوِدِش (برقراری ارتباط) ازطریق پروتکل SSH با هر یک از سکوها (platform)، بهرشته بشود. برای اینکار فایل `~/.ssh/config` بَهْرِشته بشود (استفاده می‌شود) که ساختار دستورهایش بشکل زیر است:

# ~/.ssh/config Host [username].gitlab.com # یه نام دلخواه که باهاش به این میزبان اِشارِشَد (اشاره می‌شود) HostName gitlab.com # نام دامنه‌ی میزبان (هاست) موردنظر User git # اختیاری PreferredAuthentications publickey IdentityFile ${identityfile} # مسیر کلید خصوصی بشکل مطلق

برای مورد ما که یک حساب کاربری برای هر یک از سکوهای گیت‌هاب/گیت‌لب است:

# ~/.ssh/config # gitlab.com Host gitlab.com HostName gitlab.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_ed25519 # github.com Host github.com HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/github_ed25519

بِوَجْه: اگر بخواهی با چند حساب در یه سکو (گیت‌هاب/گیت‌لب) بِمُوراوی (ارتباط برقرار کنی) باید نام میزبان را مانند زیر برگزینی:

# ~/.ssh/config # حساب کاری گیت‌لب Host work_gitlab.com HostName gitlab.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_work_ed25519

نکته: اگر برای زوج کلیدهایت گُذرنام (passphrase) عِینیده‌ای (تعیین کرده‌ای)، برای اینکه هر بار هنگام بهریدن اشان نیاز نباشد گذرنام را بِدَرجی (دج کنی) دستورها زیر را بِبَهْر (استفاده کن):

# حساب اصلی گیت‌لب ssh-add ~/.ssh/gitlab_ed25519 # حساب اصلی گیت‌هاب ssh-add ~/.ssh/github_ed25519

برای صُحاجدن (صحت صنجی) کارها تا این جا هم بتوانی دستورهای زیر را بِبَهْری (استفاده کنی):

# حساب اصلی گیت‌لب ssh -T git@gitlab.com # حساب اصلی گیت‌هاب ssh -T git@github.com

بِوَجْه: اگر میزبان‌های دیگر هی (ای) هم عُرْفیده‌ای، بشکل زیر بتوانی آن‌ها را بِصُحاجی (صحت سنجی کنی):

ssh -T git@work_gitlab.com

بهرش

برای بهریدن (استفاده کردن) هم اگر میزبان‌هایت بشکل gitlab.com یا github.com است نیازی به کار خاصی نیست، وگرنه هنگام عَلَنیدن (اعلان کردن) دورمخزن‌ها (remote) باید از نام میزبان را همانند زیر بِعَوَضی (عوض کنی):

# درحالت عادی که نیاز به هیچ کار خاص هی نیست: git remote origin git@gitlab.com:hakhsin/maktabkhooneh.git # اگر میزبان مثلا work_gitlab باشد: git remote origin git@work_gitlab.com:hakhsin/maktabkhooneh.git

همین!

sshگیتهاب
توسعه‌دهنده سایت با چارچوب جنگو
شاید از این پست‌ها خوشتان بیاید