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

Specifying non-default SSH key during git push

我有几个 SSH 密钥:

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

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

"Permission to someorg/somerepo.git denied to 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