Saya mencoba men-setup gitlab (6.5.1) pada server bersih yang baru. Semuanya tampak berfungsi, tetapi git tidak dapat mendorong ke proyek apa pun. Mengikuti perintah dari halaman proyek yang baru dibuat dan mendorong ke remote melalui ssh memberi:
$ 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.
Ini tampaknya menjadi masalah yang cukup umum. Sayangnya itu tampaknya memiliki sejumlah penyebab potensial dan tidak satupun dari mereka yang cocok. Dari terbitan 3424 tentang rilis lama dan berbagai sumber online lainnya, saya telah melihat dan memeriksa saran-saran berikut:
Tombol sisa ssh
Ini adalah pengaturan yang bersih tanpa sisa. Kunci saya ditambahkan ke file kunci yang diotorisasi dengan benar dan merupakan satu-satunya yang terdaftar.
Menjalankan ssh dengan debug logging menunjukkan kesalahan yang terkait dengan vars lingkungan Ruby.
Milik saya muncul bersih. Debug SSH menunjukkan koneksi yang berhasil. Segala sesuatu tentang handshaking otentikasi adalah normal, maka ini adalah akhir dari output:
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 [email protected] reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK
Masalah dengan lingkungan gitlab-shell.
Tidak seperti banyak orang lain dengan pesan kesalahan yang sama di atas, skrip cek gitlab-shell saya mengembalikan tagihan kesehatan yang bersih:
% 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
Mulai ulang {unicorn, sidekiq, redis}
Laporan yang memulai kembali satu atau lebih layanan membersihkannya sepertinya tidak berlaku di sini. Ini bukan masalah yang terputus-putus yang merilis perbaikan daemon.
Repo itu tidak dibuat secara fisik
Tapi itu benar. Pertama kali setiap kali, repo telanjang
~gitlab/repositories/username/reponame.git
itu dibuat setiap kali dan tampaknya memiliki izin yang benar.Gitlab-shell tidak dapat berbicara dengan server API karena A) masalah DNS, B) salah ip / port / antarmuka mengikat C) tidak memiliki / memiliki garis miring.
Skrip cek mengatakan akses API baik-baik saja.
Saya tidak menjalankan nginx, jadi masalah pengikatan ip default yang terkait adalah n / a.
Saya sudah mencoba keduanya
*:8080
dan127.0.0.1:8080
untuk nilai mendengarkan diunicorn.yml
.Selain itu, saya telah mencoba berbagai iterasi localhost, 127.0.0.1 dan nama domain yang sepenuhnya memenuhi syarat (yang merupakan DNS resolving fine) dengan dan tanpa membuntuti garis miring
shell.yml
tanpa hasil. Saya juga telah mencoba menghubungkan kabel ini langsung ke server unicorn pada port 8080 alih-alih Apache SSL / host proxy pada port 80. Sepertinya tidak ada bedanya. Sertifikat saya tidak ditandatangani sendiri dan berfungsi dengan baik untuk browser, tetapi sayaself_signed_cert: true
tetap mencoba pengaturannya . Tidak ada.Jalur git yang dilaporkan salah, tambahkan jalur yang sepenuhnya memenuhi syarat dari rumah pengguna gitlab.
Ini sepertinya saran sah jika gitlab-shell tidak melakukan beberapa bisnis monyet untuk memperbaikinya, tetapi saya mencoba mengubah
git remote add origin gitlab@server:username/reponame.git
ke `` git remote add origin gitlab @ server: repositori / nama pengguna / reponame.git` tetapi tidak berhasil. Kesalahan yang sama.
Ini tampaknya merupakan solusi yang disarankan, tetapi tidak ada yang tampak benar. Catatan saya dapat mendorong http. Permintaan login menerima nama pengguna dan kata sandi ldap saya dan menerima dorongan. Ini hanya masalah saat mencoba menggunakan SSH. Menguji hanya bagian login ssh dengan ssh -T gitlab@server
berfungsi dengan baik.
Apa lagi yang bisa menyebabkan kesalahan ini?
Bagaimana cara men-debug masalah seperti itu di gitlab? Sepertinya tidak ada yang relevan sama sekali di ~gitlab/gitlab-shell/gitlab-shell.log
. Di mana pesan kesalahan yang lebih informatif ditemukan?
sumber
Jawaban:
Saya cukup yakin Anda memiliki masalah konfigurasi antara SSH dan sistem karena pesan debug SSH ini:
Anda menerima pesan ini segera setelah otentikasi berhasil dan tidak ada pesan dari bash yang berarti tidak ada program yang diluncurkan setelah login.
Tonton file passwd Anda jika Anda memiliki pengaturan yang tepat untuk pengguna gitlab:
Verifikasi bash tidak memiliki hal aneh di file konfigurasi seperti
Kemudian naik ke tingkat atas: Gitlab-shell Verifikasi /path/to/gitlab/.ssh/authorized_keys memiliki konfigurasi di bawah ini:
dengan / path / ke / gitlab / gitlab-shell / bin / gitlab-shell yang dimiliki oleh pengguna gitlab dan dapat dieksekusi.
Anda dapat memastikan gitlab-shell beroperasi penuh dengan meluncurkan perintah:
Jika login jarak jauh benar-benar berfungsi dan terhubung dengan benar ke gitlab-shell, Anda harus mendapatkan pesan sambutan yang sama (tetapi cocok dengan pengguna yang memiliki kunci ssh yang Anda gunakan untuk masuk) sebelum ia membuang Anda jika Anda mencoba masuk dari jarak jauh.
Tidak ada pesan di sini yang mungkin menunjukkan ssh sama sekali tidak menghubungkan Anda ke gitlab.
Terakhir, checkout konfigurasi gitlab-shell Anda (config.yml) dan verifikasi jika:
dan akhirnya :
sumber
/bin/false
. Baik paket Arch tidak mengatur shell saat menambahkan pengguna itu atau saya memecahkannya di suatu tempat dalam proses menerapkan otentikasi ldap pada sistem ini. Terima kasih untuk semua usahanya.sudo adduser --disabled-login --gecos 'GitLab' git
. Jadi itu harus bekerja tanpa cangkang. Saya masih mencari solusi lain.Saya memiliki masalah yang sama dan setelah beberapa hari Googling dan mencari Stack Overflow akhirnya saya menemukan masalah saya. Saya ingin menghubungkan ini secara tertulis ke Gitlab kalau-kalau ada orang lain yang memiliki masalah yang sama.
Saya menemukan solusi saya di sini: /programming/17307154/git-bash-push-to-bitbucket-ignores-ssh-key
Saya di Windows dan masalahnya adalah Git Bash sedang mencoba untuk mendapatkan lokasi kunci SSH dari plink.exe, yang diinstal dengan Putty.
Solusinya adalah menghapus variabel lingkungan GIT_SSH. Kemudian semuanya bekerja.
Semoga ini bisa membantu seseorang di luar sana.
sumber