Cara Memperbaiki Git Menggunakan Kunci SSH

Saat menghubungkan ke server Git jarak jauh, seperti Github, klien Anda harus mengautentikasi menggunakan token berbasis HTTPS atau SSH. Jika Anda menggunakan yang terakhir, Anda mungkin mengalami masalah penanganan utama, termasuk Git menggunakan kunci SSH yang salah dan memasukkan Anda ke akun yang berbeda.

Apa masalahnya?

Jika Anda tidak benar-benar memiliki kunci SSH di akun Anda, Anda hampir pasti akan mendapatkan kesalahan berikut saat mencoba menekan:

Permission denied (publickey).
fatal: Could not read from remote repository.

Ini mungkin kesalahan Git yang paling umum, dan solusinya sederhana—siapkan kunci SSH untuk akun Anda.

Namun, Anda mungkin juga mendapatkan pesan kesalahan yang terlihat sangat mirip, bahkan setelah kunci SSH diatur dengan benar. Jika Anda menggunakan beberapa akun Git, Anda mungkin mengalami kesalahan ini:

Permission to Username/Repository.git denied to otheraccount.
fatal: Could not read from remote repository.

Dalam hal ini, Github telah menerima kunci SSH Anda, tetapi masih tidak berfungsi dengan benar; bahkan lokal Anda git repo dikonfigurasi untuk menggunakan alamat email yang benar, jika Anda memberikan kunci yang salah, itu akan mengotentikasi Anda sebagai pengguna yang salah. Ini pada dasarnya berbeda dari kesalahan pertama. Ini bukan “izin ditolak,” melainkan “izin akun ditolak.”

Ini bisa menjadi masalah jika Anda memiliki banyak akun dan perlu menggunakan kunci terpisah untuk masing-masing akun. Karena cara kerja otentikasi SSH, itu akan tetap “masuk” ke server Git jarak jauh, tetapi sebagai pengguna yang salah. Ketika Github memeriksa untuk melihat apakah pengguna tersebut memiliki akses ke repositori, kemungkinan akan gagal, menyebabkan kesalahan yang mengatakan bahwa akun Anda tidak memiliki izin untuk menggunakan repo Anda sendiri.

Solusinya adalah mengelola beberapa kunci SSH dengan benar, sehingga git klien tidak mengirim kunci yang salah ke server. Anda dapat melakukan ini dengan mengedit file konfigurasi SSH.

Pastikan Git Dikonfigurasi dengan Benar

Pertama, Anda ingin memastikan repo Anda dikonfigurasi untuk menggunakan alamat email dan nama pengguna yang benar. Anda dapat memeriksanya dari konfigurasi Git:

git config --list

Dan atur nama dan email untuk repo ini (atau gunakan --global untuk mengaturnya untuk semua repo):

git config user.name "Name"
git config user.email "email@gmail.com"

Jika Anda tidak memiliki masalah besar dengan SSH, mungkin hanya ini yang diperlukan.

Mengedit ~/.ssh/config

Jika Anda tidak memiliki kunci yang ingin digunakan, Anda harus membuat file kunci baru untuk akun Anda. Jika ya, Anda harus memindahkan atau mengganti namanya sesuai ~/.ssh jadi tidak bertentangan dengan default Anda id_rsa. Dalam hal ini, kami akan membuat kunci baru bernama “github”:

ssh-keygen -t rsa -f ~/.ssh/github

Untuk menggunakan beberapa kunci SSH, Anda perlu mengedit ~/.ssh/config dan atur blok Host baru untuk Github yang mengarah ke keyfile yang baru saja Anda buat. SSH akan menggunakan ini untuk memilih kunci SSH yang akan digunakan.

Host main
  Hostname github.com
  IdentityFile ~/.ssh/github
  IdentitiesOnly yes

Host old
  Hostname github.com
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

Jika Anda hanya memiliki satu blok host untuk kunci baru, Anda tidak perlu melakukan hal lain, dan Anda dapat terhubung ke Github sekarang. Jika Anda memiliki beberapa blok untuk kunci yang berbeda, Anda perlu mengedit remote repositori Anda untuk itu github.com diubah namanya menjadi blok host di file konfigurasi SSH. Ini akan memilih kunci secara manual alih-alih mengandalkan pencarian permusuhan.

git remote remove origin

git remote add origin git@main:username/repository.git

Penyelesaian masalah

Setelah mengatur konfigurasi host SSH dan mengkonfigurasi remote Anda, Git harus menggunakan kunci SSH yang benar saat mendorong. Jika Anda masih mengalami masalah, Anda dapat men-debug masalah dengan mengatur secara manual perintah SSH yang digunakan Git untuk sesi shell menggunakan GIT_SSH_COMMAND variabel lingkungan.

GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Anda juga ingin memeriksa dan memastikan Git menggunakan kunci dari tempat yang Anda harapkan. Di Windows, lokasi ini dapat bervariasi tergantung pada perangkat lunak Git yang Anda gunakan. Misalnya, menggunakan klien GUI Fork, defaultnya adalah agen SSH Windows, tetapi saya mengonfigurasi kunci SSH baru yang digunakannya.

Leave a Comment

Your email address will not be published. Required fields are marked *