用户在使用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
文件夹中添加了一个适当的keydilawar.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