本地配置多个git账户(公司、GitHub)

在公司探索新知识(摸鱼)时,我们一般会需要在GitHub上维护维护自己的小仓库。
这样如果使用原来的配置就会发生Push代码时Permission Denied了。
所以我们有以下几步:
公司电脑是Mac,所以以下内容均为Mac上的操作,但不同操作系统其实大同小异。

不同仓库配置不同的提交用户信息

我们在公司电脑上主要还是提交公司的代码,所以为了方便,git的global用户信息可以设置为公司要求的name和email。
在自己的仓库下配置git账号信息可以覆盖掉全局的。

cd <你的仓库地址>
git config user.name <你的GitHub账户名>
git config user.email <你的GitHub账户邮箱>

生成不同的ssh密钥

# -C后接邮箱地址,例:-C "[email protected]"
# -f后接生成密钥的路径(同时包含了密钥的文件名),这样就不用在生成时单独输入密钥文件名
# 不同的密钥文件名要区分不同文件名,以下是GitHub的ssh密钥示例
ssh-keygen -t rsa -C "<GitHub邮箱>" -f ~/.ssh/id_rsa_github

# 这之后直接回车就行了

进入ssh文件夹,可以看到我本地生成了两个,一个是默认名称id_rsa,一个是GitHub的id_rsa_github,分别还有它们的公钥。
在这里插入图片描述

创建ssh配置文件

在上图可以看到我的ssh文件夹下有config文件,如果你从来没有配置过,那你的本地可能是没有这个文件的。

vim ~/.ssh/config

# vim新手教程
# 按i键进入插入模式(进入插入模式才能输入内容),左下角有INSERT字样
# 输入完毕后按ESC突出插入模式,左下INSERT消失
# 按 :(英文) 键进入命令模式,光标移到了窗口最底下
# 输入wq保存并退出(w:保存,q:退出,可单独使用)

# config文件插入以下内容,多个账号可以配置多组,中间建议间隔一行,这里只实例GitHub
Host [email protected]
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github

# Host 为使用ssh时的别名,在之后配置仓库远程地址时用到
# HostName 为远程仓库的域名
# User 一般为git,了解到好像填其他的也没太大影响
# IdentityFile 为生成的对应的ssh密钥文件

在远程仓库添加ssh公钥

GitHub官方教程

# 将公钥打印到命令行中方便复制
cat ~/.ssh/id_rsa_github.pub
  1. 在任何页面的右上角,单击您的个人资料照片,然后单击 Settings(设置)。在这里插入图片描述
  2. 在用户设置侧边栏中,单击 SSH and GPG keys(SSH 和 GPG 密钥)。在这里插入图片描述
  3. 单击 New SSH key(新 SSH 密钥)或 Add SSH key(添加 SSH 密钥)。
    在这里插入图片描述
  4. 刚刚复制的公钥内容粘贴到下图Key中,Title写上方便你自己认识这个密钥的描述性内容在这里插入图片描述

测试ssh链接

ssh -T [email protected]
# 这里-T后面接上的就是之前config文件中的Host别名

# 如果看到以下内容,说明你已经成功了
# Hi <你的GitHub账户名>! You've successfully authenticated, but GitHub does not provide shell access.

配置仓库远程地址

# 原来配置远程仓库地址时我们使用https地址
git remote add origin https://github.com/<你的GitHub账户名称>/<你的仓库名称>.git

# 现在我们使用config文件中的Host别名
git remote add origin [email protected]:<你的GitHub账户名称>/<你的仓库名称>.git

使你的ssh密钥持续生效

但我之所以写下这篇文章,就是因为我不是第一次配置了。
为了方便你以后不用再麻烦,请继续看。
当你重启一次电脑后,你的ssh密钥就没有被托管了,push代码的时候就会Permission Denied。
当然你可以重复以上步骤解决,但我们希望有更优雅的解决方式。原因在这个文章里说了,感兴趣的可以了解一下。
是否必须每次添加ssh-add

我们可以通过ssh-add命令将我们的ssh密钥重新添加到ssh-agent进行代理托管

ssh-add ~/.ssh/id_rsa_github

但是仍然会出现重启后失效的问题,所以我们可以将这个命令添加到命令行配置文件中。

vim ~/.zshrc

# 添加以下内容,亦可添加多个密钥
# 将GitHub的ssh密钥添加到ssh-agent
ssh-add ~/.ssh/id_rsa_github
# 然后保存退出

猜你喜欢

转载自blog.csdn.net/qq_33866817/article/details/120847864
今日推荐