اتصال SSH به Gitlab با بیش از یک حساب کاربری

فرض کنید یک حساب کاربری شخصی با ایمیل [email protected] در گیتلب دارید و حالا در شرکتی استخدام شدید و باید با حساب ایمیلی که شرکت برای شما تهیه کرده ([email protected]) به گیتلب وصل شوید.
اگر پیش از این برای حساب شخصیتون و اتصال از طریق SSH، پابلیککی سیستمتون رو اضافه کرده باشید و حالا بخواهید برای حساب گیتلب شرکت، همون کلید رو اضافه کنید با خطایی مواجه میشید که بهتون میگه این کلید قبلا اضافه شده، چرا که گیتلب بهتون اجازه نمیده در دو حساب کاربری متفاوت از یک SSH Public key مشترک استفاده کنید. پس شما به یک کلید جدید نیاز دارید. در این مقاله به شما یاد خواهم داد چطور کلید جدید بسازید و براحتی با ssh به هر کدام از حسابها متصل شوید.
با من همراه باشید.
مراحل تعریف SSH key برای اتصال به Gitlab
فرض کنید کلید قبلی شما ( که برای گیتلب شخصی استفاده کردید) از قبل تولید شده و با نام id_rsa.pub در دایرکتوری ssh سیستم وجود دارد.
~/.ssh/id_rsa
حالا کافیست در ترمینال با این دستور یک کلید جدید برای حساب کاربری گیتلب شرکت بسازید (جزئیات بیشتر):
ssh-keygen -t rsa -b 4096 -C "[email protected]"
اینتر رو زده و با سوال زیر در ترمینال مواجه میشوید:
Enter file in which to save the key (/Users/shima/.ssh/id_rsa):
در اینجا آدرس کامل و نام فایل رو وارد کنید مثلا برای اینکه کلید در فایلی با نام company_rsa تولید شود لازمه آدرس کامل را وارد کنید و اینتر رو بفشرید:
/Users/shima/.ssh/company_rsa
در نهایت دو فایل با نام های company_rsa و company_rsa.pub تولید میشوند که کافیه محتوای company_rsa.pub رو به گیتلب اضافه کنید. (جزئیات بیشتر را از گیتلب بخوانید)
تعریف کانفیگ فایل
در نهایت برای اتصال از طریق دو SSH key به دو حساب متفاوت کافیه در همین دایرکتوری فایلی به نام config بسازید و دستورات زیر رو در اون قرار بدید:
# Private GitLab instance
Host shimaPrivateUsername.gitlab.com
Hostname gitlab.com
Preferredauthentications publickey
IdentityFile ~/.ssh/id_rsa
# Company GitLab instance
Host shimaCompanyUsername.gitlab.com
Hostname gitlab.com
Preferredauthentications publickey
IdentityFile ~/.ssh/company_rsa
همانطور که در کد بالا مشاهده میکنید در بخش هاست کافیست برای هر حساب کاربری در گیتلب نامی تعریف کنید تا از آن آدرس برای remote-url و ارتباط با گیتلب استفاده کنید.
تغییرات مربوط به ریموت آدرس ریپازیتوریها
در نهایت به گیتلب و محل ریپازیتوری مربوطه بروید در بخش کلون آدرس موجود در Clone with SSH را کپی کرده و تغییرات مرتبط را اعمال کرده و در نهایت کلون کنید. مثلا اگر ریموت آدرس به صورت زیر است:
[email protected]:company/repo.git
با توجه به هاستی که در فایل کانفیگ تعریف کردیم آن را به حالت زیر تغییر دهید:
[email protected]:company/repo.git
کانفیگ مجدد گیت برای هر ریپازیتوری
نکته مهمی که نباید فراموش کرد این است حواستان به گیت کانفیک باشد که اگر چیزی را از قبل گلوبال تعریف کردهاید مجددا برای هر ریپازیتوری تعریف کنید تا با ایمیل و نام دیگر در ریپو/حساب اشتباه کامیت نکنید.
به این صورت که به ریپازیتوری مربوطه رفته و دو کامند زیر را متناسب با حساب کاربری مجددا اجرا کنید:
“git config user.name "Shima Company
“git config user.email "[email protected]
یک پاسخ یا دیدگاه بنویسید