Какие "права доступа" могут блокировать доступ к хранилищу gitlab?
Я пытаюсь настроить 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
создается каждый раз и, кажется, имеет правильные разрешения.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 / proxy на порту 80. Кажется, ничего не имеет значения. Мой сертификат не подписан самостоятельно и работает нормально для браузеров, но я попытался установитьself_signed_cert: true
тем не мение. Ничего такого.Сообщенные пути git неверны, добавьте полный путь из дома пользователя gitlab.
Это кажется правдоподобным предложением, если gitlab-shell не занимается обезьяньим бизнесом, чтобы исправить это, но я попытался изменить
git remote add origin gitlab@server:username/reponame.git
в ``git remote 'добавьте origin gitlab@server:repositories/username/reponame.git` безрезультатно. Та же ошибка
Кажется, это перечень предлагаемых решений, но ни одно из них не кажется правильным. Обратите внимание, я могу нажать http. Приглашение для входа в систему принимает мое имя пользователя и пароль ldap и принимает push. Это только проблема при попытке использовать SSH. Тестирование только части входа ssh с ssh -T gitlab@server
работает отлично.
Что еще может быть причиной этой ошибки?
Как можно отладить такую проблему в gitlab? Кажется, в ~gitlab/gitlab-shell/gitlab-shell.log
, Где найти более информативное сообщение об ошибке?
2 ответа
Я почти уверен, что у вас есть проблема конфигурации между SSH и системой из-за этого сообщения отладки SSH:
client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
Вы получаете это сообщение сразу после успешной аутентификации, и от bash нет сообщения, что означает, что ни одна программа не была запущена после входа в систему.
Посмотрите в своем файле passwd, если у вас есть правильные настройки для пользователя gitlab:
gitlab:x:1011:1012:GitLab,,,:/path/to/gitlab:/bin/bash
Убедитесь, что bash не имеет ничего странного в файлах конфигурации, таких как
- bash.bashrc
- .профиль
- .bashrc
Затем перейдите на уровень выше: Gitlab-shell. Убедитесь, что /path/to/gitlab/.ssh/authorized_keys имеет следующую конфигурацию:
command="/path/to/gitlab/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A...
с /path/to/gitlab/gitlab-shell/bin/gitlab-shell, принадлежащим пользователю gitlab и исполняемому файлу.
Вы можете быть уверены, что gitlab-shell полностью работоспособен, запустив команду:
# /path/to/gitlab-shell/bin/gitlab-shell
Welcome to GitLab, Anonymous!
Если удаленный вход в систему действительно работает и правильно подключен к оболочке gitlab, вы должны получить такое же приветственное сообщение (но соответствующее пользователю, чей ключ ssh вы использовали для входа в систему), прежде чем оно выгрузит вас, если вы попытаетесь войти в систему удаленно.
$ ssh gitlab@server
Welcome to GitLab, <your user's full name>!
Connection to <server> closed.
Никакое сообщение здесь, вероятно, не указывает, что ssh вообще не соединяет вас с gitlab.
Наконец, проверьте свою конфигурацию gitlab-shell (config.yml) и убедитесь, что:
http_settings:
# trailing slash is important
gitlab_url: "https://remote_server/"
ca_file: /path/to/webserver/certificate.crt
и в итоге:
self_signed_cert: false
У меня была такая же проблема, и после нескольких дней поиска в Google и поиска переполнения стека, я наконец нашел свою проблему. Я хотел связать это в письменном виде с Gitlab на тот случай, если у кого-то еще возникнет такая же проблема.
Я нашел свое решение здесь: https://stackoverflow.com/questions/17307154/git-bash-push-to-bitbucket-ignores-ssh-key
Я нахожусь на Windows, и проблема была в том, что Git Bash пытался получить местоположение SSH-ключа от plink.exe, который устанавливается вместе с Putty.
Решением было удалить переменную среды GIT_SSH. Тогда все заработало.
Надеюсь, это поможет кому-то там.