在 git 推送期间指定非默认 SSH 密钥



我有几个SSH密钥:

~/.ssh/
    id_rsa
    id_rsa.pub
    fizz
    fizz.pub
    buzz
    buzz.pub

我使用 HTTPS 克隆了一个 GitHub 项目(例如 git clone https://github.com/someorg/somerepo.git)。我做了一些更改,现在我正在尝试推送它们,但是我遇到了一个著名的错误:

"对 someorg/somerepo.git 的许可被拒绝给 blah-user"

blah-user是(我相信)与我的id_rsa SSH 密钥关联的用户。所以我认为 git 默认使用我的 id_rsa 密钥,而我想专门使用buzz密钥进行推送(我已经将该buzz密钥与我的 GitHub 帐户相关联)。

关于我可以在这里做什么,或者我可以做些什么来专门使用 buzz 键作为我推送的一部分的任何想法?

由于您克隆了https url,git在推送到遥控器时将尝试使用https。HTTP(S)和SSH是不同的协议,使用不同的凭据,因此它实际上根本不会查看您的ssh密钥。

Git 可能会在提示符上询问您的 http 凭据,或者您可以使用"git-credential-store"帮助程序将它们保存在文件中 https://git-scm.com/docs/git-credential-store

如果您使用 ssh 协议克隆,git 会将身份验证委托给 SSH,SSH将在 .ssh 目录中查找私钥。

您可以通过多种方式定义哪个键,我更喜欢设置一个 .ssh/config 文件,其中包含我要连接的主机的条目。

Host thehost.com
    Hostname thehost.com
    IdentityFile ~/.ssh/my_github_key_id_rsa
    User mu-username

最新更新