我是拥有Git存储库的Assembla帐户的所有者。我试图克隆它并出现身份验证错误。
我做了什么?我创建了一个文件夹,git init
创建了初始.git
目录。然后我通过
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。:我故意没有更改全局用户名和电子邮件,但仅限于此项目,因为我的全局凭据用于多个其他项目。
答案 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网址中使用project1
和project2
,而不是my-server-address
。
有关如何在Simplify Your Life With an SSH Config File完成所有这些操作的完整描述。