Masalah saya adalah saya tidak dapat mendorong atau mengambil dari GitLab. Namun, saya dapat mengkloning (melalui HTTP atau melalui SSH). Saya mendapatkan kesalahan ini saat mencoba mendorong:
Izin ditolak (publickey) fatal: Tidak dapat membaca dari repositori jarak jauh
Dari semua utas yang saya lihat, inilah yang telah saya lakukan:
- Siapkan kunci SSH di komputer saya dan tambahkan kunci publik ke GitLab
- Selesai config --global untuk nama pengguna dan email
- Dikloning melalui SSH dan melalui HTTP untuk memeriksa apakah itu akan menyelesaikan masalah
- Selesai perintah ssh -T [email protected]
Jika Anda memiliki wawasan tentang cara menyelesaikan masalah saya, itu akan sangat kami hargai.
ssh -vvvv [email protected]
untuk melihat apakah ia mengambil kunci SSHsudo git clone [email protected]:project/somethiing.git
, jika tidak ssh akan mencari/root/.ssh
alih-alih kunci yang Anda unggah~/.ssh/id_rsa
Jawaban:
Saya menemukan ini setelah banyak mencari. Ini akan bekerja dengan baik untuk saya.
ssh-keygen
.ssh
folder.id_rsa.pub
. Buka di notepad. Salin semua teks darinya.Sekarang cobalah dan itu akan berhasil dengan pasti.
sumber
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
(dengan-path jika tidak di rsa dir) setelah mengikuti langkahLangkah 1: Menambahkan file konfigurasi di
~/.ssh/config
file yang terlihat sepertiLangkah 2: Cukup kloning git repo TANPA sudo.
Dokumentasi: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
sumber
id_rsa_gitlab
dalam contoh Fedo, Anda perlu menyediakan file konfigurasi. Artikel bagus Gitlab tentang masalah ini: gitlab.com/help/ssh/…Hostname
untukHost
membuat ini bekerjaSaya pikir solusi sederhananya adalah menambahkan kunci pribadi ke agen otentikasi (jika kunci Anda tidak
~/.ssh/id_rsa
),Anda pada dasarnya membiarkan yang
ssh-agent
mengurusnya.Selain itu, Anda dapat menambahkannya secara permanen .
sumber
.pub
ekstensi.Dalam kasus saya itu tidak berfungsi di WSL (Windows Subsystem for Linux).
Ketika saya memulai WSL, saya harus melakukannya
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Sekarang koneksi berfungsi.
Kita bisa mengujinya dengan
ssh -T [email protected]
catatan:
sumber
pastikan Anda tidak berjalan
sudo git clone [email protected]:project/somethiing.git
, jika tidak ssh akan mencari/root/.ssh
alih-alih kunci yang Anda unggah~/.ssh/id_rsa
sumber
Ada solusi yang sangat sederhana untuk ini: alih-alih bekerja dengan ssh - pindah ke https. untuk melakukan ini: di folder proyek Anda, Anda memiliki folder .git di sana - Anda memiliki file konfigurasi - buka di editor teks dan ubah baris
untuk
sumber
jika Anda menggunakan Linux atau macox, coba ini di terminal:
jika tidak mengembalikan apa-apa, coba ini:
itu harus membuat identitas di ~ / .ssh / id_rsa
setelah coba lagi:
itu harus mengembalikan identitas Anda, jadi setelah mencoba lagi untuk mengkloning, itu harus berfungsi
NB: jangan lupa menambahkan kunci ssh Anda di gitlab profil Anda
Terima kasih
sumber
Dalam kasus saya, itu bukan masalah gitlab, tetapi konfigurasi sshd. Server ssh tidak mengizinkan koneksi kecuali untuk daftar pengguna. Pengguna git, yang terhubung dari jarak jauh ke gitlab, tidak ada dalam daftar itu. Jadi, periksa ini sebelum hal lain.
Anda dapat memeriksa konfigurasi server ssh Anda di
/etc/ssh/sshd_config
. Jika Anda memiliki baris dengan opsiAllowUsers
, tambahkan git ke dalamnya:sumber
Saya menjalankan gitlab dengan buruh pelabuhan, inilah yang saya lakukan untuk memperbaiki masalah saya.
Menemukan bahwa di dalam docker / var / log / gitlab / sshd / current ada beberapa kemunculan pesan:
Setelah itu saya mengubah kepemilikan file itu dari 99: pengguna menjadi git: pengguna dengan:
sumber
Langkah-langkah yang harus dilakukan, mendapat kesalahan yang sama tetapi saya memperbaikinya. Gitlab menginginkan ssh-rsa jadi di bawah ini adalah kode untuk menjalankan ssh untuk rsa
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] adalah email akun gitlab Anda
Ini akan meminta Anda untuk masuk jadi tekan saja Enter setelah kode di bawah ini diminta,
Masukkan file untuk menyimpan kunci (/home/yourDesktopName/.ssh/id_rsa):
Ini akan meminta Anda lagi untuk masuk jadi tekan saja Enter setelah kode di bawah ini diminta,
Masukkan frasa sandi (kosongkan jika tidak ada frasa sandi):
Ini akan meminta lagi untuk yang terakhir Anda masuk jadi tekan saja Enter setelah kode di bawah ini diminta,
Masukkan lagi frasa sandi yang sama:
Anda akan menunjukkan hasil ssh-rsa Anda.
Login ke akun Gitlab Anda dan Pergi ke navbar kanan Anda akan mendapatkan pengaturan dan di sidebar kiri Anda akan mendapatkan kunci ssh. Masuk ke dalamnya.
Lihat di atas prompt yang meminta Anda untuk masuk, Anda akan mendapatkan jalur ssh-rsa.
Buka folder SSH Anda dan dapatkan id_rsa.pub
Buka dan dapatkan kuncinya dan Salin Tempel ke Gitlab dan Anda hampir selesai.
Diperiksa oleh:
ssh -T [email protected]
Kamu akan mendapatkan:
Welcome to GitLab, @joy4!
Selesai.
sumber
Sebelumnya sangat sulit bagi saya tetapi ketika saya mencobanya menjadi sangat mudah untuk menambahkan kunci ssh di Mac dan Linux. Ada beberapa langkah dan perintah untuk melakukan ini sebagai berikut:
Jalankan perintah
ssh-keygen
di terminal itu dan masukkan hingga gambar randomart kunci muncul di sana.Kemudian masukkan satu perintah lagi di terminal itu:
Ini akan menghasilkan kunci ssh Anda. Kunci akan dimulai dengan
ssh-rsa
dan diakhiri dengan.local
.ssh key
bagian dan tempel di sana. Klik padaAdd
tombol ini akan berfungsi.sumber
Saya memiliki masalah yang sama, saya menyelesaikannya dengan menambahkan kunci ssh baru:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
dalam kasus saya di Linux)settings=>ssh
kunci dan lewati kunci barusumber
Masukkan jalur yang ingin Anda simpan (Mis: my-pc / Desktop / .ssh / ed25519)
Tambahkan kunci publik ke gitlab Anda ( Cara menambahkan kunci ssh ke gitlab )
sumber
Dua hal utama
Anda harus memiliki id_rsa.pub dan id_rsa (private) key di folder .ssh Anda (yang seharusnya ada di home folder Anda, buatlah jika tidak ada, taruh kunci Anda). Ini tidak akan berhasil Jika Anda menamai file kunci Anda secara berbeda
Ubah izin id_rsa sebagai chmod 400 ~ / .ssh / id_rsa
sumber
Masalah lain yang dapat menyebabkan perilaku ini adalah saat Anda memiliki penyetelan dengan 2 kemungkinan% HOME% -lokasi.
Saya menggunakan PC tempat beberapa dokumen saya disimpan secara lokal, dan beberapa di antaranya disimpan di drive jaringan. Beberapa aplikasi menganggapnya milik
C:\Users\<MyUserName>\
saya%home%
, yang lain menganggapnyaU:\
sebagai rumah.Ternyata
ssh-keygen
meletakkan kunci pribadi saya di bawahC:\users\<MyUserName>\
, dan itussh -T
danssh -v
juga lihat di sana.Jadi semuanya tampaknya berfungsi dengan baik, kecuali itu
git clone
,git push
dan yang lain mencari kuncinyaU:\
. Yang gagal, jadi saya mendapatkan kesalahan yang disebutkan di atas.Perlu waktu satu jam untuk mengetahuinya, tetapi pada akhirnya solusinya sederhana: Saya menyalin semuanya dari
C:\Users\<MyUserName>\.ssh
hinggaU:\.ssh
sumber
Saya menyelesaikannya seperti ini ..
Menghasilkan kunci untuk Windows menggunakan perintah ini:
tetapi masalahnya adalah setelah menjalankan perintah ini, muncul baris: "Masukkan file untuk menyimpan kunci (/c/Users/xxx/.ssh/id_rsa):" Di sini, saya hanya memberikan nama file karena itu kunci saya disimpan di pwd saya dan bukan di lokasi yang diberikan. Ketika saya melakukan "git clone", itu mengasumsikan kunci berada di lokasi "/c/Users/xxx/.ssh/id_rsa" tetapi tidak ditemukan, oleh karena itu terjadi kesalahan.
Pada saat pembuatan 2 file kunci dibuat, katakanlah "file1" & "file1.pub". Saya mengganti nama kedua file ini menjadi
dan
dan ditempatkan keduanya di lokasi
"/c/Users/xxx/.ssh/"
sumber
Pergi ke terminal dan buat ulang kunci ssh lagi. Tipe
ssh-keygen
. Ini akan menanyakan Anda di mana Anda ingin menyimpannya, ketik jalurnya.Kemudian salin kunci publik ke platform gitlabs. Biasanya dimulai dengan ssh-rsa.
sumber
Masalahnya bagi saya adalah, saya beralih
UsePAM
dariyes
keno
di file konfigurasi SSH di bawah/etc/ssh/sshd_config
. DenganUsePAM yes
semuanya bekerja dengan sempurna.sumber
Saya menemukan solusinya di bantuan gitlab .
Saya harap ini dapat membantu sebagian dari Anda!
sumber
Bagaimana cara menambahkan kunci SSH ke akun gitlab di ubuntu?
Kunci SSH akan muncul. Salin itu dan
Buka akun gitlab Anda.
SSH-Key akan ditambahkan!
(NB jika Anda telah Menghasilkan Kunci SSH Pratinjau dan Mendapatkan izin ditolak (kunci publik). Anda Hapus Kunci ssh Pratinjau Anda dan Buat yang baru dan tambahkan git nama pengguna dan email di terminal Anda)
sumber
Saya memecahkan
[email protected]: Permission denied (publickey)
masalah menggunakan instruksi berikutcat ~/.ssh/id_rsa.pub
id_rsa.pub
(kunci publik) ke getlab `Setting -> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(kunci pribadi) ke `Code_repo-> git_auth-> id_rsaCATATAN: Jaga pengguna mesin jika Anda menggunakan
root
pengguna di DockerFile atau di mana pun, lalu gunakansudo su
sebelum menjalankan perintah di atas untuk mendapatkan kunci publik dan pribadi pengguna root.sumber
Dalam kasus kami, ini bukanlah masalah di sisi pengguna / klien, tetapi di sisi server Gitlab.
Kami menjalankan instans Gitlab CE 12.9 lokal di CentOS 7.1.
Kami menemukan bahwa di server, file .ssh / authorized_keys tidak diperbarui dengan benar. Pengguna membuat kunci SSH mereka (mengikuti Gitlab panduan) dan menambahkannya ke server Gitlab, tetapi server tidak memperbarui authorized_keys , sehingga akan selalu mengakibatkan izin ditolak kesalahan.
Solusinya adalah dengan membangun kembali file authorized_keys dengan menjalankan:
Itu akan bekerja untuk siapa saja yang menambahkan kunci mereka sebelum menjalankan tugas rake. Untuk pengguna berikutnya yang akan menambahkan kunci mereka, seseorang harus menjalankan tugas rake lagi secara manual.
Solusi yang lebih permanen adalah dengan tidak menggunakan file authorized_keys dan sebagai gantinya menggunakan pencarian terindeks di database Gitlab :
Secara default (baik default pada instalasi kami), file Write to authorized_keys diperiksa di Area Admin> pengaturan Optimasi Kinerja . Jadi kami menghapus centang itu dan menggunakan database Gitlab sebagai gantinya.
Setelah menyiapkan pencarian terindeks dan menghapus centang pada file Write to authorized_keys , akses SSH menjadi OK.
sumber
Untuk siapa saja yang menggunakan Windows 10 dan tidak ada yang berfungsi untuknya:
Dalam kasus saya, saya harus mengkloning repo dengan https, bukan ssh dan sebuah jendela muncul meminta kredensial saya. Setelah itu semuanya bekerja dengan baik.
sumber
Saya tahu, saya menjawab ini sangat terlambat dan bahkan StackOverflow mengonfirmasi jika saya benar-benar ingin menjawab. Saya menjawab karena tidak ada yang benar-benar menggambarkan masalah yang sebenarnya sehingga ingin berbagi hal yang sama.
Dasar
Pertama, pahami apa itu remote disini. Remote adalah GitLab dan sistem Anda adalah lokal, jadi ketika kita berbicara tentang remote
origin
, URL apa pun yang disetel dalamgit remote -v
output Anda adalah URL jarak jauh Anda.Protokol
Pada dasarnya, Git clone / push / pull bekerja pada dua protokol yang berbeda (ada juga yang lain) -
Ketika Anda mengkloning repo (atau mengubah URL jarak jauh) dan menggunakan URL HTTPs seperti https://gitlab.com/wizpanda/backend-app.git maka itu menggunakan protokol pertama yaitu protokol HTTP.
Sedangkan jika Anda mengkloning repo (atau mengubah remote URL) dan menggunakan URL like
[email protected]:wizpanda/backend-app.git
maka menggunakan protokol SSH.Protokol HTTP
Dalam protokol ini, setiap operasi jarak jauh yaitu clone, push & pull menggunakan otentikasi sederhana yaitu nama pengguna & kata sandi dari remote Anda (GitLab dalam hal ini) yang berarti untuk setiap operasi, Anda harus mengetikkan nama pengguna & kata sandi Anda yang mungkin merepotkan .
Jadi ketika Anda push / pull / clone, GitLab / GitHub mengotentikasi Anda dengan nama pengguna & kata sandi Anda dan memungkinkan Anda untuk melakukan operasi.
Jika Anda ingin mencoba ini, Anda dapat beralih ke HTTP URL dengan menjalankan perintah
git remote set-url origin <http-git-url>
.Untuk menghindari kasus tersebut, Anda dapat menggunakan protokol SSH.
Protokol SSH
Koneksi SSH sederhana berfungsi pada pasangan kunci publik-pribadi. Jadi dalam kasus Anda, GitLab tidak dapat mengautentikasi Anda karena Anda menggunakan URL SSH untuk berkomunikasi. Sekarang, GitLab harus mengenal Anda dengan cara tertentu. Untuk itu, Anda harus membuat pasangan kunci publik-pribadi dan memberikan kunci publik ke GitLab.
Sekarang ketika Anda mendorong / menarik / mengkloning dengan GitLab, GIT (SSH secara internal) akan secara default menawarkan kunci pribadi Anda ke GitLab dan mengkonfirmasi identitas Anda dan kemudian GitLab akan memungkinkan Anda untuk melakukan operasi.
Jadi saya tidak akan mengulangi langkah-langkah yang telah diberikan oleh Muhammad, saya akan mengulanginya secara teoritis.
~/.ssh
bernamaid_rsa.pub
(kunci publik) &id_rsa
(kunci pribadi).Tips
Anda harus selalu membuat kunci rsa yang kuat dengan setidaknya 2048 byte. Jadi perintahnya bisa
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Pikiran umum
Kedua pendekatan tersebut memiliki pro & kontra. Setelah saya mengetik teks di atas, saya mencari lebih banyak tentang ini karena saya tidak pernah membaca sesuatu tentang ini.
Saya menemukan dokumen resmi ini https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols yang menceritakan lebih banyak tentang ini. Maksud saya di sini adalah, dengan membaca kesalahan dan memikirkan kesalahan tersebut, Anda dapat membuat teori atau pemahaman Anda sendiri dan kemudian dapat mencocokkan dengan beberapa hasil Google untuk memperbaiki masalah tersebut :)
sumber
Saya menambahkan saya
~/.ssh/id_rsa.pub
ke daftar Kunci SSH yang diketahui di pengaturan GitLab saya https://gitlab.com/profile/keys . Itu memecahkan masalah saya. :-)sumber
Saya menggunakan ubuntu 18.04, dan itu sebenarnya masalah izin di mesin lokal saya. Masalahnya hilang saat saya menyetel izin baca / tulis ke folder .git saya.
sumber
Yah saya punya masalah yang sama dan setelah mencoba jawaban yang diajukan @Kk. Namun, saya hanya dapat membuatnya berfungsi dengan hanya mengubah url asal di file .git / config ke alamat https: https://gitlab.com/mygitlabusername/mygitproject.git
Karena akses melalui ssh ditolak, saya pikir menggunakan https seharusnya tidak menjadi masalah. Namun itu akan meminta nama pengguna dan kata sandi Anda untuk setiap push ke di repositori
sumber
Silakan gunakan
git config credential.helper store
jika situs Anda menggunakan TLS / SSL. Semoga ini berhasilsumber
Tampaknya ada perbedaan antara dua cara untuk mengakses repositori git yaitu menggunakan SSH atau HTTPS. Bagi saya, saya mengalami kesalahan karena saya mencoba mendorong repositori lokal saya menggunakan SSH.
Masalah ini dapat diselesaikan dengan mudah dengan mengklik tombol klon di halaman landing proyek Anda dan menyalin link HTTPS dan menggantinya ke link SSH yang muncul dengan format "git @ gitlab ...".
sumber
Ubah izin :: chmod 400 ~ / .ssh / id_rsa Ini membantu saya.
sumber