הצורך לנהל חשבונות GitHub מרובים באותה מכונה עולה בשלב מסוים בזמן עבור רוב המפתחים. בכל פעם שאני משנה את ה- Mac שלי או צריך לדחוף Git עם חשבון עבודה חדש, בסופו של דבר אני גולש אחר הדברים שעשיתי למעלה מחצי תריסר פעמים.
העצלנות שלי שלא לתעד את התהליך וחוסר היכולת לזכור את השלבים גורמת לי להשקיע זמן הגון בהשגת חלקים מכל רחבי הרשת ואז איכשהו לגרום לזה לעבוד.
אני בטוח שיש רבים מכם שהייתם שם, עשו זאת ועוד רבים מכם שרק מחכים לפעם הבאה שהדבר יתרחש (כולל אני!). מאמץ זה נועד לעזור לכולנו לצאת.
1. יצירת מקשי ה- SSH
לפני שנוצר מפתח SSH, אנו יכולים לבדוק אם יש לנו מפתחות SSH קיימים: ls -al ~/.ssh
זה יפרט את כל זוגות המפתחות הציבוריים והפרטיים הקיימים, אם בכלל.
אם ~/.ssh/id_rsa
הוא זמין, נוכל לעשות בו שימוש חוזר, או אחרת נוכל ליצור קודם את המפתח לברירת המחדל על ~/.ssh/id_rsa
ידי הפעלת:
ssh-keygen -t rsa
כאשר מבקשים ממך לשמור את המקשים, קבל את מיקום ברירת המחדל על ידי לחיצה על Enter. מפתח פרטי ומפתח ציבורי ~/.ssh/id_rsa.pub
ייווצרו במיקום ssh המוגדר כברירת מחדל ~/.ssh/
.
בואו נשתמש בזוג המפתחות המוגדר כברירת מחדל לחשבון האישי שלנו.
עבור חשבונות העבודה ניצור מפתחות SSH שונים. הקוד שלמטה ייצור את מפתחות ה- SSH, וישמור את המפתח הציבורי עם התג "[email protected]_mail.com" ל-~/.ssh/id_rsa_work_user1.pub
$ ssh-keygen -t rsa -C "[email protected]_mail.com" -f "id_rsa_work_user1"
יש לנו שני מקשים שונים שנוצרו:
~/.ssh/id_rsa ~/.ssh/id_rsa_work_user1
2. הוספת מפתח ה- SSH החדש לחשבון GitHub המתאים
כבר יש לנו את המפתחות הציבוריים של SSH מוכנים ונבקש מחשבונות GitHub שלנו לסמוך על המפתחות שיצרנו. זאת כדי להיפטר מהצורך להקליד את שם המשתמש והסיסמה בכל פעם שאתה מבצע דחיפה של Git.
העתק את pbcopy < ~/.ssh/id_rsa.
פאב המפתח הציבורי ואז התחבר לחשבון GitHub האישי שלך:
- לך ל
Settings
- בחר
SSH and GPG keys
מהתפריט משמאל. - לחץ על
New SSH key
, ספק כותרת מתאימה והדבק את המפתח בתיבה למטה - לחץ
Add key
- וסיימת!
pbcopy < ~/.ssh/id_rsa_work_user1.
פאב) וחזור על השלבים שלעיל בחשבונות העבודה שלך ב- GitHub.3. רישום מפתחות ה- SSH החדשים אצל סוכן ה- ssh
כדי להשתמש במפתחות, עלינו לרשום אותם אצל סוכן ה- ssh במחשב שלנו. ודא ש- ssh-agent פועל באמצעות הפקודה eval "$(ssh-agent -s)"
.
הוסף את המפתחות לסוכן ssh כך:
ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa_work_user1
גרום לסוכן ssh להשתמש במפתחות SSH בהתאמה עבור מארחי SSH השונים.
זה החלק המכריע ויש לנו שתי גישות שונות:
שימוש בקובץ התצורה של SSH (שלב 4), ובעל מקש SSH פעיל אחד בלבד ב- ssh-agent בכל פעם (שלב 5).
4. יצירת קובץ התצורה של SSH
כאן אנו למעשה מוסיפים את כללי התצורה של SSH עבור מארחים שונים, וקובעים באיזה קובץ זהות להשתמש עבור איזה תחום.
קובץ התצורה של SSH יהיה זמין בכתובת ~ / .ssh / config .ערוך אותו אם הוא קיים, אחרת נוכל פשוט ליצור אותו.
$ cd ~/.ssh/ $ touch config // Creates the file if not exists $ code config // Opens the file in VS code, use any editor
הזן ערכי תצורה עבור חשבונות GitHub הרלוונטיים לזו שלמטה ~/.ssh/config
בקובץ שלך :
# Personal account, - the default config Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa # Work account-1 Host github.com-work_user1 HostName github.com User git IdentityFile ~/.ssh/id_rsa_work_user1
" Work_user1 " הוא מזהה המשתמש של GitHub עבור חשבון העבודה.
" G ithub.com- work_user1 " הוא סימון המשמש להבדיל בין חשבונות Git מרובים. אתה יכול גם להשתמש בסימון " work_user1.g ithub.com" . ודא שאתה עקבי עם הסימון של שם המארח שבו אתה משתמש. זה רלוונטי כאשר אתה משכפל מאגר או כאשר אתה מגדיר את המקור המרוחק למאגר מקומי
התצורה שלעיל מבקשת מ- ssh-agent:
- השתמש ב- id_rsa כמפתחלכל כתובת אתר של Git המשתמשת ב- @ github.com
- השתמש במקש id_rsa_work_user1 לכל כתובת URL של Git המשתמשת ב- @ github.com-work_user1
5. מפתח SSH פעיל אחד בכל פעם ב- ssh-agent
גישה זו אינה מחייבת את כללי התצורה של SSH. במקום זאת אנו מבטיחים ידנית כי ל- ssh-agent יש רק את המפתח הרלוונטי בעת כל פעולת Git.
ssh-add -l
יפרט את כל מפתחות ה- SSH המצורפים ל- ssh-agent. הסר את כולם והוסף את המפתח היחיד שאתה עומד להשתמש בו.
אם לחשבון Git אישי אתה עומד לדחוף:
$ ssh-add -D //removes all ssh entries from the ssh-agent $ ssh-add ~/.ssh/id_rsa // Adds the relevant ssh key
ל- ssh-agent יש כעת את המפתח ממופה עם חשבון GitHub האישי, ואנחנו יכולים לבצע דחיפה של Git למאגר האישי.
כדי לדחוף את חשבון GitHub-1 לעבודה שלך, שנה את מפתח SSH הממופה עם סוכן ssh על ידי הסרת המפתח הקיים והוספת מפתח SSH הממופה עם חשבון העבודה GitHub.
$ ssh-add -D $ ssh-add ~/.ssh/id_rsa_work_user1
לסוכן ssh נכון לעכשיו המפה ממופה עם חשבון Github של העבודה, ואתה יכול לבצע דחיפה של Git למאגר העבודה. זה דורש מעט מאמץ ידני.
הגדרת כתובת ה- URL מרחוק של git למאגרים המקומיים
ברגע שיש לנו שיבוטים / יצירה של מאגרים מקומיים של Git, וודא ששם המשתמש ודוא"ל Git config הם בדיוק מה שאתה רוצה. GitHub מזהה את המחבר של כל התחייבות מזהה הדוא"ל המצורף לתיאור ההתחייבות.
כדי לרשום את שם התצורה ואת הדוא"ל בספריית Git המקומית, בצע git config user.name
ו git config user.email
. אם הוא לא נמצא, עדכן בהתאם.
git config user.name "User 1" // Updates git config user name git config user.email "[email protected]"
6. תוך כדי שיבוט מאגרים
הערה: שלב 7 יעזור אם יש לנו את המאגר כבר מקומי.
Now that the configurations are in place, we can go ahead and clone the corresponding repositories. On cloning, make a note that we use the host names that we used in the SSH config.
Repositories can be cloned using the clone command Git provides:
git clone [email protected]:personal_account_name/repo_name.git
The work repository will require a change to be made with this command:
git clone [email protected]_user1:work_user1/repo_name.git
This change is made depending on the host name defined in the SSH config. The string between @ and : should match what we have given in the SSH config file.
7. For Locally Existing Repositories
If we have the repository already cloned:
List the Git remote of the repository, git remote -v
Check whether the URL matches our GitHub host to be used, or else update the remote origin URL.
git remote set-url origin [email protected]_user1:worker_user1/repo_name.git
Ensure the string between @ and : matches the Host we have given in the SSH config.
If you are creating a new repository on local:
Initialize Git in the project folder git init
.
Create the new repository in the GitHub account and then add it as the Git remote to the local repository.
git remote add origin [email protected]_user1:work_user1/repo_name.git
Ensure the string between @ and : matches the Host we have given in the SSH config.
Push the initial commit to the GitHub repository:
git add . git commit -m "Initial commit" git push -u origin master
We are done!
Adding or updating the Git remote of the local Git directory with the proper host will take care of selecting the correct SSH key to verify our identity with GitHub. With all the above in place, our git operations
should work seamlessly.