Я пытаюсь настроить gitlab (6.5.1) на свежий чистый сервер. Кажется, все работает, но git не может перейти ни в один проект. Следование командам со страницы недавно созданного проекта и отправка на удаленный компьютер через ssh дает:
$ git push -u origin master
fatal: Could not read from remote repository.
Please make sure you have the correct access
rights and the repository exists.
Это кажется довольно распространенной проблемой. К сожалению, кажется, у этого есть несколько потенциальных причин, и ни одна из них, кажется, не совпадает. Начиная с номера 3424 старого выпуска и различных других источников в Интернете, я видел и проверял следующие предложения:
Остаток ключей SSH
Это чистая установка без остатков. Мой ключ был добавлен в файл авторизованных ключей правильно и является единственным в списке.
Запуск ssh с ведением журнала отладки показывает ошибки, связанные с переменными среды Ruby.
Моя приходит чистой. Отладка SSH показывает успешное соединение. Все, что касается аутентификации, является нормальным, тогда это конец вывода:
debug1: Sending command: git-receive-pack 'username/reponame.git' debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK
Проблемы со средой gitlab-shell.
В отличие от многих других с таким же сообщением об ошибке, приведенным выше, мой скрипт проверки gitlab-shell возвращает чистый счет здоровья:
% sudo -u gitlab -H ~gitlab/gitlab-shell/bin/check Check GitLab API access: OK Check directories and files: /var/lib/gitlab/repositories: OK /var/lib/gitlab/.ssh/authorized_keys: OK Test redis-cli executable: redis-cli 2.8.5 Send ping to redis server: PONG
Restart {единорог, sidekiq, redis}
Сообщения о том, что перезапуск одной или нескольких служб устраняет эту проблему, похоже, здесь не применяются. Это не временная проблема, возникающая при выпуске исправлений демона.
Репо не создается физически
Но это. В первый раз каждый раз
~gitlab/repositories/username/reponame.git
создается пустое git-репо, и у него, кажется, есть правильные разрешения.Gitlab-shell не может общаться с сервером API, потому что: A) проблемы с DNS, B) неправильная привязка ip / port / interface C) отсутствие / наличие косой черты.
Скрипт проверки говорит, что доступ к API в порядке.
Я не запускаю nginx, поэтому проблема связывания с ip по умолчанию связана с n / a.
Я пробовал оба
*:8080
и127.0.0.1:8080
для значения прослушивания вunicorn.yml
.Кроме того, я пробовал различные итерации localhost, 127.0.0.1 и полностью квалифицированное доменное имя (которое прекрасно разрешается DNS) с и без конечных слешей,
shell.yml
но безрезультатно. Я также попытался подключить это напрямую к серверу единорога на порту 8080 вместо хоста Apache SSL / прокси на порту 80. Кажется, ничего не имеет значения. Мой сертификат не самоподписан и работает нормально для браузеров, но яself_signed_cert: true
все равно попытался его настроить . Ничего.Сообщенные пути git неверны, добавьте полный путь из дома пользователя gitlab.
Это кажется правдоподобным предложением, если gitlab-shell не занимается каким-либо обезьяньим бизнесом, чтобы исправить это, но я попытался изменить
git remote add origin gitlab@server:username/reponame.git
на `` git remote add origin gitlab @ server: repositories / username / reponame.git` безрезультатно. Та же ошибка.
Кажется, это перечень предлагаемых решений, но ни одно из них не кажется правильным. Обратите внимание, я могу нажать http. Приглашение для входа в систему принимает мое имя пользователя и пароль ldap и принимает push. Это только проблема при попытке использовать SSH. Тестирование только части входа ssh ssh -T gitlab@server
работает нормально.
Что еще может быть причиной этой ошибки?
Как можно отладить такую проблему в gitlab? Там, кажется, не имеет ничего общего в ~gitlab/gitlab-shell/gitlab-shell.log
. Где найти более информативное сообщение об ошибке?
источник
Ответы:
Я почти уверен, что у вас есть проблема конфигурации между SSH и системой из-за этого сообщения отладки SSH:
Вы получаете это сообщение сразу после успешной аутентификации, и сообщение от bash отсутствует, что означает, что ни одна программа не была запущена после входа в систему.
Посмотрите в своем файле passwd, если у вас есть правильные настройки для пользователя gitlab:
Убедитесь, что bash не имеет ничего странного в файлах конфигурации, таких как
Затем перейдите на уровень выше: Gitlab-shell. Убедитесь, что /path/to/gitlab/.ssh/authorized_keys имеет следующую конфигурацию:
с / path / to / gitlab / gitlab-shell / bin / gitlab-shell, принадлежащим пользователю gitlab и исполняемому файлу.
Вы можете быть уверены, что gitlab-shell полностью работоспособен, запустив команду:
Если удаленный вход в систему действительно работает и правильно подключен к оболочке gitlab, вы должны получить такое же приветственное сообщение (но соответствующее пользователю, чей ключ ssh вы использовали для входа в систему), прежде чем оно выгрузит вас, если вы попытаетесь войти в систему удаленно.
Никакое сообщение здесь, вероятно, не указывает, что ssh вообще не соединяет вас с gitlab.
Наконец, проверьте вашу конфигурацию gitlab-shell (config.yml) и убедитесь, что:
и в итоге:
источник
/bin/false
. Либо пакет Arch не устанавливает оболочку правильно при добавлении этого пользователя, либо я где-то сломал ее в процессе реализации аутентификации ldap в этой системе. Спасибо за все усилия.sudo adduser --disabled-login --gecos 'GitLab' git
. Так что это должно работать без оболочки. Я все еще ищу другое решение.У меня была такая же проблема, и после нескольких дней поиска в Google и поиска переполнения стека я наконец нашел свою проблему. Я хотел связать это в письменной форме с Gitlab на тот случай, если у кого-то еще возникнет такая же проблема.
Я нашел свое решение здесь: /programming/17307154/git-bash-push-to-bitbucket-ignores-ssh-key
Я на Windows, и проблема была в том, что Git Bash пытался получить местоположение SSH-ключа от plink.exe, который устанавливается вместе с Putty.
Решением было удалить переменную среды GIT_SSH. Тогда все заработало.
Надеюсь, это поможет кому-то там.
источник