如何使用SSH密钥在单台机器上管理多个GitHub帐户

大多数开发人员有时会需要在同一台机器上管理多个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 @ work _mail.com”的公共密钥保存到~/.ssh/id_rsa_work_user1.pub

$ ssh-keygen -t rsa -C “email@work_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.pub)并在GitHub工作帐户中重复上述步骤。
3。使用ssh-agent注册新的SSH密钥
要使用密钥,我们必须在计算机上的ssh-agent中注册它们。使用命令确保ssh-agent正在运行eval “$(ssh-agent -s)”。
将密钥添加到ssh-agent中,如下所示:

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work_user1
使ssh-agent对不同的SSH主机使用各自的SSH密钥。

这是关键部分,我们有两种不同的方法:

使用SSH配置文件(第4步),或者一次在ssh-agent中只有一个活动的SSH密钥(第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文件中的以下帐户类似:

个人账户,默认账户

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

工作账户1

Host github.com-work_user1
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work_user1
“ work_user1 ”是工作帐户的GitHub用户ID。

“ g ithub.com- work_user1 ”是用于区分多个Git帐户的符号。您也可以使用“ work_user1.g ithub.com”符号。确保您使用的主机名符号与您的一致。当您克隆存储库或为本地存储库设置远程源时,这是相关的

上面的配置要求ssh-agent:

使用id_rsa为重点 的 任何使用Git的URL @ github.com
使用id_rsa_work_user1键使用任何的Git URL @ github.com,work_user1
5.一次在ssh-agent中有一个活动的SSH密钥
这种方法不需要SSH配置规则。而是我们手动确保ssh-agent在执行任何Git操作时仅附加了相关的密钥。

ssh-add -l将列出附加到ssh-agent的所有SSH密钥。删除所有这些,然后添加您将要使用的一个密钥。

如果您要推送到个人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-agent映射的SSH密钥,方法是删除现有密钥,然后添加映射到GitHub工作帐户的SSH密钥。

$ ssh-add -D
$ ssh-add ~/.ssh/id_rsa_work_user1
目前ssh-agent的密钥已映射到工作Github帐户,您可以将Git推送到工作存储库。不过,这需要一些人工。

为本地存储库设置git remote Url
克隆/创建本地Git存储库后,请确保Git配置用户名和电子邮件正是您想要的。GitHub通过提交描述随附的电子邮件ID来标识任何提交的作者。

要在本地Git目录中列出配置名称和电子邮件,请执行git config user.name和git config user.email。如果找不到,请进行相应更新。

git config user.name “User 1” // Updates git config user name
git config user.email “user1@workMail.com”
6.在克隆存储库时
注意:如果我们的存储库已经在本地可用,则第7步将有所帮助。

现在配置已经就绪,我们可以继续克隆相应的存储库。克隆时,请注意我们使用了SSH配置中使用的主机名。

可以使用Git提供的克隆命令来克隆存储库:

git clone git@github.com:personal_account_name/repo_name.git
工作存储库将需要使用以下命令进行更改:

git clone git@github.com-work_user1:work_user1/repo_name.git
根据SSH配置中定义的主机名进行此更改。@和:之间的字符串应与我们在SSH配置文件中提供的字符串匹配。

7.对于本地现有存储库
如果我们已经克隆了存储库:

列出存储库的Git远程, git remote -v

检查该URL是否与要使用的GitHub主机匹配,否则更新远程原始URL。

git remote set-url origin git@github.com-worker_user1:worker_user1/repo_name.git
确保@和:之间的字符串与我们在SSH配置中指定的主机匹配。

如果要在本地创建新的存储库:

在项目文件夹中初始化Git git init。

在GitHub帐户中创建新的存储库,然后将其作为Git远程添加到本地存储库。

git remote add origin git@github.com-work_user1:work_user1/repo_name.git
确保@和:之间的字符串与我们在SSH配置中指定的主机匹配。

将初始提交推送到GitHub存储库:

git add .
git commit -m “Initial commit”
git push -u origin master
我们完了!

使用适当的主机添加或更新本地Git目录的Git远程目录将负责选择正确的SSH密钥,以验证我们在GitHub上的身份。完成上述所有操作后,我们git operations应该无缝工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值