Установка gitolite становится FATAL: не удалось снять отпечатки пальцев для «/tmp/Q3pnE4WVbu»

Я устанавливаю gitolite на сервер CentOS 5.9. Я создал пользователя git, затем после su - git мне удалось поместить свой открытый ключ в каталог ~/.ssh/, я успешно клонировал репозиторий gitolite из github и запустил 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'

Поиск в Google и поиск здесь, на SO, не помогли мне устранить эту ошибку FATAL, и теперь я в тупике.

Должен ли я настроить файл gitolite.conf перед запуском установки? Я следовал инструкциям с http://gitolite.com/gitolite/progit.html как нубу вроде меня их немного легче понять, чем обычную документацию 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 сохранил открытые ключи, которые я пытался настроить ранее, но это не удалось. Затем я удалил все репозитории, исходный каталог gitolite, символическую ссылку в ~/bin и каталог .gitolite и снова запустил процесс установки. Я клонировал репозиторий gitolite с github, сгенерировал новый ключ после удаления всех остальных ключей, которые я пытался использовать ранее. Затем я побежал 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'

Все еще терпит неудачу.


person mwotton    schedule 22.04.2013    source источник


Ответы (9)


Как я упомянул ранее, это означает, что ключ ssh не был сгенерирован должным образом.

Пытаться:

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

OP mwotton отчеты решением было очистить файл ~/.ssh от любых предыдущих ключей ssh.
Это связано с тем, что ssh-authkeys.fp_file() вызывается функция с находкой:

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

Таким образом, он может захватить предыдущие (возможно, поврежденные) ключи, которые уже были в ~/.ssh.

person VonC    schedule 22.04.2013
comment
Если я запущу это на сервере, это сгенерирует пару. Затем мне нужно передать закрытый ключ на мою рабочую станцию. Есть ли способ сказать моему локальному клиенту git использовать этот ключевой файл только для этого пульта? - person mwotton; 23.04.2013
comment
Я тоже видел этот более ранний ответ, но, поскольку он инициализировал репозитории, я решил, что ключ должен быть в порядке. В более ранних попытках это не удалось с ошибкой отпечатка пальца еще до того, как репозитории были инициированы, поэтому я попробовал несколько разных вариантов с ключом и дошел до этого. - person mwotton; 23.04.2013
comment
@mwotton, вы просто копируете micha и micha.pub на свой локальный %HOME%\.ssh (windows) или ~/.ssh (unix) и объявляете файл конфигурации, который позволит вам использовать эту специальную учетную запись для репозитория gitolite-admin (при создании новой пары ключей для использования gitolite в качестве пользователь): см. stackoverflow.com/a/10909791/6309 - person VonC; 23.04.2013
comment
Хорошо, поэтому я указываю ключ в файле конфигурации в папке .git в репо. Однако у меня все еще есть проблемы - вопрос был обновлен. - person mwotton; 23.04.2013
comment
@mwotton что? в папке .git? Этот файл config не имеет ничего общего с git: это файл конфигурации ssh в ~/.ssh (на стороне client): см. stackoverflow.com/questions/10906633/ в качестве полного примера . - person VonC; 23.04.2013
comment
хорошо, я разберусь с этим отдельно. Я все еще пытаюсь заставить команду настройки gitolite работать. - person mwotton; 23.04.2013
comment
@mwotton верно. Что дает ssh-keygen -l -f '$HOME/.ssh/micha'? соответствует ли он правильному шаблону. - person VonC; 23.04.2013
comment
давайте продолжим это обсуждение в чате - person mwotton; 23.04.2013
comment
выполнение этой команды (без кавычек - с кавычками работать не будет) дало: 2048 33:b6:62:8b:b9:58:07:7a:71:6a:02:a5:ff:7e:c3:3a /home/git/.ssh/micha.pub - person mwotton; 23.04.2013
comment
@mwotton хорошо, эта команда отпечатков пальцев фактически применяется к любому ключу, найденному в каталоге gitolite-admin/keydir (github.com/sitaramc/gitolite/blob/master/src/triggers/). Есть ли другой ключ, который может быть поврежден? - person VonC; 23.04.2013
comment
Кажется, у меня нет каталога gitolite-admin — по крайней мере, ни одного с подкаталогом с именем keydir. Единственный удаленно закрытый каталог - это папка gitolite-admin.git, и это, похоже, пустой каталог репо. - person mwotton; 23.04.2013
comment
@mwotton он действительно должен быть голым. Вам нужно будет клонировать его, чтобы увидеть его содержимое. - person VonC; 23.04.2013
comment
Я пробежал дополнительные шаги, добавленные к вопросу. Все еще терпит неудачу, поэтому я посмотрел содержимое файла в каталоге tmp, который не удалось, а затем grep'ed строку из этого файла. Он нашел строку в файле author_keys в каталоге ~/.ssh. Я очистил этот файл и снова запустил установку - это РАБОТАЛО! - person mwotton; 24.04.2013

если вы берете ключ паба из puttykeygen и т. д., он будет в несколько строк с такими заголовками, как

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

Удалите --- начальную и конечную строки, а также строку Комментарий:. Сделайте все ключевые линии в одну строку. и префикс с ssh-rsa, например:

ssh-rsa startofkeylines....endofkey==

Это то, что сработало для меня.

person Kinjal Dixit    schedule 05.04.2014
comment
В качестве альтернативы, если вы загрузите файл PPK или сгенерируете новый ключ в PuTTYgen, в поле с заголовком «Открытый ключ для вставки в файл author_keys OpenSSH» будет правильно отформатированный открытый ключ. Это исключает возможность повреждения открытого ключа при его ручном редактировании. - person mwotton; 03.11.2014

gitolite снимает отпечатки всех ключей в каталоге .ssh, включая файл author_keys. Удалите все ненужные или поврежденные ключи из каталога .ssh и файла author_keys.

person mwotton    schedule 24.04.2013
comment
Превосходно. +1. Я задокументировал ваш ответ в своем со ссылкой на код gitolite, объясняющий такое поведение. - person VonC; 24.04.2013
comment
Спасибо :) Я принял ваш ответ, поскольку он содержит как точки отказа, так и решения, а также лучшее техническое объяснение. - person mwotton; 24.04.2013
comment
Привет! когда вы говорите удалить любые поврежденные ключи из каталога .ssh, вы имеете в виду каталог .ssh нашего пользователя? (из которого мы управляем репо) или каталог .ssh пользовательского сервера gitolite? - person Rubendob; 11.11.2014
comment
Это должна быть папка пользователя gitolite - для пользователя gitolite не должно быть обычного пользователя. Gitolite управляет аутентификацией пользователей gitolite, а система — нет. - person mwotton; 11.11.2014

Я столкнулся с той же проблемой. Оказалось, что при копировании-вставке я включил новую строку в один из своих ключей. Мне понадобилось время, чтобы заметить это...

person Hans    schedule 25.11.2013

Вы написали: «Оказывается, gitolite сохранил открытые ключи, которые я пытался настроить ранее, но это не удалось».

У меня такая же проблема. Я получал ошибку:

FATAL: не удалось снять отпечатки пальцев для 'keydir/jsmith.pub'

Я удалил неисправный ключ на стороне клиента и сделал git push, но проблема осталась та же. Таким образом, мне пришлось войти на сервер gitolite и выполнить следующее:

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

Это решило проблему. Это работает, потому что, согласно документации gitolite, «файлы публичных ключей из этого push извлекаются в ~/.gitolite/keydir». Что ж, если произойдет какая-то ФАТАЛЬНАЯ ошибка, то ключи паба не будут помещены на свои места. Так что, возможно, вы даже правильно отформатировали свои ssh-ключи, и они все равно не будут записаны.

person user64141    schedule 09.11.2015

Я пробовал все регенерацию ключей, переустановку gitolite, очистку всех файлов ключей и т. д., все безуспешно, пока не начал просматривать историю Git для gitolite.

Проблема заключалась в том, что основная ветка в репозиториях github и google.code была сломана. Я проверил последнюю стабильную версию v3.6.4, и проблема с отпечатками пальцев исчезла. Я думаю, что могу заметить один недавний коммит, который nreaks это.

person Darek    schedule 14.01.2016

Проблема, с которой я столкнулся, заключалась в том, что openssh в версии v6.8 или около нее изменил шифр по умолчанию для отпечатка пальца (ssh-keygen -lf path-to-key), поэтому теперь нужно явно передать тип шифра (-E md5), чтобы получить унаследованное поведение. Просмотр файла CHANGES показывает, что версия 3.6.5 gitolite будет «правильно обрабатывать отпечатки пальцев нового стиля ssh (спасибо Робину Джонсону)». Обновление gitolite решило проблему для меня.

person Hugh Esco    schedule 23.04.2017

У меня это заработало, не запустив команду gitolite от имени пользователя root. Я создал учетную запись пользователя git (и обнаружил, что это должна быть учетная запись, в которую можно войти... то есть, нет /bin/false в /etc/passwd).

person Howard Abrams    schedule 02.11.2014
comment
Несколько рискованно запускать что-то вроде gitolite как root. Обычно это указывает на ошибку прав доступа. Если вы уверены, что ваши разрешения верны, как насчет создания пользователя git с возможностью входа в систему? - person mwotton; 03.11.2014

Я обновил gitolite с версии 2 до версии 3, запустил установку и настройку ключа администратора.

затем принудительно нажмите репозиторий конфигурации, все проблемы теперь исправлены.

person c9s    schedule 21.05.2016