تنظیم چندین ssh key برای مدیریت اکانت‌ها

اخیرا برای انجام یکی از پروژه‌هایی که همکاری داشتم لازم بود که با یک اکانت دیگه غیر از اکانت ایران وصل بشم و فایلهای پروژه رو با اکانت شرکتی بفرستم بر روی گیت‌هاب ولی مشکلی که وجود داشت این بود که اکانت شخصیم هم لازم داشتم و نمیشد از یک ssh key برای هر دو اکانت استفاده کنم. برای اینکار برای هر کدام از اکانت‌ها ssh key اختصاصی خودش رو ایجاد کردم.

ایجاد چندین SSH KEY

قبلا در مقاله “آرشیو دستورات گیت” در رابطه با نحوه ایجاد ssh key صحبت کردم، همانطور که میدانید فایل ssh key در سیستم مکینتاش در مسیر زیر تشکیل می‌شود.


~/.ssh/

حالا که وارد این مسیر شدیم فایل جدید ssh key ایجاد میکنیم.


ssh-keygen -t rsa -b 4096 -C "your-email"

وقتی کد فوق را وارد کردیم چند دستور از ما پرسیده می‌شود که لازم است نام فایل را تغییر دهیم.

multi ssh key

بعد از اینکه فایل جدید را ایجاد کردیم با دستور زیر آن را برای سیستم تعریف میکنیم.


ssh-add id_rsa_personal

که بعد از وارد کردن آن باید نتیجه مشابه زیر را مشاهده کنیم.

ایجاد فایل config برای map کردن ssh key

بعد از انجام مراحل فوق باید فایل کانفیگ را ایجاد کنیم و مشخص کنیم هر کدام از ssh key ها به چه Hostی اشاره میکنند. برای اینکار در کنار فایلهای ssh key ایجاد شده یک فایل config ایجاد میکنیم. (یعنی در مسیر ~/.ssh/ )


touch config

در صورتیکه VS Code را بر روی سیستم خود دارید با اجرای دستور زیر فایل config که ایجاد کرده اید را باز کنید تا ویرایش را بر روی آن انجام دهید.


code config

من برای ssh key هایی که دارم ۲ تا ssh key یکی برای کارهای شخصیم و یکی برای شرکتی که باهاشون کار میکنم ایجاد کردم به نام های personal و company که بر اساس این نام ها تنظیمات زیر را انجام میدهم.


HOST github.com-personal
    HostName github.com
    User git 
    IdentityFile ~/.ssh/id_rsa_personal


HOST github.com-companyName
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_companyName

حالا برای Repositoryهای شخصی وارد مسیر پروژه می‌شوم و دستور code .git را وارد میکنم تا فایل config گیت را بتوانم ویرایش کنم. به remot origin کافی است نام personal را اضافه کنیم تا از ssh key مربوطه استفاده کند.


[remote "origin"]
	url = git@github.com-personal:ACCOUNT_NAME/YOUR-REPOSITORY.git

[user]
	email = Your Email
	name  = Your Name

من شخصا برای Repositoryهای شرکتی تست کردم لازم نیست هیچ تغییری ایجاد کنیم کافی است نام شرکت را درست وارد کرده باشیم.


[remote "origin"]
	url = https://github.com/COMPANY-NAME/project.git

[user] 
        email = Your Email 
        name = Your Name

اما برای اطمینان و نظم کارتون پیشنهاد میکنم به صورت زیر تغییرات را اعمال کنید.


# Before
$ git clone git@github.com:work/repository.git
# After
$ git clone git@github.com-companyName:work/repository.git

نکته: دقت کنید که برای هر پروژه چونکه از اکانتهای مختلف استفاده میکنید با استفاده از دستور زیر حتما نام و ایمیل خود را برای پروژه مشخص کنید که گیت با نام موردنظرتان تغییرات شما را آپلود کند.


git config user.name "Work Account"

git config user.email "work@email.com"

 

حالا میتوانید برای اکانتهای مختلف در gitlab و bitbucket هم ssh keyهای مجزا تعریف کرد.

مطالعه بیشتر:

شاد و موفق باشید.

Comments