Saya mencoba untuk terhubung ke repositori Git jarak jauh yang berada di server web saya dan mengkloningnya ke mesin saya.
Saya menggunakan format berikut untuk perintah saya:
git clone ssh://[email protected]/repository.git
Ini bekerja dengan baik untuk sebagian besar anggota tim saya. Biasanya setelah menjalankan perintah ini Git akan meminta kata sandi pengguna, dan kemudian menjalankan kloning. Namun, ketika berjalan di salah satu mesin saya, saya mendapatkan kesalahan berikut:
Verifikasi kunci host gagal.
fatal: Tidak bisa membaca dari repositori jarak jauh.
Kami tidak menggunakan kunci SSH untuk terhubung ke repositori ini, jadi saya tidak yakin mengapa Git memeriksa satu di mesin khusus ini.
ssh://
Jawaban:
Anda terhubung melalui protokol SSH, seperti yang ditunjukkan oleh
ssh://
awalan pada URL klon Anda. Menggunakan SSH, setiap host memiliki kunci. Klien mengingat kunci host yang terkait dengan alamat tertentu dan menolak untuk terhubung jika kunci host tampak berubah. Ini mencegah pria dalam serangan tengah.Kunci host untuk domain.com telah berubah. Jika ini tidak mencurigakan bagi Anda , hapus kunci lama dari cache lokal Anda dengan mengedit
${HOME}/.ssh/known_hosts
untuk menghapus baris untuk domain.com atau membiarkan utilitas SSH melakukannya untuk Anda denganDari sini, rekam kunci yang diperbarui dengan melakukannya sendiri
atau, sama, biarkan
ssh
melakukannya untuk Anda saat Anda terhubung dengangit fetch
,git pull
ataugit push
(atau bahkan ol polos'ssh domain.com
) dengan menjawab ya ketika dimintaAlasan untuk prompt ini adalah domain.com tidak lagi ada di dalam Anda
known_hosts
setelah menghapusnya dan mungkin tidak ada dalam sistem/etc/ssh/ssh_known_hosts
, jadissh
tidak ada cara untuk mengetahui apakah host di ujung koneksi itu benar-benar domain.com. (Jika kunci yang salah ada/etc
, seseorang dengan hak administratif harus memperbarui file seluruh sistem.)Saya sangat menyarankan Anda untuk mempertimbangkan meminta pengguna mengotentikasi dengan kunci. Dengan begitu,
ssh-agent
dapat menyimpan materi utama untuk kenyamanan (daripada setiap orang harus memasukkan kata sandi untuk setiap koneksi ke server), dan kata sandi tidak melalui jaringan.sumber
sudo ssh-keygen -R domain.com
dapat mengubah namaknown_hosts
file yang ada menjadiknown_hosts.old
, dan membuat salinan yang hanya dapat dibaca oleh root . (-rw------- root root
) Anda dapat dengan mudahchown
mengembalikan ini ke pengguna yang sesuai, tetapi Anda juga mungkin membuang-buang waktu debugging mengapa git rusak. : DAre you sure you want to continue connecting (yes/no)?
. Jangan membuat kesalahan yang sama dengan saya. Anda perlu mengetikyes
. Cukup menekan enter tidak memilih ya secara defaultSeperti yang saya jawab sebelumnya di Kloning git repo menyebabkan kesalahan - Verifikasi kunci host gagal. fatal: Ujung jarak jauh menutup secara tak terduga , tambahkan GitHub ke daftar host resmi:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
sumber
Saya memiliki masalah serupa, tetapi menggunakan kunci SSH. Dari jawaban Tupy, di atas, saya menemukan bahwa masalahnya ada pada file known_hosts yang tidak ada atau github.com tidak ada dalam daftar host yang dikenal. Berikut langkah-langkah yang saya ikuti untuk menyelesaikannya -
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
$ cat ~/.ssh/id_rsa.pub
dan salin.sumber
touch
perintah akan gagal dalam hal~/.ssh
direktori tidak ada, jadi langkah 1 masih diperlukan. Anda juga tidak perlutouch
file sebelum menggunakan>>
redirection. Ini akan dibuat jika perlu (tetapi hanya file, bukan seluruh jalur, jadi masihmkdir -p
diperlukan). The-p
pilihan make bekerja dalam kasus direktori sudah ada.ssh-keyscan
yang hilang dari dokumen Github tentang menambahkan kunci ssh baru.Dockerfile
kurangnya izin. Menambahkan langkah ke-2 di sini memperbaiki masalah itu! Terima kasih atas kerjaIni terjadi karena github saat ini tidak ada di host yang dikenal.
Anda akan diminta untuk menambahkan github ke host yang dikenal. Jika ini belum terjadi, Anda dapat lari
ssh -T [email protected]
untuk menerima konfirmasi lagi.sumber
Bagi saya, saya hanya perlu mengetikkan "ya" pada prompt yang menanyakan "Apakah Anda yakin ingin terus terhubung (ya / tidak)?" daripada hanya menekan Enter.
sumber
Saya mendapat masalah yang sama pada sistem yang baru diinstal, tetapi ini adalah masalah udev. Tidak ada
/dev/tty
simpul, jadi saya harus melakukan:sumber
Jika Anda berada di intranet kantor (jika tidak berbahaya) yang selalu dilindungi oleh firewall cukup ikuti baris berikut di ~ / .ssh / config Anda
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
sumber
Apa yang berhasil bagi saya adalah pertama-tama menambahkan kunci SSH saya dari komputer baru, saya mengikuti instruksi ini dari GitLab - tambahkan kunci SSH . Perhatikan bahwa karena saya menggunakan Win10, saya harus melakukan semua perintah ini di Git Bash pada Windows (itu tidak berfungsi di DOS cmd Shell biasa).
Kemudian lagi di Git Bash, saya harus melakukan
git clone
repo yang saya punya masalah, dan dalam kasus saya saya harus mengkloningnya ke nama yang berbeda karena saya sudah memilikinya secara lokal dan tidak ingin kehilangan komitmen saya. Sebagai contohLalu saya mendapat prompt untuk menambahkannya ke daftar host yang dikenal, pertanyaannya mungkin yang ini:
Saya mengetik "ya" dan akhirnya berhasil, Anda biasanya harus mendapatkan pesan yang mirip dengan ini:
Catatan : jika Anda menggunakan Windows, pastikan Anda menggunakan Git Bash untuk semua perintah, ini tidak berfungsi dalam cmd shell atau PowerShell biasa, saya benar-benar harus melakukan ini di Git Bash.
Terakhir saya menghapus repo klon kedua (
myRepo2
dalam contoh) dan kembali ke repo pertama saya dan akhirnya saya bisa melakukan semua hal Git seperti biasa di VSCode editor favorit saya.sumber
Jika Anda menggunakan git untuk Windows.
Klien GUI menambahkan kunci untuk Anda
~/.ssh/known_hosts
. Ini lebih mudah diingat jika Anda tidak sering melakukannya dan juga menghindari kebutuhan untuk menggunakan baris perintah git (baris perintah Windows standar tidak memilikissh-keyscan
executable.sumber
Ketika server jarak jauh ingin terhubung ke repo pribadi, server akan diautentikasi melalui ssh. Buat pasangan kunci publik-publik dengan ssh-keygen atau jika Anda sudah memiliki kunci publik-swasta. salin & tempel kunci publik di Pengaturan repo pribadi.
YourPrivateRepo -> Pengaturan -> Deploy Keys -> Tambahkan kunci penyebaran -> Tempelkan kunci publik.
Sekarang server jarak jauh akan dapat terhubung ke repo pribadi.
CATATAN: Tombol penyebaran hanya memiliki akses untuk membaca repo. Perlu secara eksplisit mengizinkan akses tulis.
sumber
Ini berarti kunci host jarak jauh Anda diubah (Mungkin perubahan kata sandi host),
Terminal Anda menyarankan untuk menjalankan perintah ini sebagai pengguna root
Anda harus menghapus nama host dari daftar host di pc / server Anda. Salin perintah yang disarankan dan jalankan sebagai pengguna root.
Coba Lagi, Semoga ini berhasil.
sumber
Ketika ditanya:
Are you sure you want to continue connecting (yes/no)?
Ketikkan ya sebagai respons
Itulah cara saya memecahkan masalah saya. Tetapi jika Anda mencoba untuk hanya menekan tombol enter, itu tidak akan berhasil!
sumber
Anda dapat menggunakan "git url" di format URL 'https "di Jenkinsfile atau di mana pun Anda inginkan.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
sumber
Saya menghadapi kesalahan yang sama di dalam DockerFile selama waktu pembuatan sementara gambar publik. Saya melakukan sedikit modifikasi di Dockerfile.
sumber
Saya memiliki masalah yang sama, sayangnya saya menggunakan HMI GitExtensions dan lupa bahwa saya menulis frasa sandi. Dengan HMI .... lupakan saja! Jangan masukkan frasa sandi saat Anda menghasilkan kunci!
sumber
Saya mendapat pesan ini ketika saya mencoba
git clone
repo yang bukan milik saya. Cara mengatasinya adalah dengan melakukan fork dan kemudian mengkloning.sumber