2013-04-22 78 views
6

我在CentOS 5.9服务器上安装gitolite。我已经创建了git用户,然后su - git我已经设法将我的公钥放入〜/ .ssh /目录,我已经成功克隆了github的gitolite repo并运行了gitolite/install -ln。下一步是运行gitolite设置。gitolite setup致命:指纹失败'/ tmp/Q3pnE4WVbu'

[email protected] [~]# gitolite setup -pk $HOME/.ssh/micha.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/Q3pnE4WVbu' 

谷歌搜索,并在这里SO搜索并没有帮助我解决这个FATAL错误,而我现在阻碍。

我应该在运行安装程序之前自定义gitolite.conf文件吗?我一直在遵循http://gitolite.com/gitolite/progit.html的说明,因为它们对于像我这样的新手来说比一般的gitolite文档要容易一些。但是,这些说明没有提到自定义.conf文件。


UPDATE: 我试图生成一个新的密钥,它仍然失败:

[email protected] [~]# ssh-keygen -t rsa -C "Gitolite Admin Access (not interactive)" -P "" 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/git/.ssh/id_rsa): /home/git/.ssh/micha 
/home/git/.ssh/micha already exists. 
Overwrite (y/n)? y 
Your identification has been saved in /home/git/.ssh/micha. 
Your public key has been saved in /home/git/.ssh/micha.pub. 
The key fingerprint is: 
33:b6:62:8b:b9:58:07:7a:71:6a:02:a5:ff:7e:c3:3a Gitolite Admin Access (not interactive) 
[email protected] [~]# gitolite setup -pk $HOME/.ssh/micha.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/pUKqewb66w' 

我也曾尝试用全路径替换$HOME,以防万一su - git混淆了它。我的ssh安装有问题吗?不知道如何使用ssh连接到此服务器。


UPDATE: 原来gitolite被保留我曾试图建立与失败以前的公共密钥。然后,我删除了所有repos,gitolite源目录,〜/ bin和.gitolite目录中的符号链接,然后再次开始安装过程。我克隆了github的gitolite repo,删除了之前我尝试使用的所有其他密钥后生成了一个新密钥。然后我跑gitolite install -ln,最后

[email protected] [~]# gitolite setup -pk $HOME/admin.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/tsIx4cKWHj' 

仍然失败。

回答

1

由于我是mentioned before,这意味着ssh密钥没有正确生成。

尝试:

ssh-keygen -t rsa -f "${H}/.ssh/micha" -C "Gitolite Admin access (not interactive)" -q -P "" 

OP mwottonreports清除从任何现有ssh密钥的的〜/ .ssh是溶液。
这是因为ssh-authkeys.fp_file()函数被调用with a find

chomp(my @pubkeys = `find keydir/ -type f -name "*.pub" | sort`); 

因此,它可以抓住已经是在~/.ssh以前(可能损坏)键。

+0

如果我在服务器上运行它,这将生成一对。然后我需要将私钥传输到我的工作站。有没有办法告诉我的本地git客户端使用该密钥文件只是为了这个远程? – mwotton 2013-04-23 02:54:18

+0

我的确看到了早先的答案,但是由于它已经初始化了回购协议,我认为关键一定是可以的。在之前的尝试中,即使在repos被引用之前,它仍然因指纹错误而失败,所以我尝试了几个与密钥不同的选项,并且获得了这一点。 – mwotton 2013-04-23 02:56:13

+0

@mwotton你只需复制'micha'和'micha.pub'在本地'%HOME%\。ssh'(Windows)或'的〜/ .ssh(UNIX)',并宣布一个配置文件,这将让你使用gitolite管理员回购的特殊帐户(同时创建一个新的密钥用于使用gitolite作为用户):请参阅http://stackoverflow.com/a/10909791/6309 – VonC 2013-04-23 05:14:39

2

gitolite指纹识别.ssh目录中的所有密钥 - 包括authorized_keys文件。从.ssh目录和authorized_keys文件中删除所有不需要的或损坏的密钥。

+0

优秀。 +1。我已经在我的文档中记录了你的答案,并引用了解释该行为的gitolite代码。 – VonC 2013-04-24 05:18:31

+0

谢谢:)我已经接受了你的答案,因为它包含了失败点和解决方案以及更好的技术解释。 – mwotton 2013-04-24 07:33:42

+0

嗨!当你说“从.ssh目录中删除任何损坏的密钥”时,你的意思是我们用户的.ssh目录? (从我们管理回购)或gitolite用户服务器的.ssh目录? – Rubendob 2014-11-11 10:15:36

2

我遇到了同样的问题。原来,在复制粘贴过程中,我将一个换行符包含在我的一个密钥中。花了我一些时间来发现它...

6

,如果你正在从puttykeygen等酒馆键..这将与头多线像

---- BEGIN SSH2 PUBLIC KEY ---- 
Comment: "[email protected]" 
startofkeylines 
.... 
endofkey== 
---- END SSH2 PUBLIC KEY ---- 

取出---开始和结束行,并注释:行。将所有关键线都放在一条线上。并以ssh-rsa作为前缀,如下所示:

ssh-rsa startofkeylines....endofkey== 

这是为我工作的。

+1

或者,如果您加载一个PPK文件或产生的puttygen一个新的关键,不存在与标题框格式正确的公钥:“公钥粘贴到的OpenSSH authorized_keys文件”。使用它可以消除手动编辑它时破坏公钥的可能性。 – mwotton 2014-11-02 22:57:53

0

对我来说,我通过而不是运行gitolite命令作为root用户。我创建了一个git用户帐户(并且发现它需要是可登录的帐户,即/etc/passwd中的/bin/false)。

+1

将gitolite作为'root'运行有点冒险。通常这表示权限错误。如果您确定您的许可证是正确的,那么如何创建能够登录的'git'用户? – mwotton 2014-11-02 22:59:57

1

你写道:“事实证明,gitolite保留了我之前尝试设置的失败的公钥。”

我有同样的问题。我得到的错误:

FATAL:指纹识别失败“keydir/jsmith.pub”

我删除了在客户端失败的关键,并做了一个混帐推,但还是同样的问题。因此,我不得不登录到gitolite服务器并运行以下命令:

rm ~/.gitolite/keydir/jsmith.pub 
gitolite setup 

解决了这个问题。这是有效的,因为根据gitolite文档,“这个推送的pubkey文件被签出到〜/ .gitolite/keydir中”。那么如果发生了一些致命错误,那么酒吧钥匙就不会放在适当的位置。所以有可能你甚至可以正确格式化你的ssh密钥,但它仍然不会被写入。

1

我已经尝试过所有的关键再生,gitolite reinstlation,清除所有关键文件等,都没有成功,直到我开始寻找gitolite的Git历史。

问题是,github上的master分支& google.code回购被破坏。 我在指纹问题消失的情况下检出了最新的稳定版本v3.6.4。我想我可以发现一个最近的承诺,这个问题。

+0

v3.6.5也可以 – c9s 2016-05-21 07:55:44

0

我升级gitolite从V2到V3,运行安装和设置管理关键

则力推配置库中,所有的问题都已经得到解决。

0

我遇到的问题是openssh在版本v6.8或版本中改变了指纹的缺省密码(ssh-keygen -lf path-to-key),所以现在必须显式传递密码类型(-E md5)来获得传统行为。回顾CHANGES文件显示gitolite v3.6.5将'正确处理新样式的ssh指纹(感谢Robin Johnson)“。 gitolite的升级解决了我的问题。

相关问题