如何在 BitBucket 中更改 git 终端凭据?

How to change git terminal credentials in BitBucket?

我的本地计算机上有旧的 BitBicket 登录凭据。我需要将其更改为我的工作凭证。我该如何改变这一切?现在我正试图推送到我的工作登录凭据。我得到以下信息,我认为这是因为我需要更改登录凭据和 ssh 密钥?

myapp (master) ✔ git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如果您可以生成一个新的 ssh 公钥并将其添加到您的帐户中,会不会更好?

一个可能的解决方案是在 ~/.ssh/config 中设置您的 git 主机以及您用于工作的私钥(示例 ~/.ssh/id_rsa_work。因此,添加关注 ~/.ssh/config:

Host workid
 HostName bitbucket.org
 IdentityFile ~/.ssh/id_rsa_work

然后将 public 密钥添加到您的 bitbucket 帐户(即复制 cat ~/.ssh/id_rsa_work.pub 的内容并在您的 bitbucket 帐户的 SSH 密钥部分使用它们)

然后你可以做一个

git clone git@workid:<accountname>/<reponame>.git

对于现有存储库,请执行以下步骤:

  1. 获取遥控器列表:

    git remote -v

  2. 更改遥控器url:

    git remote set-url origin git@workid:<accountname>/<reponame>.git

然后运行第一个命令再次确认远程url已经更新。

这种方法的好处是您可以根据需要设置任意数量的 SSH 密钥(例如,使用 and/or private)来访问 bitbucket 存储库。

如果按照上述路线进行,请记住为 ~/.ssh/config 文件设置正确的权限和所有权:

chown $USER ~/.ssh/config
chmod 644 ~/.ssh/config

为了解决每个帐户的不同电子邮件、身份的问题,存在一种使用预提交挂钩的方法,详见

TL;DR

当我的 ssh 密钥从我的 ssh 代理丢失时,我遇到了这种情况。我通过将它添加到 ssh 代理解决了这个问题。

长答案

我在 Macbook 上安装更新后重新启动。重启后,我首先从事(并推送到 bitbucket)一个个人项目。然后我想在我的“工作”项目上工作并推送到适当的回购协议。 git push这次失败了。

设置GIT_SSH_COMMAND=ssh -v 帮助识别我的个人帐户的 ssh 密钥正在被使用。然后我检查了添加到SSH代理的密钥,只列出了我的个人帐户。

$ ssh-add -l
3072 SHA256:xxx...xxx raiyan_kamal (RSA)

我也检查过ssh -T

$ ssh -T
logged in as raiyan_kamal
...

我工作帐户的 SSH 密钥是 work_key,名字是 raiyan@work。所以现在我向我的代理添加了适当的密钥:

ssh-add <path to my work_key private key file>

然后检查以确保列出了两个密钥:

$ ssh-add -l
3072 SHA256:xxx.xxx raiyan_kamal (RSA)
2048 SHA256:yyy.yyy raiyan@work (RSA)

现在git push工作项目回购工作。