Како управљати са више ГитХуб налога на једном рачунару помоћу ССХ кључева

Потреба за управљањем више ГитХуб налога на истој машини јавља се у неком тренутку код већине програмера. Сваки пут када случајно променим свој Мац или треба Гит пусх са новим радним налогом, на крају потражим како да радим нешто што сам урадио преко пола туцета пута.

Због моје лењости због недокументовања процеса и немогућности памћења корака потрошила сам пристојно време узимајући делове са целе мреже, а затим некако успевајући да функционише.

Сигуран сам да постоји много вас који сте били тамо, учинили то и још много вас који само чекате следећи пут када се догоди иста ствар (укључујући и мене!). Овај подухват треба да нам помогне свима.

1. Генерирање ССХ кључева

Пре генерисања ССХ кључа, можемо да проверимо да ли имамо постојеће ССХ кључеве: ls -al ~/.sshОво ће навести све постојеће парове јавних и приватних кључева, ако их има.

Ако ~/.ssh/id_rsaје доступан, можемо га поново користити, или у супротном можемо прво генерисати кључ до подразумеваног ~/.ssh/id_rsaпокретањем:

ssh-keygen -t rsa

Када се затражи локација за чување кључева, прихватите подразумевану локацију притиском на ентер. Приватни и јавни кључ ~/.ssh/id_rsa.pubбиће креирани на подразумеваној ссх локацији ~/.ssh/.

Користите овај задати пар кључева за свој лични рачун.

За радне рачуне креираћемо различите ССХ кључеве. Код у наставку ће генерисати ССХ кључеве и сачуваће јавни кључ са ознаком „емаил@ворк_маил.цом“ на~/.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. Додавање новог ССХ кључа на одговарајући ГитХуб налог

Већ имамо спремне ССХ јавне кључеве и тражићемо од наших ГитХуб налога да верују кључевима које смо креирали. Овим ћете се ослободити потребе за уношењем корисничког имена и лозинке сваки пут када притиснете Гит.

Копирајте pbcopy < ~/.ssh/id_rsa.пуб са јавним кључем, а затим се пријавите на свој лични ГитХуб налог:

  1. Иди на Settings
  2. Изаберите SSH and GPG keysиз менија са леве стране.
  3. Кликните на New SSH key, наведите одговарајући наслов и залепите кључ у поље испод
  4. Кликните Add key- и готови сте!
За радне налоге користите одговарајуће јавне кључеве ( pbcopy < ~/.ssh/id_rsa_work_user1.пуб) и поновите горње кораке на својим ГитХуб радним налозима.

3. Регистровање нових ССХ кључева код ссх-агента

Да бисмо користили кључеве, морамо их регистровати код ссх-агента на нашој машини. Уверите се да ссх-агент ради помоћу наредбе eval "$(ssh-agent -s)".

Додајте кључеве ссх-агенту тако:

ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa_work_user1

Нека ссх-агент користи одговарајуће ССХ кључеве за различите ССХ хостове.

Ово је пресудан део и имамо два различита приступа:

Користећи ССХ датотеку за конфигурацију (корак 4) и имајући истовремено само један активни ССХ кључ у ссх-агенту (корак 5).

4. Креирање конфигурационе датотеке ССХ

Овде заправо додајемо правила конфигурације ССХ за различите хостове, наводећи коју датотеку идентитета користити за који домен.

ССХ датотека за подешавање биће доступна на ~ / .ссх / цонфиг .Уредите га ако постоји или га можемо једноставно створити.

$ cd ~/.ssh/ $ touch config // Creates the file if not exists $ code config // Opens the file in VS code, use any editor

Унесите конфигурационе уносе за релевантне ГитХуб налоге сличне ономе доле у ​​вашој ~/.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

Ворк_усер1 “ је ГитХуб кориснички ИД за радни налог.

Г итхуб.цом- ворк_усер1 “ је ознака која се користи за разликовање више Гит налога. Такође можете да користите ознакуворк_усер1.г итхуб.цом“ . Уверите се да сте у складу са ознаком имена хоста коју користите. Ово је важно када клонирате спремиште или када постављате удаљено порекло за локално спремиште

Горња конфигурација тражи од ссх-агента:

  • Користите ид_рса као кључзабило који Гит УРЛ који користи @ гитхуб.цом
  • Користите кључ ид_рса_ворк_усер1 за било који Гит УРЛ који користи @ гитхуб.цом-ворк_усер1

5. По један активни ССХ кључ у ссх-агенту

Овај приступ не захтева правила конфигурације ССХ. Уместо тога ручно осигуравамо да ссх-агент има приложен само одговарајући кључ у време било које Гит операције.

ssh-add -lће навести све ССХ кључеве прикључене на ссх-агент. Уклоните их све и додајте један кључ који ћете користити.

Ако се ради о личном Гит налогу који ћете гурнути:

$ ssh-add -D //removes all ssh entries from the ssh-agent $ ssh-add ~/.ssh/id_rsa // Adds the relevant ssh key

Ссх-агент сада има кључ мапиран са личним ГитХуб налогом, а ми можемо да извршимо Гит потискивање у лично спремиште.

Да бисте гурнули на свој радни ГитХуб налог-1, промените ССХ кључ мапиран са ссх-агентом уклањањем постојећег кључа и додавањем ССХ кључа мапираног са ГитХуб радним налогом.

$ ssh-add -D $ ssh-add ~/.ssh/id_rsa_work_user1

The ssh-agent at present has the key mapped with the work Github account, and you can do a Git push to the work repository. This requires a bit of manual effort, though.

Setting the git remote Url for the local repositories

Once we have local Git repositories cloned /created, ensure the Git config user name and email is exactly what you want. GitHub identifies the author of any commit from the email id attached with the commit description.

To list the config name and email in the local Git directory, do git config user.name and git config user.email. If it’s not found, update accordingly.

git config user.name "User 1" // Updates git config user name git config user.email "[email protected]"

6. While Cloning Repositories

Note: step 7 will help, if we have the repository already available on local.

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:

Иницијализујте Гит у директоријуму пројекта git init.

Направите ново спремиште на ГитХуб налогу, а затим га додајте као Гит даљински у локално спремиште.

git remote add origin [email protected]_user1:work_user1/repo_name.git 

Уверите се да се низ између @ и: подудара са хостом који смо дали у ССХ конфигурацији.

Гурните почетно урезивање у спремиште ГитХуб:

git add . git commit -m "Initial commit" git push -u origin master

Ми смо готови!

Додавање или ажурирање Гит даљинског управљача локалног Гит директоријума одговарајућим хостом побринуће се за одабир тачног ССХ кључа да бисмо верификовали наш идентитет са ГитХубом. Уз све горе поменуто, наши git operationsби требали радити несметано.