虽然已经设置了所有权限,但无法使用Git进行克隆

时间:2014-05-17 09:36:18

标签: git

我是拥有Git存储库的Assembla帐户的所有者。我试图克隆它并出现身份验证错误。

我做了什么?我创建了一个文件夹,git init创建了初始.git目录。然后我通过

为每个项目添加了一个用户名和-email
git config user.name "myproject" # Set your name
git config user.email "myproject@mymail.com" # Set an email

然后我通过ssh-keygen -t rsa -C "myproject@mymail.com"创建了一个新的SSH密钥,并将其上传到Assembla项目页面的SSH密钥管理器。

之后我尝试git clone git@git.assembla.com:myproject.git,但仍然收到错误

ERROR -- : permission denied
fatal: Could not read from remote repository.

为什么我仍然有身份验证错误?如果我打开.git/config,我可以在[user]部分中看到正确的用户名和电子邮件设置。

PS。:我故意没有更改全局用户名和电子邮件,但仅限于此项目,因为我的全局凭据用于多个其他项目。

1 个答案:

答案 0 :(得分:2)

如果我正确地阅读了您的问题,您的服务器包含许多不同的项目,并且每个项目都有不同的SSH身份(公钥)。

您在git中配置的用户名和电子邮件不用于选择SSH连接的凭据;它们仅用于/主要用于将作者和提交者信息放入每个提交中。

要为每个远程存储库设置正确的SSH身份,您需要使用.ssh/config文件。关键配置参数是IdentityFile

Host github.com
    IdentityFile ~/.ssh/github.key

因为识别文件是按主机定义的,并且您似乎在同一服务器上运行了多个项目,所以您需要一些主机别名技巧来为每个项目分配正确的身份文件:

Host project1
    HostName my-server-address
    Port 22
    IdentityFile ~/.ssh/project1.key

Host project2
    HostName my-server-address
    Port 22
    IdentityFile ~/.ssh/project2.key

然后在您的git clone网址中使用project1project2,而不是my-server-address

有关如何在Simplify Your Life With an SSH Config File完成所有这些操作的完整描述。