用户在使用gitolite时被要求输入密码

用户在使用gitolite时被要求输入密码,gitolite,Gitolite,我已经成功地在服务器上创建了gitolite admin.gitrepo(比如说)10.107.105.13。我可以通过发布git clone在本地机器上克隆此回购协议(例如)10.14.42.7gitolite@10.107.105.13:gitolite admin。我必须在.ssh/config文件中添加一些行,以确保使用了正确的私钥 然后,我在conf/gitolite.conf文件中添加了一个用户dilawar,并在keys文件夹中添加了一个适当的keydilawar.pub。我已将此

我已经成功地在服务器上创建了
gitolite admin.git
repo(比如说)
10.107.105.13
。我可以通过发布git clone在本地机器上克隆此回购协议(例如)
10.14.42.7
gitolite@10.107.105.13:gitolite admin。我必须在
.ssh/config
文件中添加一些行,以确保使用了正确的私钥

然后,我在
conf/gitolite.conf
文件中添加了一个用户
dilawar
,并在
keys
文件夹中添加了一个适当的key
dilawar.pub
。我已将此提交添加并提交给
gitolite admin
repo。我还在
.ssh/conf
文件中添加了一个条目,以便使用正确的私钥。但是当我尝试做
git克隆时dilawar@10.107.105.13:测试
,gitolite要求输入密码。我的印象是,我不必在10.107.105.13创建用户dilawar。我通过登录服务器检查repository testing.git是否存在,公钥
dilawar.pub
是否已添加到
.ssh/authorized_keys

我还尝试了
ssh-vvvdilawar@10.107.105.13
检查是否提供了正确的文件。这是我的
.ssh/conf
文件

HostName 10.107.105.13 
    User gitolite
    IdentityFile ~/.ssh/gitolite

Host 10.107.105.13
    HostName 10.107.105.13 
    User dilawar 
    IdentityFile ~/.ssh/id_rsa

我做错了什么?

在您的配置文件中,我看到:

User dilawar
这是错误的。与gitolite服务器的ssh通信始终使用相同的帐户进行。(此处为
gitolite
)。
使用的私钥有什么变化,这将帮助gitolite确定您的身份

您的
~/.ssh/config
文件应该是:

Host admin
    HostName 10.107.105.13 
    User gitolite
    IdentityFile ~/.ssh/gitolite

Host dilawar
    HostName 10.107.105.13 
    User gitolite
    IdentityFile ~/.ssh/id_rsa
对于克隆
gitolite admin
,您将使用:

git clone admin:gitolite-admin
要克隆回购协议,dilawar可访问:

git clone dilawar:aRepo
有关详细信息,请参阅“”。
另见“

将公钥添加到服务器的
~git/.ssh/authorized_keys
文件是ssh使用公钥对用户进行身份验证的方式。
比如说
sita@work.station
正在尝试以
git@server

您需要做的是在工作站上为用户
sita
获取
~sita/.ssh/id\u rsa.pub
文件,并将其内容(记住它只有一行)附加到服务器上用户
git
~git/.ssh/authorized_keys

授权密钥文件可以添加多个公钥(来自许多不同的人),以便其中任何人都可以登录到
git@server


通过使用gitolite用户名克隆存储库,我已经实现了这一点

git clone gitolite@server:repo 
如果钥匙添加成功,则进一步的拉和推将顺利进行


我接受VomC的回答作为更好的回答

我必须编辑
/etc/ssh/sshd\u config
并将
git
(用户)添加到以
AllowUsers
开头的行中。 然后我不得不将git添加到一个sysadmin组中,该组在sshd_config的行中也是允许的,该行以
AllowGroups
开头

不要忘记使用
sudo服务ssh restart
重新启动ssh守护程序


注意:我不必像以前建议的那样
ssh复制id
或将公钥添加到
/home/git/.ssh/authorized_keys
(gitolite的开发人员建议不要这样做)。

我也遇到了同样的问题,因为我的配置不同,采用了不同的解决方案。我将我的gitolite用户设置为“git”,所以我需要执行
git克隆git@server:repo.git

是关键,但我遇到了一个值得未来搜索者提及的边缘案例

即使你在其他方面都做得很好,就像VonC的回答一样,
ControlPath
的标准设置也会把事情搞砸

我在
~/.ssh/config
中有两个用户,如下所示:

Host gitolite
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/gitolite

Host username
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/username
如果您没有立即看到它(我没有!),问题是
%r@%h%p
(=
username@hostname:port
)与gitolite和username条目相同。它们都是
git@hostname:端口
!一旦我意识到这一点,这是一个简单的解决办法。只需将区别元素添加到这两个用户的更具体的
ControlPath
条目中即可。例如:

Host gitolite
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/gitolite
    ControlPath ~/.ssh/gitolite-admin-%r@%h:%p

Host username
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/username
    ControlPath ~/.ssh/gitolite-username-%r@%h:%p
主机gitolite 主机名 用户git IdentityFile~/.ssh/gitolite ControlPath~/.ssh/gitolite管理员-%r@%h:%p 主机用户名 主机名 用户git IdentityFile~/.ssh/username ControlPath~/.ssh/gitolite用户名-%r@%h:%p
当时没有看到您的答案+1.反馈意见。我已经改进了答案的格式。有趣的边缘大小写和
ControlPath
的使用。向上投票。
Host gitolite
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/gitolite
    ControlPath ~/.ssh/gitolite-admin-%r@%h:%p

Host username
    HostName <whatever> 
    User git
    IdentityFile ~/.ssh/username
    ControlPath ~/.ssh/gitolite-username-%r@%h:%p