Necesitatea de a gestiona mai multe conturi GitHub pe aceeași mașină apare la un moment dat pentru majoritatea dezvoltatorilor. De fiecare dată când îmi schimb Mac-ul sau trebuie să Git push cu un nou cont de lucru, ajung să navighez pentru a afla cum să fac ceva ce am făcut de peste o jumătate de duzină de ori.
Lenea mea de a nu documenta procesul și incapacitatea de a-mi aminti pașii mă fac să petrec o cantitate decentă de timp obținând bucăți de pe întregul web și apoi făcându-l cumva să funcționeze.
Sunt sigur că sunteți mulți dintre voi care ați fost acolo, ați făcut asta și mulți alții dintre voi care așteptați pentru următoarea dată când se întâmplă același lucru (inclusiv eu!). Acest efort este menit să ne ajute pe toți.
Conţinut
- 0.1 1. Generarea cheilor SSH
- 0.2 2. Adăugarea noii chei SSH la contul GitHub corespunzător
- 0.3 3. Înregistrarea noilor chei SSH la ssh-agent
- 1 4. Crearea fișierului de configurare SSH
- 2 5. O cheie SSH activă în agentul ssh la un moment dat
- 3 6. În timp ce clonați depozite
- 4 7. Pentru depozitele existente la nivel local
1. Generarea cheilor SSH
Înainte de a genera o cheie SSH, putem verifica dacă avem chei SSH existente: ls -al ~/.ssh
Aceasta va enumera toate perechile de chei publice și private existente, dacă există.
Dacă ~/.ssh/id_rsa
este disponibil, îl putem reutiliza sau altfel putem genera mai întâi o cheie a valorii implicite ~/.ssh/id_rsa
prin alergare:
ssh-keygen -t rsa
Când vi se solicită locația pentru a salva tastele, acceptați locația implicită apăsând Enter. O cheie privată și o cheie publică ~/.ssh/id_rsa.pub
va fi creat la locația ssh implicită ~/.ssh/
.
Să folosim această pereche de chei implicită pentru contul nostru personal.
Pentru conturile de lucru, vom crea diferite chei SSH. Codul de mai jos va genera cheile SSH și va salva cheia publică cu eticheta „Email@work_mail.com” la ~/.ssh/id_rsa_work_user1.pub
$ ssh-keygen -t rsa -C "email@work_mail.com" -f "id_rsa_work_user1"
Avem două chei diferite create:
~/.ssh/id_rsa
~/.ssh/id_rsa_work_user1
2. Adăugarea noii chei SSH la contul GitHub corespunzător
Avem deja cheile publice SSH pregătite și le vom cere conturilor noastre GitHub să aibă încredere în cheile pe care le-am creat. Aceasta este pentru a scăpa de necesitatea introducerii numelui de utilizator și a parolei de fiecare dată când faceți o apăsare Git.
Copiați cheia publică pbcopy < ~/.ssh/id_rsa.
pub și apoi conectați-vă la contul dvs. personal GitHub:
- Mergi la
Settings
- Selectați
SSH and GPG keys
din meniul din stânga. - Click pe
New SSH key
, furnizați un titlu adecvat și lipiți cheia în caseta de mai jos - Clic
Add key
– și gata!
Pentru conturile de lucru, utilizați cheile publice corespunzătoare (
pbcopy < ~/.ssh/id_rsa_work_user1.
pub) și repetați pașii de mai sus în conturile dvs. de lucru GitHub.
3. Înregistrarea noilor chei SSH la ssh-agent
Pentru a utiliza tastele, trebuie să le înregistrăm la ssh-agent pe aparatul nostru. Asigurați-vă că ssh-agent rulează folosind comanda eval "$(ssh-agent -s)"
.
Adăugați cheile agentului ssh astfel:
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work_user1
Faceți agentul ssh să utilizeze cheile SSH respective pentru diferitele gazde SSH.
Aceasta este partea crucială și avem două abordări diferite:
Folosind fișierul de configurare SSH (Pasul 4) și având o singură cheie SSH activă în agentul ssh la un moment dat (Pasul 5).
4. Crearea fișierului de configurare SSH
Aici adăugăm de fapt regulile de configurare SSH pentru diferite gazde, precizând ce fișier de identitate să folosim pentru ce domeniu.
Fișierul de configurare SSH va fi disponibil la adresa ~ / .ssh / config. Editați-l dacă există sau altfel îl putem crea.
$ cd ~/.ssh/
$ touch config // Creates the file if not exists
$ code config // Opens the file in VS code, use any editor
Faceți intrări de configurare pentru conturile GitHub relevante similare cu cele de mai jos în ~/.ssh/config
fişier:
# 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
„utilizator_utilizator1”Este ID-ul de utilizator GitHub pentru contul de lucru.
„github.com-utilizator_utilizator1”Este o notație utilizată pentru a diferenția mai multe conturi Git. De asemenea, puteți utiliza „utilizator_utilizator1.github.com ” notație, de asemenea. Asigurați-vă că sunteți în concordanță cu notația numelui de gazdă pe care o utilizați. Acest lucru este relevant atunci când clonați un depozit sau când setați originea la distanță pentru un depozit local
Configurația de mai sus cere ssh-agent să:
- Utilizare id_rsa ca cheie pentru orice adresă URL Git care folosește @ github.com
- Folosește id_rsa_work_user1 cheie pentru orice adresă URL Git care folosește @ github.com-work_user1
5. O cheie SSH activă în agentul ssh la un moment dat
Această abordare nu necesită regulile de configurare SSH. Mai degrabă ne asigurăm manual că agentul ssh are atașată doar cheia relevantă în momentul oricărei operațiuni Git.
ssh-add -l
va lista toate cheile SSH atașate agentului ssh. Eliminați-le pe toate și adăugați singura cheie pe care urmează să o utilizați.
Dacă sunteți pe un cont personal Git pe care sunteți pe cale să îl împingeți:
$ ssh-add -D //removes all ssh entries from the ssh-agent
$ ssh-add ~/.ssh/id_rsa // Adds the relevant ssh key
Agentul ssh are acum cheia mapată cu contul personal GitHub și putem face un push Git către depozitul personal.
Pentru a trece la contul dvs. GitHub de lucru-1, schimbați cheia SSH mapată cu agentul ssh eliminând cheia existentă și adăugând cheia SSH mapată cu contul de lucru GitHub.
$ ssh-add -D
$ ssh-add ~/.ssh/id_rsa_work_user1
În prezent, agentul ssh are cheia mapată cu contul Github de lucru și puteți efectua un push Git în depozitul de lucru. Totuși, acest lucru necesită un pic de efort manual.
Setarea URL-ului git remote pentru depozitele locale
Odată ce avem clonate / create depozite locale Git, asigurați-vă că numele de utilizator și adresa de e-mail Git este exact ceea ce doriți. GitHub îl identifică pe autorul oricărui commit din ID-ul de e-mail atașat cu descrierea commit.
Pentru a lista numele de configurare și adresa de e-mail în directorul local Git, faceți git config user.name
și git config user.email
. Dacă nu este găsit, actualizați în consecință.
git config user.name "User 1" // Updates git config user name
git config user.email "user1@workMail.com"
6. În timp ce clonați depozite
Notă: pasul 7 va ajuta, dacă avem depozitul deja disponibil pe local.
Acum, când configurațiile sunt la locul lor, putem continua și clona depozitele corespunzătoare. La clonare, notați că folosim numele de gazdă pe care le-am folosit în configurația SSH.
Depozitele pot fi clonate folosind comanda de clonare oferită de Git:
git clone git@github.com:personal_account_name/repo_name.git
Depozitul de lucru va necesita o modificare cu această comandă:
git clone git@github.com-work_user1:work_user1/repo_name.git
Această modificare se face în funcție de numele de gazdă definit în configurația SSH. Șirul dintre @ și: ar trebui să se potrivească cu ceea ce am dat în fișierul de configurare SSH.
7. Pentru depozitele existente la nivel local
Dacă avem depozitul deja clonat:
Enumerați telecomanda Git a depozitului, git remote -v
Verificați dacă adresa URL se potrivește cu gazda noastră GitHub pentru a fi utilizată sau altfel actualizați adresa URL de origine la distanță.
git remote set-url origin git@github.com-worker_user1:worker_user1/repo_name.git
Asigurați șirul dintre @ și: se potrivește cu gazda pe care am dat-o în configurația SSH.
Dacă creați un nou depozit pe local:
Inițializați Git în folderul proiectului git init
.
Creați noul depozit în contul GitHub și apoi adăugați-l ca telecomandă Git la depozitul local.
git remote add origin git@github.com-work_user1:work_user1/repo_name.git
Asigurați șirul dintre @ și: se potrivește cu gazda pe care am dat-o în configurația SSH.
Împingeți angajamentul inițial către depozitul GitHub:
git add .
git commit -m "Initial commit"
git push -u origin master
Am terminat!
Adăugarea sau actualizarea telecomenzii Git din directorul local Git cu gazda corespunzătoare se va ocupa de selectarea cheii SSH corecte pentru a ne verifica identitatea cu GitHub. Cu toate cele de mai sus la locul nostru git operations
ar trebui să funcționeze perfect.
#Cum #să #gestionați #mai #multe #conturi #GitHub #singură #mașină #chei #SSH
Cum să gestionați mai multe conturi GitHub pe o singură mașină cu chei SSH