زندگی برنامه نویس خود را با Git، SSH و GPG ساده کنید: چگونه با میزبان کدهای متعدد کار کنید و تعهدات خود را به راحتی امضا کنید

مدیریت چندین میزبان Git می تواند چالش برانگیز باشد، به خصوص در هنگام استفاده از کلیدهای مختلف GPG و SSH. این مقاله شما را در فرآیند تولید کلیدهای SSH و GPG، افزودن آنها به عامل SSH محلی و میزبان های گیت راه دور، پیکربندی میزبان های متعدد برای استفاده از کلیدهای مختلف، و پیکربندی Git محلی برای استفاده از چندین کلید GPG برای میزبان های مختلف Git راهنمایی می کند.
تولید کلیدهای SSH
اگر کلیدهای SSH را قبلاً تولید و به هاست راه دور و عامل SSH محلی خود اضافه کردهاید، میتوانید رد شده و به عنوان بعدی بروید، در غیر این صورت، میتوانید زیر را دنبال کنید تا تنظیمات SSH را انجام دهید:
-
یک ترمینال را باز کنید و دستور زیر را برای ایجاد یک کلید SSH جدید اجرا کنید:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
برای انتخاب مکانی برای فایل کلید و تنظیم یک عبارت عبور، دستورات را دنبال کنید. گزینه های پیش فرض معمولا کافی هستند.
-
پس از تولید کلید، دستور زیر را برای نمایش کلید عمومی اجرا کنید:
cat ~/.ssh/id_rsa.pub
-
کل محتویات کلید عمومی را در کلیپ بورد خود کپی کنید.
افزودن کلید SSH به میزبان راه دور
در وب سایت میزبان کد، به تنظیمات حساب خود بروید و گزینه اضافه کردن یک کلید SSH جدید را پیدا کنید. کلید عمومی را در قسمت ورودی قرار دهید و کلید را ذخیره کنید.
افزودن کلید SSH به عامل SSH شما
-
یک ترمینال را باز کنید و دستور زیر را برای راه اندازی عامل SSH اجرا کنید
eval "$(ssh-agent -s)"
-
آن را به عامل اضافه کنید
ssh-add ~/.ssh/id_rsa
می توانید موارد بالا را برای چندین هاست Git که با آنها سروکار دارید تکرار کنید تا هر میزبان کلید SSH متفاوتی داشته باشد.
پیکربندی خودکار کلید SSH در هر میزبان
هنگام کار با چندین میزبان کد، مانند GitHub، GitLab و Bitbucket، داشتن یک ورودی میزبان جداگانه برای هر میزبان در خود می تواند مفید باشد. ~/.ssh/config
فایل. این به شما امکان می دهد بدون نیاز به یادآوری URL های مختلف یا کلیدهای SSH به راحتی بین هاست ها جابجا شوید.
در اینجا مثالی از نحوه راه اندازی چندین میزبان در فایل ~/.ssh/config آورده شده است:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_rsa
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/gitlab_rsa
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket_rsa
تولید کلیدهای GPG
اگر کلیدهای GPG را قبلاً تولید و به میزبان راه دور خود اضافه کردهاید، میتوانید رد شده و به عنوان بعدی بروید، در غیر این صورت، میتوانید زیر را دنبال کنید تا تنظیمات GPG را انجام دهید:
-
یک ترمینال را باز کنید و دستور زیر را برای ایجاد یک کلید GPG جدید اجرا کنید:
gpg --full-generate-key
-
دستورات را دنبال کنید تا نام و آدرس ایمیل خود را وارد کنید.
-
نوع کلید و اندازه کلید را انتخاب کنید. گزینه های پیش فرض معمولا کافی هستند.
-
تاریخ انقضای کلید خود را تعیین کنید. شما می توانید انتخاب کنید که بدون انقضا یا تاریخ خاصی تعیین کنید.
-
یک رمز عبور برای کلید خود وارد کنید. این عبارت عبور برای استفاده از کلید برای امضای commit ها لازم است.
-
پس از تولید کلید، دستور زیر را برای دریافت شناسه کلید اجرا کنید
gpg --list-secret-keys --keyid-format LONG <your_email>
-
در خروجی، خط sec را شناسایی کرده و شناسه کلید GPG را کپی کنید. بعد از کاراکتر / شروع می شود. در این مثال، شناسه کلید است
4EC9DCE00DD4D021
sec rsa4096/4EC9DCE00DD4D021 2023-04-23 [SC] 0A96E925578EA97AD6B62FA54EC9DCE00DD4D021 uid [ultimate] User <user email> ssb rsa4096/BBF655FD113EEE28 2023-04-23 [E]
افزودن کلید GPG به میزبان راه دور
-
یک ترمینال را باز کنید و دستور زیر را اجرا کنید تا کلید عمومی GPG خود را دریافت کنید
gpg --armor --export <your_key_id>
-
در وب سایت میزبان کد، به تنظیمات حساب خود بروید و گزینه اضافه کردن یک کلید GPG جدید را پیدا کنید.
-
کلید عمومی را در قسمت ورودی قرار دهید و کلید را ذخیره کنید.
کلید امضای تعهد شناسایی خودکار
برای تسهیل فرآیند امضای commit ها، می توانید تنظیمات Git خود را طوری پیکربندی کنید که از کلیدهای مختلف برای میزبان های مختلف استفاده کند.
برای انجام این کار، می توانید چندین مورد ایجاد کنید .gitconfig
فایل ها و استفاده از includeIf
دستورالعملی برای تعیین شرایطی که هر فایل باید تحت آن استفاده شود. به عنوان مثال، شما می توانید یک ایجاد کنید .gitconfig-work
فایل برای حساب کاری شما و الف .gitconfig-personal
برای حساب شخصی خود فایل کنید و از آن استفاده کنید includeIf
بخشنامه مشخص شود که .gitconfig-work
فایل باید برای تعهد به مخزن کار شما و .gitconfig-personal
فایل باید برای تعهد به مخزن شخصی شما استفاده شود. همچنین می توانید هر فایل gitconfig را طوری پیکربندی کنید که از یک کلید GPG متفاوت برای امضای commit ها استفاده کند.
includeIf
یک گزینه پیکربندی در Git است که به شما امکان می دهد فایل های پیکربندی اضافی را بر اساس شرایط خاص اضافه کنید. به عنوان مثال، می توانید یک فایل پیکربندی خاص را بر اساس پیکربندی مخزن که در آن کار می کنید، اضافه کنید.
در اینجا مثالی از نحوه تنظیم چندین فایل gitconfig با includeIf آورده شده است:
- برای هر کلید امضایی که می خواهید استفاده کنید، یک فایل gitconfig جداگانه ایجاد کنید. مثلا،
~/.gitconfig-personal
و~/.gitconfig-work
. - در اصل شما
~/.gitconfig
فایل، موارد زیر را اضافه کنید
# ~/.gitconfig
[includeIf "hasconfig:remote.*.url:git@gitlab.com:**/**"]
path = .gitconfig-work
[includeIf "hasconfig:remote.*.url:https://gitlab.com/**"]
path = .gitconfig-work
[includeIf "hasconfig:remote.*.url:git@github.com:**/**"]
path = .gitconfig-personal
[includeIf "hasconfig:remote.*.url:https://github.com/**"]
path = .gitconfig-personal
# ~/.gitconfig-personal
[user]
name = <YOUR NAME>
email = <YOUR PERSONAL EMAIL>
signingkey = <GPG KEY ID FOR PERSONAL GPG>
[commit]
gpgsign = true
# ~/.gitconfig-work
[user]
name = <YOUR NAME>
email = <YOUR WORK EMAIL>
signingkey = <GPG KEY ID FOR WORK GPG>
[commit]
gpgsign = true
نتیجه
بهعنوان یک توسعهدهنده، کار با میزبانهای کد متعدد و امضای تعهدات خود با چندین کلید GPG میتواند چالشبرانگیز باشد. با این حال، با پیکربندی تنظیمات Git و SSH خود برای استفاده از کلیدهای مختلف برای هاست های مختلف، می توانید گردش کار خود را ساده کرده و بهره وری خود را افزایش دهید. با دنبال کردن مراحل ذکر شده در این پست، می توانید به راحتی چندین میزبان کد را مدیریت کنید، commit های خود را با کلید GPG مناسب امضا کنید و از کلید SSH مناسب برای هر میزبان استفاده کنید. این می تواند به شما در صرفه جویی در زمان و جلوگیری از اشتباهات کمک کند و در نهایت شما را به یک توسعه دهنده موثرتر تبدیل کند. خوب چرا امتحانش نکنیم؟ با کمی تنظیمات، می توانید گردش کار خود را ساده کنید و مهارت های توسعه خود را به سطح بعدی ببرید.