如何在同一系统中使用多个ssh密钥维护多个bitbucket帐户

Ram*_*Ben 24 git bitbucket

我有多个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

为Mac OSX,GitBash和Linux创建多个身份

此时您应该已经创建了至少一个默认标识.要查看您是否已具有默认标识,请列出.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配置文件机制,以便为各种身份创建别名.您可以使用许多参数和不同方法构建SSH配置文件.此示例中使用的别名条目的格式为:

Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity
Run Code Online (Sandbox Code Playgroud)

要为两个身份(workid和personalid)创建配置文件,您将执行以下操作:

  1. 打开终端窗口.
  2. 编辑〜/ .ssh/config文件.如果您没有配置文件,请创建一个.
  3. 为每个标识组合添加别名,例如:

    Host workid
     HostName bitbucket.org
     IdentityFile ~/.ssh/workid
    Host personalid
     HostName bitbucket.org
     IdentityFile ~/.ssh/personalid
    
    Run Code Online (Sandbox Code Playgroud)
  4. 关闭并保存文件.

现在,您可以将别名替换为存储库URL地址的部分,如下所示: git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git

将每个密钥加载到相应的Bitbucket帐户中

在此输入图像描述

确保ssh-agent正在运行并使用您的密钥加载

在此输入图像描述

使用SSH和别名配置克隆存储库

要使用您配置的多个SSH标识之一克隆存储库,请克隆存储库并在SSH URL中使用别名.要亲自尝试,请登录Bitbucket并执行以下操作:

  1. 导航到存储库概述.
  2. 显示SSH URL.
    例如,ssh URL为:
    git@bitbucket.org:accountname/reponame.git
    然后使用以下命令克隆存储库:
    git clone git @ personalid:accountname/reponame.git

这是指官方解决方案为GitBash,Mac OSX和Linux配置多个SSH身份,它对我来说很好用!

  • 这该死的东西完美地工作了,谢谢! (2认同)

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)

  • 这对我有用,但是只需稍作修改 - “Host”字段在两种情况下都必须相同,例如“Host bitbucket.org”而不是“Host bitbucket.org-yourusername” (2认同)

Gas*_*tes 9

在网上搜索了大量内容并在社区帮助下,我弄清楚了如何在我的 Mac - MacOS Monterey 上配置 2 个不同的 bitbuckets 帐户。

假设您有 2 个 bitbucket 帐户,用户名分别为 username1 和 username12。

  1. 打开终端并为两个用户名创建 2 个 ssh file2:

ssh-keygen -f ~/.ssh/username1-Bitbucket

ssh-keygen -f ~/.ssh/username2-Bitbucket

  1. 启动 ssh 代理:

eval $(ssh-agent)

  1. 创建或编辑 ~/.ssh/config 文件:

创造:

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)
  1. 将密钥添加到 ssh-agent:

ssh-add --apple-use-keychain ~/.ssh/username1-Bitbucket

ssh-add --apple-use-keychain ~/.ssh/username2-Bitbucket

  1. 复制 ssh 密钥并将其添加到您的 bitbuckets 帐户。请参阅链接

pbcopy < ~/.ssh/username1-Bitbucket.pub

pbcopy < ~/.ssh/username1-Bitbucket.pub

  1. 检查与 bitbucket 的连接是否成功(至少一个),以便将 Bitbucket 添加为已知主机:

ssh -T git@bitbucket.org

  1. 在终端上使用 ssh 和 cd 将存储库克隆到存储库文件夹。

  2. 检查存储库远程 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->username1username2,帐户的用户名。

bitbucket->username1-Bitbucketusername2-Bitbucket,配置文件的主机别名。

companyUserName-> 这是保存存储库的帐户的用户名,在我们的例子中,存储库由 username1 或 username2 所有。

repositoryName-> 存储库的名称。

  1. 在两个存储库上测试您的连接,创建一个新分支并尝试推送它:

git checkout -b newBranch

git push origin newBranch

如果两个存储库上一切正常,那么您就完成了!

希望这个解决方案适用于每个 Mac 用户。

这都是民间的啊!


ctu*_*fli 5

上述~/.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及更高版本支持此功能。