我有多个Git帐户,一个是我个人使用,一个是公司使用.两个帐户来源都需要从我的笔记本电脑激活.这里我生成了两个ssh键,如id_rsa.pub,id_benwork_rsa.pub ,我配置了git 的配置为
Host sfsworkdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
Host workdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_benwork_rsa
Run Code Online (Sandbox Code Playgroud)
所以这里我的问题是:: -同时推送任何repo git询问第一个ssh_key密码.每次我将git config中的user.name更改为git config user.name"mybitbucketusername".所以请指定我如何在同一系统中使用多个ssh密钥维护多个git帐户
我选择了如何使用多个ssh密钥,多个bitbucket帐户, 但没有使用Blockquote
在github/bitbucket上使用多个帐户/多个身份进行推送对于达到目前为止有点帮助
Sha*_*hou 51
此时您应该已经创建了至少一个默认标识.要查看您是否已具有默认标识,请列出.ssh目录的内容.默认身份文件显示为id_encrypt和id_encrypt.pub对.加密值是rsa或dsa.使用ssh-keygen命令创建新标识.在下面的示例中,标识名为personalid.
$ ssh-keygen -f ~/.ssh/personalid -C "personalid"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/manthony/.ssh/personalid.
Your public key has been saved in /Users/manthony/.ssh/personalid.pub.
The key fingerprint is:
7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 personalid
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| .|
| Eo|
| . S . ..|
| . . o . ... .|
| . = = ..o o |
| . o X ... . .|
| .ooB.o .. |
+-----------------+
Run Code Online (Sandbox Code Playgroud)
如果您有多个Bitbucket帐户,则需要为每个帐户生成一个新的公钥/私钥对.
如果您有多个身份文件,请创建SSH配置文件机制,以便为各种身份创建别名.您可以使用许多参数和不同方法构建SSH配置文件.此示例中使用的别名条目的格式为:
Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity
Run Code Online (Sandbox Code Playgroud)
要为两个身份(workid和personalid)创建配置文件,您将执行以下操作:
为每个标识组合添加别名,例如:
Host workid
HostName bitbucket.org
IdentityFile ~/.ssh/workid
Host personalid
HostName bitbucket.org
IdentityFile ~/.ssh/personalid
Run Code Online (Sandbox Code Playgroud)关闭并保存文件.
现在,您可以将别名替换为存储库URL地址的部分,如下所示:
git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git
要使用您配置的多个SSH标识之一克隆存储库,请克隆存储库并在SSH URL中使用别名.要亲自尝试,请登录Bitbucket并执行以下操作:
这是指官方解决方案为GitBash,Mac OSX和Linux配置多个SSH身份,它对我来说很好用!
Sud*_*arP 13
编辑你的 ~/.ssh/config 文件如下!
Host bitbucket.org-yourusername
HostName bitbucket.org
User yourusername
IdentityFile ~/.ssh/yoursshkey
IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)
更改您的远程 git url 以在“@bitbucket.org”之前使用您的用户名
git remote add origin yourusername@bitbucket.org:company/app.git
Run Code Online (Sandbox Code Playgroud)
或者
git remote set-url origin yourusername@bitbucket.org:company/app.git
Run Code Online (Sandbox Code Playgroud)
如果您还没有克隆您的存储库:
git clone yourusername@bitbucket.org:company/app.git
Run Code Online (Sandbox Code Playgroud)
在网上搜索了大量内容并在社区帮助下,我弄清楚了如何在我的 Mac - MacOS Monterey 上配置 2 个不同的 bitbuckets 帐户。
假设您有 2 个 bitbucket 帐户,用户名分别为 username1 和 username12。
ssh-keygen -f ~/.ssh/username1-Bitbucket
ssh-keygen -f ~/.ssh/username2-Bitbucket
eval $(ssh-agent)
创造:
touch ~/.ssh/config
open ~/.ssh/config
编辑:
open ~/.ssh/config
~/.ssh/config 文件应如下所示:
Host username1-Bitbucket
HostName bitbucket.org
User username1
IdentityFile ~/.ssh/username1-Bitbucket
Host username2-Bitbucket
HostName bitbucket.org
User username2
IdentityFile ~/.ssh/username2-Bitbucket
Host *
UseKeychain yes
AddKeysToAgent yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/username1-Bitbucket
IdentityFile ~/.ssh/username2-Bitbucket
IdentitiesOnly yes
PreferredAuthentications keyboard-interactive,password
Run Code Online (Sandbox Code Playgroud)
ssh-add --apple-use-keychain ~/.ssh/username1-Bitbucket
ssh-add --apple-use-keychain ~/.ssh/username2-Bitbucket
pbcopy < ~/.ssh/username1-Bitbucket.pub
pbcopy < ~/.ssh/username1-Bitbucket.pub
ssh -T git@bitbucket.org
在终端上使用 ssh 和 cd 将存储库克隆到存储库文件夹。
检查存储库远程 url:
git remote -v
您将获得如下信息:
git@bitbucket.org:companyUserName/repositoryName.git
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-> 这是保存存储库的帐户的用户名,在我们的例子中,存储库由 username1 或 username2 所有。
repositoryName-> 存储库的名称。
git checkout -b newBranch
git push origin newBranch
如果两个存储库上一切正常,那么您就完成了!
希望这个解决方案适用于每个 Mac 用户。
这都是民间的啊!
上述~/.ssh/config方法的替代方法是core.sshCommand在clone命令本身中指定配置变量。例如,
git clone --config core.sshCommand='ssh -i/home/username/.ssh/id_ed25519' git@bitbucket.org:the_best/awesome_repo.git
Run Code Online (Sandbox Code Playgroud)
这将设置本地存储库配置值,并使后续的推/拉命令“正常工作”。
$ git config --local --get core.sshCommand
ssh -i/home/username/.ssh/id_ed25519
Run Code Online (Sandbox Code Playgroud)
git 2.10及更高版本支持此功能。
| 归档时间: |
|
| 查看次数: |
11280 次 |
| 最近记录: |