Gitlab deposuna erişimi hangi “erişim hakları” engelleyebilir?


14

Taze temiz bir sunucuda gitlab (6.5.1) kurmaya çalışıyorum. Her şey çalışıyor gibi görünüyor, ama git herhangi bir projeye zorlayamıyor. Yeni oluşturulan proje sayfasındaki komutları takip etmek ve ssh ile uzaktan kumandaya geçmek:

$ 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.

Bu oldukça yaygın bir sorun gibi görünüyor. Maalesef bir takım potansiyel nedenleri var gibi görünüyor ve hiçbiri eşleşmiyor gibi görünüyor. Gönderen konuyla 3424 çevrimiçi eski sürüm ve diğer çeşitli kaynaklardan üzerinde gördüğüm ve aşağıdaki önerileri kontrol ettim:

  • Artık ssh tuşları

    Bu artıklar olmadan temiz bir kurulum. Anahtarım yetkili anahtarlar dosyasına düzgün bir şekilde eklendi ve listelenen tek anahtar.

  • Hata ayıklama günlüğü ile ssh çalıştırmak Ruby çevre değişkenleri ile ilgili hataları gösterir.

    Benimki temiz çıkıyor. SSH hata ayıklaması başarılı bir bağlantı gösteriyor . Kimlik doğrulama el sıkışması ile ilgili her şey normaldir, o zaman bu çıktının sonu:

    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 ortamıyla ilgili sorunlar.

    Yukarıda aynı hata mesajına sahip diğer birçok programın aksine, gitlab-shell check komut dosyam temiz bir sağlık faturası döndürüyor:

    % 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
    
  • {Unicorn, sidekiq, redis} yeniden başlatın

    Bir veya daha fazla hizmeti yeniden başlatmanın raporları temizlediği raporlar burada geçerli görünmüyor. Bu, bir daemon'u düzeltmenin aralıklı bir sorunu değildir.

  • Depo fiziksel olarak oluşturulmuyor

    Ama bu. Her seferinde ilk kez, çıplak git repo ~gitlab/repositories/username/reponame.gither seferinde oluşturuluyor ve doğru izinlere sahip gibi görünüyor.

  • Gitlab-shell API sunucusuyla konuşamaz çünkü A) DNS sorunları, B) yanlış ip / port / arayüz bağlaması C) sondaki eğik çizgiye sahip değil / sahip değil.

    Kontrol komut dosyası API erişiminin iyi olduğunu söylüyor.

    Ben nginx, bu yüzden ilgili varsayılan ip bağlama sorunu n / a çalıştırmıyorum.

    İkisini de denedim *:8080ve 127.0.0.1:8080dinleme değeri için unicorn.yml.

    Bunun ötesinde, localhost, 127.0.0.1 ve tam etki alanı adı (DNS çözümleme para cezası) çeşitli yinelemeleri shell.ymlboşuna eğik çizgi ile ve olmadan izledi denedim . Ayrıca bu doğrudan bağlantı noktası 80 Apache SSL / proxy ana bilgisayar yerine 8080 bağlantı noktası tek boynuzlu at sunucuya kablolama denedim. Hiçbir şey herhangi bir fark yapmak gibi görünüyor. Sertifikam kendinden imzalı değil ve tarayıcılar için iyi çalışıyor, ancak self_signed_cert: trueyine de ayarlamayı denedim . Hiçbir şey değil.

  • Bildirilen git yolları yanlış, gitlab kullanıcı ana sayfasından tam nitelikli yol ekleyin.

    Gitlab kabuğu zaten düzeltmek için bazı maymun işi yapmıyorsa bu yasal bir öneri gibi görünüyor, ancak git remote add origin gitlab@server:username/reponame.gitboşuna `` git remote add origin gitlab @ server: repositories / username / reponame.git '' olarak değiştirmeyi denedim . Aynı hata.

Bu önerilen çözümlerin yalancı gibi görünüyor, ancak hiçbiri doğru görünmüyor. Ben Not am güçlü http üzerinden itmek. Giriş istemi ldap kullanıcı adımı ve şifremi kabul ediyor ve bir push kabul ediyor. Bu sadece SSH kullanmaya çalışan bir sorundur. Sadece ssh giriş bölümünü test etmek ssh -T gitlab@serveriyi çalışıyor.

Bu hataya başka ne neden olabilir?

Gitlab'da böyle bir sorunun ayıklanması nasıl yapılır? Hiç alakalı bir şey yok gibi görünüyor ~gitlab/gitlab-shell/gitlab-shell.log. Daha bilgilendirici bir hata mesajı nerede bulunur?


Çıktısı nedir: "ssh -vv gitlab @ server" ??
DrGkill

@DrGkill İlginç bir şey yok (gözlerim için), kendiniz görün .
Caleb

Harici giriş için gitlab'a izin verilip verilmediğini sshd_config dosyasında bulabilirsiniz. 2 olası suçlu söyleyebilirim: SSH veya gitlab-shell. Auth.log gitlab bağlanırken ne diyor?
DrGkill

@DrGkill Bunu kontrol ettim (ve sshd veya pam tarafından harici girişe izin verilmezse, yukarıda gösterdiğim günlükler başarılı bir kimlik doğrulama bildirimi göstermezdi). SSH iyi bağlanıyor. Sunucu tarafı günlükleri, başarılı bir kimlik doğrulaması, bir oturumun açıldığını, kullanıcı env'sinin ayarlanmasıyla ilgili bazı sistemd öğelerini, ardından "<uzak ip> ile bağlantıyı kesildi" ve oturumu temizleme hakkında daha fazla bilgi gösterir.
Caleb

Yanıtlar:


7

Bu SSH hata ayıklama iletisi nedeniyle SSH ve sistem arasında bir yapılandırma sorununuz olduğundan eminim:

client_input_channel_req: channel 0 rtype eow@openssh.com reply 0

Bu iletiyi başarılı bir kimlik doğrulamasından hemen sonra alırsınız ve bash'den gelen bir ileti olmaz, bu da oturum açtıktan sonra programın başlatılmadığı anlamına gelir.

Gitlab kullanıcısı için doğru ayarlara sahipseniz passwd dosyanızda izleyin:

gitlab:x:1011:1012:GitLab,,,:/path/to/gitlab:/bin/bash

Bash gibi yapılandırma dosyalarında garip bir şey olmadığını doğrulayın

  • bash.bashrc
  • .profil
  • Bashrc

Ardından daha üst seviyeye çıkın: Gitlab-shell /path/to/gitlab/.ssh/authorized_keys öğesinin aşağıdaki yapılandırmaya sahip olduğunu doğrulayın :

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...

ile / / etmek / gitlab / gitlab-kabuk / bin / gitlab kabuğu yolu gitlab kullanıcı ve çalıştırılabilir tarafından sahip olunan.

Gitlab-shell komutunun tamamen çalıştığından emin olabilirsiniz:

# /path/to/gitlab-shell/bin/gitlab-shell
Welcome to GitLab, Anonymous!

Uzaktan oturum açma gerçekten çalışıyor ve gitlab kabuğuna doğru bir şekilde bağlıysa, uzaktan oturum açmayı denediğinizde sizi terk etmeden önce aynı hoş geldiniz mesajını almalısınız (ancak ssh anahtarını kullandığınız kullanıcıyla eşleştirilmelidir).

$ ssh gitlab@server
Welcome to GitLab, <your user's full name>!
Connection to <server> closed.

Buradaki hiçbir mesaj muhtemelen ssh'nin sizi gitlab'e bağlamadığını gösterir.

Son olarak, gitlab-shell yapılandırmanızı (config.yml) kontrol edin ve şunları doğrulayın:

http_settings:
    # trailing slash is important
    gitlab_url: "https://remote_server/"
    ca_file: /path/to/webserver/certificate.crt

ve sonunda:

    self_signed_cert: false

Hamuru. <head-desk> Baştan beri doğru yoldaydınız. Gitlab kullanıcısı atanıyordu /bin/false. Arch paketi bu kullanıcıyı eklerken kabuğu doğru ayarlamıyor veya bu sistemde ldap kimlik doğrulaması uygulama sürecinde bir yeri kırdım. Tüm çaba için teşekkürler.
Caleb

cevap için ty, hata ayıklama bana yardımcı oldu. Başka bir sorun, ssh anahtar iletmeyi etkinleştirdiğinizde, gitlab'a sizi tanımlayamayan yanlış anahtarı gönderirsiniz. Gitlab içine ssh zaman da Anonim Hoşgeldiniz alacak. Ssh -a ile jumpserver üzerinde sadece devre dışı bırakma tuşu yönlendirme
tommics

Caleb ile aynı problemi yaşadım ve kendi başıma da çalışmasını sağlamak için / bin / {false, true, nologin} yerine bir kabuk ayarlaması gerektiğini buldum. Ancak aslında kullanıcı kurulum sırasında bilerek kabuksuz oluşturulur (bakınız: gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/… ) sudo adduser --disabled-login --gecos 'GitLab' git. Bu yüzden bir kabuk olmadan çalışması gerekir. Hala başka bir çözüm arıyorum.
Huygens

0

Ben de aynı sorunu vardı ve Googling ve Stack Overflow arama gün sonra nihayet benim sorun buldum. Başkasının da aynı sorunu yaşaması durumunda bunu yazılı olarak Gitlab'a bağlamak istedim.

Çözümümü burada buldum: /programming/17307154/git-bash-push-to-bitbucket-ignores-ssh-key

Windows'tayım ve sorun, Git Bash'in SSH anahtar konumunu Putty ile yüklü plink.exe'den almaya çalışıyordu.

Çözüm, GIT_SSH ortam değişkenini silmekti. Sonra her şey işe yaradı.

Umarım bu birisine yardım eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.