我在CentOS 5.9服务器上安装gitolite。我创建了git用户,然后在su - git
之后我设法将我的公钥放到〜/ .ssh /目录中,我已成功克隆了github上的gitolite repo并运行了gitolite/install -ln
。下一步是运行gitolite设置。
git@hostname [~]# 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的说明进行操作,因为对于像我这样的noob来说,比起普通的gitolite文档更容易理解。但是,这些说明没有提到自定义.conf文件。
更新 我尝试生成一个新密钥但它仍然失败:
git@hostname [~]# 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)
git@hostname [~]# 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连接到此服务器。
更新
事实证明,gitolite保留了我曾尝试设置的公钥,以前已经失败了。然后我删除了所有的repos,gitolite源目录,〜/ bin中的符号链接和.gitolite目录,并再次启动了安装过程。我从github克隆了gitolite repo,删除了之前尝试过的所有其他密钥后生成了一个新密钥。然后我跑了gitolite install -ln
,最后
git@hostname [~]# 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'
仍然失败。
答案 0 :(得分:7)
如果您从puttykeygen等处获取pub密钥..它将是多行的,带有标题,如
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "test@example.com"
startofkeylines
....
endofkey==
---- END SSH2 PUBLIC KEY ----
删除---开始和结束行以及注释:行。将所有关键行放在一行中。并使用ssh-rsa作为前缀,如下所示:
ssh-rsa startofkeylines....endofkey==
这对我有用。
答案 1 :(得分:2)
gitolite指纹识别.ssh目录中的所有键 - 包括authorized_keys文件。从.ssh目录和authorized_keys文件中删除任何不需要或损坏的密钥。
答案 2 :(得分:2)
我遇到了同样的问题。原来,在复制粘贴期间,我在其中一个键中添加了换行符。花了我一些时间来发现它...
答案 3 :(得分:2)
你写道,“事实证明,gitolite保留了我之前试图设置的公钥,但是之前已经失败了。”
我遇到了同样的问题。我收到了错误:
致命:“keydir / jsmith.pub”的指纹识别失败
我在客户端删除了失败的密钥,并进行了git推送,但仍然是同样的问题。因此,我必须登录到gitolite服务器并运行以下命令:
rm ~/.gitolite/keydir/jsmith.pub
gitolite setup
这解决了这个问题。这是有效的,因为根据gitolite文档,“这个推送的pubkey文件被签出到〜/ .gitolite / keydir”。好吧,如果发生了一些致命错误,那么pub键将不会放在适当的位置。因此,您甚至可以正确地格式化ssh密钥,但仍然无法编写。
答案 4 :(得分:1)
正如我mentioned before,这意味着尚未正确生成ssh密钥。
尝试:
ssh-keygen -t rsa -f "${H}/.ssh/micha" -C "Gitolite Admin access (not interactive)" -q -P ""
OP mwotton reports从任何先前的ssh键清除〜/ .ssh是解决方案。
这是因为ssh-authkeys.fp_file()
函数称为with a find:
chomp( my @pubkeys = `find keydir/ -type f -name "*.pub" | sort` );
因此它可以获取已经在~/.ssh
中的先前(可能已损坏)的密钥。
答案 5 :(得分:1)
我已经尝试了所有的关键重新生成,gitolite重新安装,清除所有关键文件等,都没有成功,直到我开始关注Git历史的gitolite。
问题是github上的master分支& google.code repos坏了。 我检查了最后一个稳定版本v3.6.4在指纹问题消失了。我想我可以发现一个最近提交的一个令人讨厌的提示。
答案 6 :(得分:0)
对我而言,我通过而不是以gitolite
用户身份运行root
命令。我创建了一个git
用户帐户(并发现它需要是一个可以登录的帐户...即/bin/false
中没有/etc/passwd
)。
答案 7 :(得分:0)
我将gitolite从v2升级到v3,运行安装并设置管理密钥
然后强制推送配置库,所有问题现在都已修复。
答案 8 :(得分:0)
我遇到的问题是openssh,在版本v6.8中或其周围更改了指纹的默认密码(ssh-keygen -lf path-to-key),因此现在必须显式传递密码类型(-E md5) )获得遗留行为。查看CHANGES文件显示,gitolite v3.6.5将正确处理新式ssh指纹(感谢Robin Johnson)'。 gitolite的升级为我解决了这个问题。