Gitlab tidak bekerja dengan Kunci SSH

10

Saya mengalami masalah dengan Gitlab. Saya menggunakan panduan berikut untuk menginstal dan mengkonfigurasi Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . Instalasi sepertinya berjalan dengan baik dan semua. Aplikasi web tampaknya berfungsi dengan baik. Namun saya tidak dapat mengkloning, menarik, mendorong, pada dasarnya saya pada dasarnya tidak dapat menggunakan Gitlab. Saya telah melihat 403 kesalahan dengan HTTP dan izin ditolak ketika mencoba untuk mengkloning SSH.

Saya telah memastikan kunci pribadi saya diatur dengan benar pada Windows dan OS X. Saya dapat melihat kunci publik di server. Saya menambahkan berikut ini ke file konfigurasi saya di ~ / .ssh.config

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

Ini yang saya lihat di / var / log / secure

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

The /var/log/messagetidak berperan ketika saya mencoba menggunakan git atau ssh

Saya tidak yakin ke mana harus pergi dari sini. Ada saran?

Saya tidak tahu apa yang Anda maksud dengan SSH menggunakan nama pengguna git. Panduan yang saya gunakan tidak membuat kata sandi untuk pengguna git dan menyatakan bahwa pengguna tidak dapat digunakan untuk masuk.

greyfox
sumber
Apakah Anda dapat SSH ke server Git sebagai pengguna 'git'? Bisakah Anda mencoba menambahkan parameter '-vvv' untuk mendapatkan output lebih lanjut tentang mengapa koneksi sedang ditutup? Mungkin juga bermanfaat memeriksa file / var / log / secure dan / var / log / messages untuk melihat apakah ada kesalahan di sana.
Sayang
Kunci publik tidak diatur pada klien - Anda perlu memastikan bahwa kunci pribadi Anda ada di klien Anda. Kunci publik masuk ke server.
EEAA
Diperbarui pertanyaan saya. Semoga itu membantu
greyfox

Jawaban:

10

Asalkan Anda telah memuat kunci pribadi Anda pada klien Anda, maka sepertinya ini mungkin menjadi masalah izin pada direktori home pengguna 'git' dan direktori .ssh.

Silakan coba ubah direktori / home / git Anda menjadi mask 0711:

chmod 0711 /home/git

Pastikan direktori /home/git/.ssh memiliki topeng 0700:

chmod 0700 /home/git/.ssh

Pastikan file /home/git/.ssh/authorized_keys memiliki mask 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Ganti / home / git dengan direktori home Anda untuk pengguna 'git', jika berbeda dalam tutorial. Jika ini bukan izin, silakan beri komentar dan kami akan melihat apa lagi masalahnya.

Ya ampun
sumber
Itu mungkin masalahnya. Saya tahu bisa mengkloning menggunakan git clone git @ {hostname}: {workspace} / {repository} di Mac saya. Sayangnya saya meninggalkan mesin Windows saya di tempat kerja sehingga saya harus mencobanya besok. Apakah otentikasi kunci publik / pribadi tidak berfungsi melalui HTTP dengan Gitlab? Saya mendapat kesan bahwa itulah cara Github bekerja tetapi saya bisa salah tentang itu.
greyfox
Otentikasi kunci publik / pribadi hanya berfungsi di atas SSH. Jika Anda menggunakan HTTP, Anda harus menggunakan nama pengguna dan kata sandi untuk melakukan apa saja. Jika Anda menggunakan versi baru Git, seperti v1.8, maka itu akan meminta Anda untuk nama pengguna dan kata sandi. Git versi yang lebih lama tidak melakukan ini, jadi Anda harus menambahkan nama pengguna dan kata sandi Anda di remote (mis. https://username:[email protected]/repo.git)
jaseeey
Ahhhh itu jauh lebih masuk akal sekarang. Jadi apakah aplikasi GitHub untuk Windows menyimpan kredensial? Terima kasih banyak atas bantuannya!
greyfox
Saya belum pernah menggunakan aplikasi GitHub Windows, tapi saya pikir dari memori itu diperlukan login ketika Anda membukanya, jadi saya akan mengatakan bahwa menyimpan kredensial akses untuk menghemat rasa sakit Anda memasukkannya sepanjang waktu.
jaseeey
1

Pastikan Anda hanya memiliki satu catatan untuk kunci publik Anda (yang diimpor melalui wajah web) /home/git/.ssh/authorized_keysdan kunci ini memiliki awalan dan judul gitlab. Dengan kata lain, jika Anda telah menambahkan kunci yang sama secara manual sebelum menginstal gitlab kemudian hapus.

sinm
sumber
Anda dapat memiliki beberapa kunci di sana dan Anda akan dapat masuk asalkan kunci pribadi Anda dapat cocok ...
jaseeey
@Jason, saya baru saja diedit untuk menjelaskan lebih tepatnya
sinm
Terima kasih, ini untukku. Saya telah memasukkan kunci ssh saya secara manual sebelum menggunakan Gitlab untuk menambahkan kunci dan kunci duplikat menyebabkan masalah.
6ft Dan
1

Saya juga merekomendasikan untuk memeriksa bahwa pengguna memiliki izin yang tepat untuk mengkloning / menarik / mendorong gitlab. Saya baru saja menghabiskan terlalu banyak waktu melihat melalui konfigurasi ssh / https, ketika alasan masalahnya adalah pengguna di gitlab tidak memiliki cukup izin ...

shtolik
sumber
1

Dalam situasi saya, saya menginstal gitlab melalui paket FreeBSD. Gitlab SSH tidak bekerja. Penyebabnya adalah direktori home yang salah untuk git: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

Saya mengubah ini menjadi:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh
gamecreature
sumber
1

Ini dapat terjadi jika host memiliki '-' dalam namanya. (Meskipun ini legal menurut RFC 952. )

ssh meminta saya untuk kata sandi untuk semua host yang kebetulan memiliki '-' dalam namanya. Ini tampaknya murni masalah dengan parsing file konfigurasi ssh karena menambahkan alias ke ~ / .ssh / config (dan menggunakan alias itu di url remote git saya) menyelesaikan masalah.

Dengan kata lain coba masukkan sesuatu seperti yang berikut ini di C Anda: / Users / {username} /. Ssh / config

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

dan di mana Anda memiliki formulir remote

origin  [email protected]:repo-name.git

hapus dan tambahkan kembali menggunakan formulir

origin  git@a:repo-name.git
SensorSmith
sumber
1

Jika Anda menggunakan variabel lingkungan untuk meneruskan kunci, Anda harus base64 menyandikannya, jika tidak mereka mungkin gagal dengan kesalahan meminta frasa sandi Anda. Ini berarti bahwa kuncinya rusak. Jika kamu melihat:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

Kemudian base64 mengkodekan variabel SSH_PRIVATE_KEY. Jika Anda menggunakan OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

akan menyandikannya dan menyalinnya ke clipboard Anda. Sekarang, ubah baris skrip .gitlab-ci.yml menjadi

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
Jonathan Wilkins
sumber
0

Menjalankan eval $(ssh-agent)memperbaiki masalah saya.

michalzuber
sumber
0

Masalah saya adalah file kunci pribadi id_rsa dibuat dan disimpan oleh puttygen memiliki format yang berbeda dari yang dibuat dari mesin ubuntu. Setelah saya membuat kunci pasangan dari mesin ubuntu, salin file-file ini kembali ke mesin Windows di bawah folder% UserProfile% .ssh, kemudian tambahkan kunci publik yang baru dihasilkan ke Gitlab. Tidak ada lagi Izin yang Ditolak untuk saya

Quang Le
sumber