在 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
我有几个 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