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

时间:2017-11-03 11:33:40

标签: github ssh-keys git-push

我有几个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密钥作为推送的一部分?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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