我有多个Git帐户,一个是我个人使用的,一个是公司使用的。这两个帐户源需要从我的笔记本电脑激活。这里我生成了两个ssh密钥,如id_rsa.pub,id_benwork_rsa.pub,并将git的config配置为
Host sfsworkdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
Host workdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_benwork_rsa
所以这是我的问题:当推送到任何repo git询问第一个ssh_key密码时。每次我user.name在git config中将www.example.com改为git config user.name“mybitbucketusername”。所以请告诉我如何在同一个系统中维护多个git账户和多个ssh键
我试了How to work with multiple ssh keys,Multiple bitbucket accounts,但没有用
push using multiple account / multiple identity on github / bitbucket到目前为止还是有点帮助的
9条答案
按热度按时间vzgqcmou1#
为Mac OSX、GitBash、Linux创建多个身份
此时,您应该已经创建了至少一个默认标识。要查看是否已经有了默认标识,请列出.ssh目录的内容。默认标识文件显示为id_encrypt和id_encrypt.pub对。加密值为rsa或dsa。使用ssh-keygen命令创建一个新标识。在下面的示例中,标识名为personalid。
如果您有多个Bitbucket账户,您需要为每个账户生成一个新的公钥/私钥对。
创建SSH配置文件
当您有多个身份文件时,请创建SSH配置文件机制来为您的各种身份创建别名。您可以使用许多参数和不同的方法构造SSH配置文件。本示例中使用的别名条目的格式为:
要为两个身份(workid和personalid)创建配置文件,请执行以下操作:
1.打开终端窗口。
1.编辑~/.ssh/config文件。如果没有配置文件,请创建一个。
1.为每个身份组合添加别名,例如:
1.关闭并保存文件。
现在,您可以将别名替换为存储库URL地址的一部分,如下所示:
git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git
将每个密钥加载到相应的Bitbucket账户中
确保ssh-agent正在运行并加载了您的密钥
使用SSH和您的别名配置克隆仓库
要使用您配置的多个SSH身份之一克隆存储库,请克隆存储库并在SSH URL中使用您的别名。要自己尝试,请登录Bitbucket并执行以下操作:
1.导航到存储库概述。
1.显示SSH URL。
例如,ssh URL为:
git@bitbucket.org:accountname/reponame.git
然后使用以下命令克隆存储库:
git clone git@personalid:accountname/responame.git
这是指官方解决方案Configure multiple SSH identities for GitBash, Mac OSX, & Linux,它对我来说很好!
sq1bmfud2#
编辑你的~/.ssh/config文件如下!
更改远程git url,在'@bitbucket.org'之前添加用户名
或
如果您尚未克隆存储库:
u5i3ibmn3#
上述
~/.ssh/config
方法的另一种方法是在clone命令本身中指定配置变量core.sshCommand
。比如说这将设置本地存储库配置值,并使后续的push/pull命令“正常工作”。
这在git 2.10及更高版本中得到支持。
jei2mxaa4#
在网上搜索了很多,在社区的帮助下,我想出了如何在我的Mac - MacOS Monterey 上配置2个不同的Bitbuckets帐户。
假设你有两个bitbucket帐户,用户名分别为username 1和username 12。
1.打开终端并为两个用户名创建2 ssh file 2:
ssh-keygen -f ~/.ssh/username1-Bitbucket
ssh-keygen -f ~/.ssh/username2-Bitbucket
1.启动ssh-agent:
eval $(ssh-agent)
1.创建或编辑~/.ssh/config文件:
创建:
touch ~/.ssh/config
open ~/.ssh/config
编辑:
open ~/.ssh/config
~/.ssh/config文件应该如下所示:
1.将密钥添加到ssh-agent:
ssh-add --apple-use-keychain ~/.ssh/username1-Bitbucket
ssh-add --apple-use-keychain ~/.ssh/username2-Bitbucket
1.复制ssh密钥并将其添加到您的bitbuckets帐户。参见link:
pbcopy < ~/.ssh/username1-Bitbucket.pub
pbcopy < ~/.ssh/username1-Bitbucket.pub
1.检查是否成功连接到bitbucket(至少一个),以便将Bitbucket添加为已知主机:
ssh -T git@bitbucket.org
1.在终端上使用ssh和cd将您的存储库克隆到存储库文件夹。
1.检查reposiroties远程URL:
git remote -v
你会得到这样的信息:
git@bitbucket.org:companyUserName/repositoryName.git
1.更改存储库远程URL:
git remote set-url origin username1@username1-Bitbucket:username1/repositoryName.git
git remote set-url origin username2@username2-Bitbucket:username2/repositoryName.git
所以我们将
git@bitbucket.org:companyUserName/repositoryName.git
改为username1@username1-Bitbucket:username1/repositoryName.git
git
-〉username1
或username2
,帐户的用户名。bitbucket
-〉username1-Bitbucket
或username2-Bitbucket
,配置文件的主机别名。companyUserName
-〉它是拥有存储库的帐户的用户名,在我们的例子中,存储库由username 1或username 2拥有。repositoryName
-〉仓库的名称。1.在两个存储库上测试您的连接,创建一个新分支并尝试推送它:
git checkout -b newBranch
git push origin newBranch
如果两个仓库上的一切都正常工作,那么就完成了!
希望这个解决方案适用于每一个Mac用户。
都是人!
ao218c7q5#
前端编辑:Bitbucket现在似乎已经停止支持下面描述的机制。到今天为止,我使用的是上面的@ shannon-chou的解决方案,它运行得很好。留下的帖子,以供历史参考。--JBC,2019-06-23
在2016年,BitBucket似乎增加了对一个稍微简单的解决方案的支持,该解决方案不涉及额外的.ssh配置文件futzing。具体来说,现在可以使用ssh用户名来指示您正在访问的帐户。例如,不使用git url
git@bitbucket.org:efhutton/squanzle.git
你可以使用git url
efhutton@bitbucket.org:efhutton/squanze.git
(or ssh:efhutton@bitbucket.org/efhutton/squanze.git,看起来是等效的)
基本问题是ssh客户端将以固定的顺序呈现ssh-key标识。假设您的工作帐户名为bobobogo,您的私人帐户名为efhutton,并且您的ssh客户端配置为首先提供在bobobogo注册的密钥。如果你试图,比如说,在一个与efhutton关联的账户上获取,那么你的ssh客户端提供bobobogo密钥,bitbucket接受它,然后观察到bobobogo账户没有访问efhutton/squanze仓库的权限,并阻止你。使用新的机制,你告诉bitbucket你想使用一个为efhutton帐户授权的密钥,所以当你的ssh客户端呈现为bobobogo注册的密钥时,bitbucket会拒绝它,你的ssh客户端可以呈现下一个密钥,它是 * 注册的efhutton帐户。
详细信息在这篇博客文章
https://bitbucket.org/blog/better-support-multiple-ssh-keys
编辑:你看到了顶部的消息,对吗?
zbwhf8kr6#
请按照Github要点进行参考。https://gist.github.com/shakeeb91/cd3d3c387f339fbd93ac7388b3c885e0
1)在主目录的~/.ssh/config中创建Config文件。2)添加代码:
也不愿在下面跑。确保使用您自己的repo详细信息。
git clone git@myaccount2access:shakeeb91/repository.git
l7mqbcuq7#
如果您收到一个“ssh:无法解析主机名:名称或服务未知”错误,以下内容可能会有所帮助。
正如Shannon Chou的回答所指出的,您希望创建SSH别名。GitHub、BitBucket等有关于如何做到这一点的说明,但我在Windows 10上遇到了一个问题,可能会帮助其他人。SSH有两个不同的配置文件:系统范围配置文件和用户特定配置文件。我读到的说明,包括Shannon Chou的说明,都说要将别名添加到用户特定的配置文件中,该文件位于~/.ssh/.config
在我的例子中,我需要将别名添加到系统级配置文件中,在Windows 10上使用Git时,该文件通常位于以下位置:C:\Program Files\Git\etc\ssh\ssh_config,在Git的目录中。
您可以通过运行以下命令来确定SSH正在使用哪个配置文件,“myalias”可以是任何字符串“我们感兴趣的是这将输出的配置文件路径:
请注意输出中的文件路径“/etc/ssh/ssh_config”。这告诉我们SSH在那里而不是在~/.ssh/.config文件中查找别名。
gudnpqoy8#
如果其他评论不起作用,下面是我为我的bitbucket帐户所做的。
如果你不想每次都输入你的密码(这可能不安全),你可以通过将密码提示符留空来创建一个新的ssh密钥。
我试过
UseKeychain yes
,但失败了。这就是我的工作。让我知道如果我错过了什么,这是补充其他评论。
2019
neskvpey9#
如果您想为不同的项目使用不同的身份密钥。你可以简单地使用git命令和配置如下:
git clone -c "core.sshCommand=ssh -i ~/.ssh/BitbucketKey1 -F /dev/null" {your repo url}
sshCommand = "ssh -i ~/.ssh/BitbucketKey1 -F /dev/null"