首页 > 其他分享 >一台电脑上不同的Git仓库账号使用不同的公私钥设置

一台电脑上不同的Git仓库账号使用不同的公私钥设置

时间:2022-10-24 12:36:58浏览次数:57  
标签:bitbucket git 账号 公私 Host Git ssh 密钥

使用场景:

如我有多个git仓库账号,如2个bitbucket账号,一个github账号。我想让不同的git仓库账号使用不同的公私钥对,同时若多个bitbucket或多个github账号配置同一个公钥是不允许的,一个公钥只能配置在一个github或bitbucket账号中。要想解决如上问题,解决方法如下:

解决思路

生成多对私钥/公钥,注意密钥文件命名避免重复 git操作时,可以区分两个账户,推送到相应的仓库 设置不同的Host对应同一个HostName,但密钥不同 取消Git全局用户名/邮箱设置,为每个仓库单独设置 用户名/邮箱

操作

1、创建多对公私钥

注意​​多对公私钥创建时, -f 和 -C 参数要不同​​。

创建方法如下:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "[email protected]"
解释几个参数:

-t 指定密钥类型,默认是 rsa ,可以省略
-f 指定密钥文件存储文件名(注:~/.ssh/是密钥目录;id_rsa是密钥名,密钥名可以随意)
-C 设置注释文字,比如邮箱(1、这里的C是大写的 2、一定要关联你自己的GitHub的注册邮箱)
接着它会提示你输入两次密码(该密码是你push文件的时候要输入的密码,而不是GitHub管理者的密码),
你也可以不输入密码(推荐),直接按回车。那么push的时候就不需要输入密码,可以直接提交到GitHub上:

2、更改本地的SSH配置

用于区分账号,设置不同秘钥

在​​~/.ssh​​文件夹下新建config文件并编辑,配置Host(自定义账号域名)和HostName(实际git账号域名)、秘钥对应关系。

如果我们有一个bitbucket账号,一个github账号,设置方法如下

vim ~/.ssh/config

#第一个ssh密钥
Host github.com
HostName github.com
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes

#第二个ssh密钥
Host bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_bitbucket
IdentitiesOnly yes

如果我们有两个bitbucket账号,设置方法如下

vim ~/.ssh/config

#第一个ssh密钥
Host git1.bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_bitbucket_1
IdentitiesOnly yes

#第二个ssh密钥
Host git2.bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_bitbucket_2
IdentitiesOnly yes

上面git1、git2 为自定义Host前缀。

以上配置文件参数说明:

# Host:对识别的模式,进行配置对应的的主机名和ssh文件
# HostName:登录主机的主机名
# PreferredAuthentications:设置登录方式,publickey公钥,改成password则要输密码
# IdentityFile:私钥全路径名
# User:登录名
# IdentitiesOnly 这个配置yes,表示只使用这里的key,防止使用默认的

3、将两个密钥对中的公钥分别加到两个Git账号配置下

4、克隆新的项目

以两个bitbucket账号为例:

一般情况下,我们是通过如下的方式克隆一个项目:

git clone [email protected][1]:your-account/your-prj.git

在我们有两个密钥的情况下(使用非默认密钥时),我们需要对这个语句中的域名部分做一下修改:

git clone git@​​xxx​​bitbucket.org/your-prj.git

注意:这里的xxx是你更改本地的SSH配置第二步中的Host,比如的:

git clone [email protected][2]:your-account/your-prj.git

这样就可以clone成功了。

​若是一个github账号,一个bitbucket账号,那么git仓库地址不需要改变。​

5、取消全局 用户名/邮箱设置,每个仓库单独设置

取消全局 用户名/邮箱 配置

git config --global --unset user.name
git config --global --unset user.email

为每个仓库单独设置 用户名/邮箱

cd YourRepoPath
git config user.name "You Name"
git config user.email [email protected]

其实很简单,就是去掉--global参数就行了

参考文章: https://www.artjay.me/2019/more-ssh/

引用链接

​[1]​​ [email protected]mailto:[email protected]
​[2]​​ [email protected]mailto:[email protected]

标签:bitbucket,git,账号,公私,Host,Git,ssh,密钥
From: https://blog.51cto.com/sdwml/5789371

相关文章

  • 『现学现忘』Git分支 — 40、分支基本操作(一)
    目录1、创建分支(1)创建分支(2)图示理解2、查看分支列表3、分支切换4、查看所有分支的最后一个提交5、删除分支1、创建分支(1)创建分支Git是怎么创建新分支的呢?很简单,就是要......
  • git删除不存在的分支
    1.gitbranch-a  查看所有本地分支和远程分支,很多在远程仓库已经删除的分支在本地依然可以看到2.gitremoteshoworigin,查看remote地址,远程分支,还有本地分支与之相对......
  • 中国制霸生成器「GitHub 热点速览 v.22.42」
    火遍推特的中国制霸生成器本周一开源就占据了两天的GitHubTrending榜,不知道你的足迹遍布了多少个省份呢?同样记录痕迹的kanal用了内存读写方式解决了Rust的消息处理......
  • git,gitlab
    Git#Git仓库serveryuminstallgit-yyuminstallgit-coregitwebgita-ll-yuseraddgitpasswdgitmkdir/git/repo.git-pgitinit--bare/git/repo.gitchown-Rgit.......
  • git,gitlab
    Git#Git仓库serveryuminstallgit-yyuminstallgit-coregitwebgita-ll-yuseraddgitpasswdgitmkdir/git/repo.git-pgitinit--bare/git/repo.gitchown-Rgit.......
  • 如何使用git通过ssh协议拉取gitee上的项目代码——如何正确的免密使用git
    如何在gitee网站上生成/添加SSH公钥见教程:生成/添加SSH公钥    测试公私秘钥是否成功:[email protected]     ===============================......
  • Git 配置与使用及从 0 到 1
    前言:本篇博客详细介绍了项目管理工具Git的下载安装、环境变量配置、使用以及一些常用命令,参考了网上一些博主的介绍。有些博客只介绍下载安装,或者只介绍Git命令,没有综......
  • 【解决】CICD、GitHub actions workflow新建仓库push时报错could not read Username f
    git报错fatal:couldnotreadUsernamefor'https://github.com':Nosuchdeviceoraddress原因是没有GitHubtoken,而且cicd时无法输入用户密码正常来说我们使用act......
  • 初学编程三大件之代码管理-->git的使用
    如果想成为一名合格的测试开发/自动化工程师,git知识是必不可少的。为什么这么说呢,因为如果想对代码进行版本管理,git工具是首选。下面说下什么是git :1.Git是一个开源的分......
  • 创建git远程仓库并与本地库连接
    1.首先本地库要创建一个秘钥,用于本地库和远程库之间的连接在git面板里面使用ssh-keygen,然后按几下回车,文件默认存在c盘用户目录下的.ssh目录里面  2.打开.ssh目......