Saya mencoba membuat repositori git di host web saya dan mengkloningnya di komputer saya. Inilah yang saya lakukan:
- Saya membuat repositori di server jarak jauh.
- Saya dihasilkan sepasang kunci:
ssh-keygen -t dsa
. - Saya menambahkan kunci saya ke ssh-agent.
- Saya menyalin ke kunci publik server di
~/.ssh
.
Dan kemudian, setelah mencoba menjalankan perintah git clone ssh://user@host/path-to-repository
, saya mendapatkan kesalahan:
Tidak dapat bernegosiasi dengan XX.XXX.XX.XX: tidak ditemukan jenis kunci host yang cocok. Tawaran mereka: ssh-dss
fatal: Tidak dapat membaca dari repositori jarak jauh.
Harap pastikan Anda memiliki hak akses yang benar dan repositori ada.
Apa artinya?
ssh
web-hosting
Nikita Gorshkov
sumber
sumber
Jawaban:
Secara default, kunci DSA versi openssh baru-baru ini tidak digunakan lagi. Anda harus menyarankan penyedia GIT Anda untuk menambahkan beberapa kunci host yang masuk akal. Mengandalkan hanya pada DSA bukanlah ide yang baik.
Sebagai solusinya, Anda perlu memberi tahu
ssh
klien Anda bahwa Anda ingin menerima kunci host DSA, seperti yang dijelaskan dalam dokumentasi resmi untuk penggunaan lama . Anda memiliki sedikit kemungkinan, tetapi saya sarankan untuk menambahkan baris ini ke dalam~/.ssh/config
file Anda :Kemungkinan lainnya adalah menggunakan variabel lingkungan
GIT_SSH
untuk menentukan opsi ini:sumber
HostkeyAlgorithms +ssh-dss
. Terima kasih.Anda juga dapat menambahkan
-oHostKeyAlgorithms=+ssh-dss
baris ssh Anda:sumber
Bagi saya ini berhasil: (ditambahkan ke
.ssh\config
)sumber
yuor-host
adalah tuan rumah yang akan Andassh
lawan. Menetapkan default yang tidak aman untuk semua host selalu merupakan ide yang buruk.Jika Anda seperti saya, dan lebih suka tidak membuat sistem lubang keamanan ini atau untuk seluruh pengguna, Anda dapat menambahkan opsi konfigurasi ke repo git mana pun yang memerlukannya dengan menjalankan perintah ini di repo tersebut. (catatan hanya berfungsi dengan versi git> = 2.10, dirilis 04-09-2016)
Ini hanya berfungsi setelah repo disiapkan. Jika Anda tidak nyaman menambahkan remote secara manual (dan hanya ingin mengkloning) maka Anda dapat menjalankan klon seperti ini:
lalu jalankan perintah pertama untuk membuatnya permanen.
Jika Anda tidak memiliki yang terbaru, dan masih ingin menjaga lubang se-lokal mungkin, saya sarankan untuk meletakkannya
dalam file di suatu tempat, katakanlah
git_ssh_allow_dsa_keys.sh
, dansource
simpan saat dibutuhkan.sumber
Saya ingin sedikit berkolaborasi dengan solusi untuk sisi server. Jadi, server mengatakan tidak mendukung DSA, ini karena klien openssh tidak mengaktifkannya secara default :
Jadi, untuk memperbaikinya di sisi server saya harus mengaktifkan algoritma kunci lain seperti RSA o ECDSA. Saya baru saja mengalami masalah ini dengan server di lan. Saya menyarankan yang berikut:
Perbarui openssh:
Gabungkan konfigurasi baru di sshd_config jika ada sshd_config.rpmnew.
Pastikan ada kunci host di / etc / ssh /. Jika tidak menghasilkan yang baru, lihat
man ssh-keygen
.Verifikasi di / etc / ssh / sshd_config konfigurasi HostKey. Ini harus memungkinkan konfigurasi RSA dan ECDSA. (Jika semuanya diberi komentar secara default maka RSA juga akan diizinkan, lihat di
man sshd_config
bagian HostKey).Untuk sisi klien, buat kunci untuk ssh (bukan DSA seperti dalam pertanyaan) dengan hanya melakukan ini:
Setelah ini, karena ada lebih banyak opsi daripada ssh-dss (DSA) klien openssh (> = v7) harus terhubung dengan RSA atau algoritma yang lebih baik.
Berikut artikel bagus lainnya.
Ini pertanyaan pertama saya terjawab, saya menyambut saran: D.
sumber
Bagaimana seseorang menentukan beberapa algoritma? Saya bertanya karena git baru saja memperbarui di laptop kerja saya, (Windows 10, menggunakan Git resmi untuk pembuatan Windows,) dan saya mendapat kesalahan ini ketika saya mencoba mendorong cabang proyek ke remote Azure DevOps saya. Saya mencoba mendorong --set-upstream dan mendapatkan ini:
Jadi, bagaimana cara menerapkan saran di atas yang memungkinkan keduanya? (Sebagai cara cepat untuk menyelesaikannya, saya menggunakan solusi @ golvok dengan group14 dan berhasil, tetapi saya benar-benar tidak tahu apakah 1 atau 14 lebih baik, dll.)
sumber
Anda bisa mengikuti pendekatan di atas atau yang ini
Buat file konfigurasi di direktori .ssh dan tambahkan baris ini.
sumber