如何在〜/ .ssh目录中管理多个ssh密钥

时间:2014-05-20 05:26:05

标签: git github ssh bitbucket

我确定我们都会不时收到此错误:

$ git push 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.

典型的补救措施是简单地创建一个公钥/私钥对并与你的git主机共享(在我的案例中,bitbucket,与他们的instructions

事情是,我有很多帐户要求我有一个公钥/私钥对(例如我需要保存一个密钥才能连接到AWS等等)..所以我所做的就是我创建这些键并将它们保存在单独的目录中,即

~/.ssh $ find .
./awskeys
./awskeys/id_rsa
./awskeys/id_rsa.pub
./bitbucket
./bitbucket/id_rsa
./bitbucket/id_rsa.pub

然后这个错误会不时出现..为了解决它我必须将相关的键移回根〜/ .ssh。这对我来说似乎不对。我怎样才能可靠地做到这一点?

1 个答案:

答案 0 :(得分:5)

您可以随意使用它们,但是他们的权限和父文件夹的权限必须严格:

  • 父文件夹(对于其他人和所有文件夹)没有可写访问权
  • 644公钥
  • 600表示私钥。

然后你:

  • ~/.ssh/config fileexample here
  • 中声明这些不同的密钥
  • 更改远程网址,以便使用描述正确ssh密钥的~/.ssh/config文件的相应条目。

这意味着一个条目:

Host mygithub
    User           git
    IdentityFile   ~/.ssh/mypath/mykey # wherever your "new" key lives
    IdentitiesOnly yes

允许您使用以下代码替换git@github.com:username / repo等网址:

git remote set-url origin mygithub:username/repo