سلسه یادداشت‌هایی از جنس یکبار برای همیشه(‌شماره ۰)

القصه(TL;DR): من میخوام بخاطر خسته شدنم از سرگردونی بین بوک‌مارک‌ها و یادداشت‌های غیرمنسجم،‌مطالب جدید و قدیمی‌ای رو که بهشون بر میخورم توی این مجموعه بنویسم‌؛‌این مطلب میتونه از مسخره ترین چیزا مثل یه کانفیگ ساده/تعریف alias توی گیت یا گاهی یه‌ راه حل خفن (‌حداقل برای من) توی برنامه نویسی و بحث جدی و بلا بلا باشه . D:مقدمه (AKA blah blah): توی حفظیات متاسفانه هیچ‌وقت خوب نبودم و مغزم بیشتر اوقات بدون اینترنت یه لوح سفیده،‌چیزی که همیشه کمک به موندگاری میکرده تکرار شدن اون مفاهیم و نت برداری بوده؛‌چی بود توی اول اون دفترای کلمچی نوشته بود؟قوی‌ترین حافظه‌ها در برابر کم‌رنگ‌ترین جوهرها یه چیزی هست!؟ (see I told ya!) ولی چند وقتیه که خیلی خیلی بیشتر میخونم و حجم کاریم بیشتر شده و وقتی برای نوشتن نت‌های خوشگل ندارم و خیلی چیزام تا سال بعد تکرار نمیشن و منم دارم پیر و فرتوت تر میشم? اگه خیلی هنر کنم یجایی مینویسمشون و بعدش هیچ ایده‌ای ندارم که توی کدوم دفترچه‌ام‌ یا کدوم یکی از اون دسته برگه کوچولوهاییه که بیشتر شبیه زباله‌اند ولی هی با خودم اینور و اونور میکشمشون؛آخرشم رجوع می‌کنم به همون سرچ هیستوریا و بوکمارک‌هام!گاهی میشه یجوری با این شرایط و تنبلی کنار اومد ولی یه وقتایی هم مثل زمان مصاحبه‌ها و ... نمیشه که یسری تب رو روی گوشی و لپ تاپ باز نگه داری و اگه یه موضوع جدید یادت اومد دو ساعت بگردی و آخرشم زمان مرور همه مطلبا که میرسه بین تب‌ها سرگردون باشی و توی جلسه مصاحبه خوب پیش بری تا اینکه یسوال از اون چیزی بپرسن که یادت رفته مرور کنی و این قیافه شیرین رو سر احمقانه‌ترین سوال ممکن تحویلشون بدی و تته پته کنی:قیافه شیرین حین مصاحبهخب پس واضحه که باید یجا همه‌اشون نوشته بشن که وقتی خواستی مرور کنی بدونی بهترین چیزی که واسه هر مطلبی پیدا کردی یجا هستش اونم از زبون خودت! (well cut the crap woman)این داستان: «چجوری میتونم همزمان چندتا ssh-key برای اکانت‌های گیت هاب/لب روی سیستم داشته باشم؟»چجوری میتونم همزمان چندتا ssh-key برای اکانت‌های گیت هاب/لب روی سیستم داشته باشم؟خب قضیه اینه که شما ممکنه بخاطر شرکتی که توش کار می‌کنید توی Github/GitLab یه اکانت سازمانی داشته باشید و از قبلم یک اکانت شخصی داشته باشید، مشکل از اونجا شروع میشه که شما میخوای توی سیستم خونه به اکانت سازمانیت هم دسترسی داشته باشی(‌کاره دیگه مونده!) اما ssh-key ای که موقع کانفیگ اولیه گیت روی سیستمت اضافه کردی مال حساب شخصیته، پس الان احتیاج داری که یک ssh-key‌دیگه با یه اسم دیگه اضافه کنی تا به اون رپوی شرکت دسترسی داشته باشی و بتونی روش کار کنی در عین حال ssh-key قبلی برای رپوی شخصیتو به خاج ندی!این یه سناریو بود، یه سناریوی دیگه که برای من بیشتر پیش اومده و معمولا بعد از تعویض سیستم عامل گریبانمو میگیره که باعث میشه دوباره دنبال جواب این سوال بگردم چون یه هاله‌هایی فقط یادم میاد، اینه که من بیشتر با gitlab کار میکنم ولی به ندرت(‌سالی یک ماه!) که میخوام روی پروژه های آزاد یک مشارکتی بکنم اکثرا رویgithub اند؛ برای همین من باید یک ssh-key‌برای اکانت github‌ام و یکی دیگه برای اکانت gitlab‌ام همزمان موقع کانفیگ اولیه اضافه کنم که تا آخر عمر مفید سیستم عاملم راحت باشم.چاره چیست؟(Windows alert!)اول یک ssh-key‌جدید برای ایمیلی که به اون یکی حسابمون وصله میسازیم و یک اسم بامسمی هم بهش میدیم:$ ssh-keygen -t rsa -b 4096 -C 'my_other_account's_email@whatever.com' ساختن یک کلید جدید با اسم github_rsa (که با قبلی قاطی نشن)بعدش باید قسمت public این کلید جدید رو که ساختیم قاعدتا به اون حساب دومیه که مثلا توی github‌ هستش توی این مثال،‌اضافه کنیم پس توی همون مسیری که کلید رو ساختیم اینو میزنیم تا محتواشو ببینیم و کپی کنیم و بعدش به گیت‌هابمون اضافه‌اش کنیم:$ cat github_rsa.pubمن معمولا معادل این دستور توی ویندوز رو یادم میره که میشه این:$ type github_rsa.pubاضافه کردن این قسمت پابلیک کلید هم به اکانت گیتهابم میشه مرحله بعدی قسمت مهم و آخرش هم میشه تغییر دادن فایل کانفیگ ssh که باید توی فولدر .ssh‌ باشه ولی من توی ویندوزم ندارمش پس می‌سازمش (توی فولدر .ssh‌یک فایل متنی با اسم config بدون هیچ پسوندی میسازم و توی notepad‌ این محتوا رو میزاریم:)# Previous Gitlab account Host gitlab.com HostName gitlab.com User blackSheep777 AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa # new GitHub account Host github.com HostName github.com User black-sheep777 AddKeysToAgent yes IdentityFile ~/.ssh/github/github_rsa و تادا!منبع: https://medium.com/@xiaolishen/use-multiple-ssh-keys-for-different-github-accounts-on-the-same-computer-7d7103ca8693