Menu

  • خانه
  • برنامه‌نویسی
  • تجربه‌های کاری
  • سبک زندگی
  • پروژه‌ها

Copyright © 2018 Payro.me Powered by WordPress

شیما پیرو، توسعه دهنده نرم افزارنوشته‌ها و تجربیات کاری شیما پیرو توسعه دهنده نرم افزار

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

اتصال ssh به گیتلب با چند حساب کاربری
مارس 24, 2021برنامه‌نویسی

فرض کنید یک حساب کاربری شخصی با ایمیل [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 رو به گیت‌لب اضافه کنید. (جزئیات بیشتر را از گیت‌لب بخوانید)

بخوانید:  راهنمای داکر برای تازه‌کارها: کلمات کلیدی در Docker

تعریف کانفیگ فایل

در نهایت برای اتصال از طریق دو 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]

یک پاسخ یا دیدگاه بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته‌ها

  • برنامه‌نویسی
  • تجربه‌های کاری
  • سبک زندگی

نوشته‌های تازه

  • اتصال SSH به Gitlab با بیش از یک حساب کاربری
  • اهمیت شوخ‌طبعی در محیط کار
  • چطور از شر تسک‌های تو مخی خلاص شویم؟
  • راهنمای داکر برای تازه‌کارها: تعریف داکرفایل، ساخت ایمج و راه اندازی کانتینر
  • راهنمای داکر برای تازه‌کارها: کلمات کلیدی در Docker