一台电脑双 GitHub 账户配置,同时两个 SSH 密钥

这篇具有很好参考价值的文章主要介绍了一台电脑双 GitHub 账户配置,同时两个 SSH 密钥。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本人搞了两个 GitHub 账号,一个用来正常的和别人合作项目,另一个用来自己写一些代码,希望能做到两个本地账户和远程账号都完全隔离,没有联系,也不会被混淆使用。

但是这样就会有一个问题,设置本地用户 user.email 时候,如果两个 GitHub 账号仓库使用同一个本地用户, GitHub 会将本地的用户自动与相应的 GitHub 账号关联起来,这样在 commit 记录里面就能看到是谁提交的了,这是我不想看到的结果。

最开始以为只要把同一个 SSH 公钥分别添加到两个 GitHub 账户,再在不同的仓库设置不同的 user.nameuser email 就 OK 了. 并不行,每个公钥只能用一次。然后就考虑生成两个密钥,分别添加到不同的账户,但是电脑在连接远程仓库时,只能默认选择其中固定的一个来连接,并不会根据不同仓库的设置选择不同的密钥,结果就是还是只能免密连接一个 GitHub 账户的仓库。

你所使用的 SSH 密钥决定了你是否有权限访问某一个 GitHub 账号下面的仓库,而你本地仓库设置的 use email 决定了在 GitHubcommit 记录中的用户,而一般在没有进行以下配置的情况下,你的电脑只会默认使用一个 SSH 密钥进行连接,这就导致了你只能访问一个 GitHub 账号。

如果访问另一个 Github 账户,在 push 时就会报如下错误:

两个git账号,Git 相关,github,git,linux

下面将详细介绍方法:

假设现有两个账号分别如下: 一个账号名为 99Young99、另一个为 CS-Research-alliance

两个git账号,Git 相关,github,git,linux
两个git账号,Git 相关,github,git,linux

注: 这里举例实现在相同的平台 Github 不同账号使用不同的 SSH,也可以用相同的方法,在不同的平台使用不同的 SSH

1. 生成密钥

首先是先生成两个 SSH 密钥,对应两个身份(假设为 99Young99CS-Research-alliance)。

1.1 检查是否已经有 SSH-Key

打开 Git bash(Linux 中需要打开 Shell),进入 ~/.ssh 目录,通过命令看看电脑上有 SSH-Key 的相关文件没!

cd ~/.ssh
ls

两个git账号,Git 相关,github,git,linux

如果显示 id_rsaid_rsa.pub 文件,说明已经有 SSH Key了。如果没有,那么根据下面步骤 生成一个!

1.2 生成一个(或多个)SSH-Key

生成一个 Github 用的 SSH-Key,其中 github_id_rsa 为密钥的文件名,~/.ssh/github_id_rsa 为密钥目录位置:

ssh-keygen -t rsa -C "youremail@example.com" -f ~/.ssh/github_id_rsa

利用上述命令,生成了一对秘钥 github_id_rsagithub_id_rsa.pub , 保存在了 ~/.ssh 文件夹内。

两个git账号,Git 相关,github,git,linux

生成另一个 SSH-Key,其中 Othergithub_id_rsa 为密钥的文件名,~/.ssh/Othergithub_id_rsa 为密钥目录位置:

ssh-keygen -t rsa -C "private_email@example.com" -f ~/.ssh/Othergithub_id_rsa

这时候要特别注意 -f ~/.ssh/Othergithub_id_rsa 用于重命名,否则会覆盖上面的密钥文件。假设生成了一对新的秘钥 Othergithub_id_rsaOthergithub_id_rsa.pub

然后分别将这两对密钥加入到对应的 GitHub 账户中。

本章产生的两个密钥案例如下:
两个git账号,Git 相关,github,git,linux

2. 编辑配置文件

编辑 ~/.ssh/config 文件。如果该文件不存在的话,直接创建一个就好(通过 touch 命令新建 config 文件,并用 vim 编辑器打开 config 文件)。

不同 Host 实际映射到同一 HostName,但密钥文件不同。Host 前缀可自定义,例子中 99Young99

分步解释

Host 99Young99.github.com (自定义的 Host 简称,以后连接远程服务器就可以用 99Young99.github.com 代替 HostName 的 github.com, 相当于网站的别名,随意取,并且可以去掉 github.com 直接取名为 99Young99.github.com)

Host 远程仓库的地址,注意哦,如果有些服务器做的 ip 端口转发,这里不要带上端口号
Host 99Young99.github.com
HostName (托管网站的域名) 是远程仓库的地址,同样如果做的端口转发也不应带端口号 
HostName 主机名可用 ip 也可以是域名(如:github.com或者bitbucket.org)
网上大部分教程的配置文件中 Hostname 都是 github.com,配置成那样可能不能正常 SSH 访问,如果没有成功,改为 ssh.github.com 试一下 (本人没加 ssh 成功了,如下)
HostName github.com
Port 端口号,如果有做转发需要在这里填写端口号,没有就不必要填
Port 服务器 open-ssh 端口 (默认:22,默认时一般不写此行)
Port 8800
PreferredAuthentications publickey
用户
User 登录用户名(如:git) // 即 github 上的用户名
User 99Young99
识别 key 的文件
IdentityFile 证书文件路径(如~/.ssh/id_rsa_*)
IdentityFile ~/.ssh/id_rsa

完整配置

Host 99Young99.github.com
HostName github.com
PreferredAuthentications publickey
User 99Young99
IdentityFile ~/.ssh/id_rsa

配置另一个 Github 账号

都指向同一个平台的话,下面的 Host 需要做个处理,因为我们在用这个 key 的时候根据 Host 从上到下进行查找,不做修改肯定会先查找到第一个 key, 依旧无效,随便改就好了,其他参数不做特殊处理
Host CS-Research-alliance.github.com
HostName github.com
PreferredAuthentications publickey
User CS-Research-alliance 
IdentityFile ~/.ssh/github_id_rsa
网上大部分教程的配置文件中 Hostname 都是 github.com,配置成那样是不能正常 SSH 访问的。

先注意一下: 这里一定是先把两个公钥添加到对应的 GitHub 账户,再进行下面的 ssh 连接测试,否则肯定是连接不上,会显示 permission denied。)

第 1步】首先创建 GitHub 账号并登陆,打开 Setting 进行设置,新建 SSH key

两个git账号,Git 相关,github,git,linux

第 2 步】点 New SSH key 后,填上任意 Title,在 Key 文本框里粘贴id_rsa.pub 文件的所有内容:

两个git账号,Git 相关,github,git,linux

第 3 步】输入密码进行确认,最后就可以看到,SSH key 添加完成

两个git账号,Git 相关,github,git,linux
两个git账号,Git 相关,github,git,linux

这时候,可以测试一下配置是否成功,测试命令使用别名。例如,对于 GitHub,本来应该使用的测试命令是:

ssh -T git@github.com

但在 config 文件中,给 GitHub 网站配置的别名就是 CS-Research-alliance.github.com 以及 99Young99.github.com,所以直接使用别名,就是

ssh -T git@CS-Research-alliance.github.com
ssh -T git@99Young99.github.com

出现如下信息说明配置成功了

Hi CS-Research-alliance! You've successfully authenticated, but GitHub does not provide shell access.

两个git账号,Git 相关,github,git,linux

同样的方式就可以配置更多的以 SSH 登录的不同 git 用户。

3. 配置仓库设置

配置仓库是因为这个时候有多个 SSH ,并对应了多个账户,所以每个账户应该在对应仓库配置专属的本地用户名和邮箱,否则默认所有用户均使用的全局用户名和邮箱。

首先要删除 Git 配置的全局用户名和邮件地址,接着在每个项目仓库中按照需求设置不同的 user.nameuser.email

# 查看全局配置
git config --global user.name
git config --global user.email

# 查看本地配置(只能在 git 仓库中使用)
git config --local user.name
git config --local user.email
# 删除全局设置
git config --global --unset user.name
git config --global --unset user.email

# 添加本地设置
# 设置为私有仓库的GitHub账号邮箱和公有账号的GitHub邮箱。
git config --local user.name "个人github账号名"
git config --local user.email "个人github账号邮箱"

对于 Github99Young99 的本地仓库配置如下:

git config --local user.name "99Young99"
git config --local user.email "xxx@qq.com"

对于 GithubCS-Research-alliance 的本地仓库配置如下:

git config --local user.name "CS-Research-alliance"
git config --local user.email "xxx@163.com"

如果出现如下报错,是因为必须要进入到 git 仓库才可以正常执行命令

fatal: --local can only be used inside a git repository

这一步以及后面的添加远程仓库,每创建一个新的本地仓库的时候,都需要指定,因为全局配置已经删除了

之后在添加远程仓库的时候,把 github.com 修改成 99Young99.github.com 或者 CS-Research-alliance.github.com 就好了(即上述文件中的 Host 选项),用上面两个 Host 名称来代替原来的 github.com,(这一步很重要)如:

git remote add origin git@99Young99.github.com:xxx/example.git # 99Young99
git remote add origin git@CS-Research-alliance.github.com:xxx/example.git # CS-Research-alliance.github

其实,上面的配置文件的意思就是,按照设置远程仓库时使用不同的 Host 名称,查找 ~/.ssh/config 文件,使用不同的 SSH 文件连接到 GitHub。这样你就将是以不同的身份访问 GitHub 仓库。

4. 提交项目到不同的账户

比如提交到 CS-Research-alliance 账户上

初始化本地仓库

git init 

连接远程仓库,注意远程仓库的地址,其中 @ 后默认为 github.com,需要改为 ~/.ssh/config 配置 Host 时的别名,如本人的为:CS-Research-alliance.github.com

git remote add origin git@CS-Research-alliance.github.com:CS-Research-alliance/Summer-camp-and-exemption.git # 连接远程仓库

由于 Github 创建分支默认为 main,所以需要将本地的 master 分支改为 main 分支(先看最后的命令解释,再考虑是否执行此句)

git branch -M main

如果远程仓库有内容,包含 README 文件,需要先执行下述命令

git pull --rebase origin master

提交项目

git add .
git commit -m "任意内容"

-u 表示如果远程没有 master 分支,会创建一个 master 分支,并将项目提交上去,也就不需要将本地的 master 分支改为 main 了,否则执行:git push -u origin main

git push -u origin master

References

[1] 一台电脑双GitHub账户配置

[2] 新手如何配置多个 SSH Key(通俗易懂手把手教学)

[3] 怎么给Git配置多个SSH Key?

[4] 一台电脑绑定两个(或多个)github账号

[5] 在一台电脑上配置多个github和gitlab账号文章来源地址https://www.toymoban.com/news/detail-755135.html

到了这里,关于一台电脑双 GitHub 账户配置,同时两个 SSH 密钥的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • JAVA:【基础九】GitHub上配置SSH密钥

    JAVA:【基础九】GitHub上配置SSH密钥

            超级完整流程可参考一下连接《从安装git到在github上创建新项目》:https://blog.csdn.net/qq_41990294/article/details/124631575         1.另行百度,网上资源很多         1.密钥的生成位置:                 C:UsersAdministrator.sshid_rsa                 C:Users

    2023年04月08日
    浏览(4)
  • GitHub、Gitee、Gitlab共用一个SSH密钥配置

    GitHub、Gitee、Gitlab共用一个SSH密钥配置

    由于我的Github、Gitee、Gitlab用的邮箱不同,向不同的平台提交代码时都需要验证密码,非常麻烦所以配置了一个共用的SSH密钥。 原理: 第一步,设置全局邮箱和用户名 第二步,生产ssh,我下面给的命令没有 -C 指定邮箱这项,原因就是我三个git仓库的邮箱都不同,如果加上

    2024年02月04日
    浏览(12)
  • git ssh密钥配置 & 本地项目推送到github

    1 加密算法类型如下所示: 算法类型 公钥 私钥 ED25519 id_ed25519.pub id_ed25519 RSA id_rsa.pub id_rsa 步骤一: 查看已存在的 SSH 公钥 ED25519 算法 cat ~/.ssh/id_ed25519.pub RSA 算法 cat ~/.ssh/id_rsa.pub 步骤二: 生成 SSH 密钥 如果没有公钥 基于ED25519算法,生成密钥对命令如下: ssh-keygen -t ed25519 -C “

    2024年04月23日
    浏览(11)
  • java在一台电脑上装两个或多个jdk如何配置环境变量,并实现jdk切换

    java在一台电脑上装两个或多个jdk如何配置环境变量,并实现jdk切换

    在我们学习或者工作的时候可能根据项目的需求需要使用不同的jdk,那么如何在一台电脑上实现多个jdk的配置同时方便切换呢? 我这里用两个jdk来给大家演示,分别是jdk8和jdk14。首先去官网下载所需要jdk的安装包,或者压缩包。 下载完成后,安装或者解压到你认为合适的位

    2024年02月05日
    浏览(10)
  • 【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github

    【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github

    博主简介: 22级计算机科学与技术本科生一枚🌸 博主主页:是瑶瑶子啦 每日一言🌼: “当人们做不到一些事情的时候,他们会对你说你也同样不能。”——《当幸福来敲门》 克里斯加德纳 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目

    2024年02月14日
    浏览(19)
  • GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置SSH公私钥详细过程

    GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置SSH公私钥详细过程

    GitHub-微软-github.com Gitee-开源中国- gitee.com Gitlab-乌克兰GitLab 公司-gitlab.com 极狐(JihuLab)-中国代理商运营的Gitlab -gitlab.cn或者jihulab.com 使用 SSH公钥 可以让你在你的电脑和 GitHub 等平台通讯的时候使用 更安全的连接 ( Git的Remote 要使用 SSH地址 ,例如 git@gitee.com:king/example.git ),但

    2024年02月09日
    浏览(27)
  • git在一台电脑上配置不同的仓库(多个gitee仓库、或者不同的github仓库)

    git在一台电脑上配置不同的仓库(多个gitee仓库、或者不同的github仓库)

    在开发过程中,我们工作的时候难免会使用到两个不同的仓库,但是正常来说一电脑默认一个参考,直接会用全局命令 但是这样只能配置一个仓库了,本文介绍在一台电脑上配置多个仓库,简单易用,请欣赏! 前提:您已经掌握了git仓库命令,不需要很会,有过配置用 CA证

    2024年02月13日
    浏览(11)
  • 一台电脑安装两个idea

    一台电脑安装两个idea

    1.下载安装两个idea (需不同版本) 官方下载地址:https://www.jetbrains.com/idea/download 官方其他版本下载地址:其他版本 - IntelliJ IDEA 2.第二个idea需要安装在不同目录下 3.用记事本打开并修改IntelliJ IDEA 2022.2binidea.properties    -------只需将四行配置文件注释放开,关闭并保存 4.在

    2024年02月20日
    浏览(14)
  • 瞎弄电脑BIOS设置,再次开机进入BitLocker恢复,恰巧微软账户啥密钥ID都有,就是和自己这个密钥对不上,然后如何将自己密钥保存到微软账户

    瞎弄电脑BIOS设置,再次开机进入BitLocker恢复,恰巧微软账户啥密钥ID都有,就是和自己这个密钥对不上,然后如何将自己密钥保存到微软账户

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 一个普通专科生,拿什么拯救你的未来? 史上最详细嵌入式系统设计师修炼手册 嵌入式硬件软件汇总 送给大学毕业后找不到奋斗方向的你(每周不定

    2024年02月05日
    浏览(13)
  • 如何一台电脑操作两个adb 设备

    如何一台电脑操作两个adb 设备

    1.首先使用 命令 2.然后使用

    2024年01月16日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包