Cara Memperbaiki Git Selalu Meminta Kredensial Pengguna Untuk Otentikasi HTTP(S).


Untuk mengakses atau bekerja dengan repositori Git jarak jauh, Anda dapat menggunakan protokol SSH atau HTTP(S); dengan yang pertama, jika menyangkut repositori pribadi, Anda cukup mengonfigurasi kunci SSH tanpa frasa sandi yang memungkinkan Anda mentransfer data dengan aman tanpa mengetikkan nama pengguna dan kata sandi Anda.

Namun, dengan HTTP(S), setiap koneksi akan meminta Anda memasukkan nama pengguna dan kata sandi (saat Git memerlukan autentikasi untuk konteks URL tertentu) – pengguna Github mengetahui hal ini dengan baik.

Pada artikel ini, kami akan menunjukkan cara memperbaiki Git yang selalu meminta kredensial pengguna untuk akses melalui HTTP(S). Kami akan menjelaskan berbagai cara untuk mencegah Git berulang kali meminta nama pengguna dan kata sandi saat berinteraksi dengan repositori jarak jauh melalui HTTP(S).

Cara Menginstal Git di Linux

Jika Anda belum menginstal paket Git di sistem Anda, jalankan perintah yang sesuai untuk distribusi Linux Anda untuk menginstalnya (gunakan perintah Sudo jika diperlukan).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

Memasukkan Nama Pengguna dan Kata Sandi Git di URL Jarak Jauh

Seperti yang telah kami sebutkan sebelumnya, ketika mengkloning repositori Git jarak jauh melalui HTTP(S), setiap koneksi memerlukan nama pengguna dan kata sandi seperti yang ditunjukkan.

Untuk mencegah Git meminta nama pengguna dan kata sandi Anda, Anda dapat memasukkan kredensial login di URL seperti yang ditunjukkan.


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

Kelemahan utama dari metode ini adalah nama pengguna dan kata sandi Anda akan disimpan dalam perintah di file riwayat Shell.

serta di file .git/config pada folder lokal, yang memiliki risiko keamanan.

cat .git/config

Catatan: Untuk pengguna Github yang telah mengaktifkan autentikasi dua faktor, atau mengakses organisasi yang menggunakan sistem masuk tunggal SAML, Anda harus buat dan gunakan token akses pribadi alih-alih memasukkan kata sandi Anda untuk HTTPS Git (seperti yang ditunjukkan dalam contoh keluaran dalam panduan ini). Untuk membuat token akses pribadi, di Github, buka Setelan => Setelan Pengembang => Token akses Pribadi.

Menyimpan Nama Pengguna dan Kata Sandi Repositori Git Jarak Jauh di Disk

Metode kedua adalah dengan menggunakan pembantu kredensial Git untuk menyimpan nama pengguna dan kata sandi Anda dalam file biasa di disk seperti yang ditunjukkan.

git config credential.helper store				
OR
git config --global credential.helper store		

Mulai sekarang, Git akan menulis kredensial ke file ~/.git-credentials untuk setiap konteks URL, ketika diakses untuk pertama kalinya. Untuk melihat isi file ini, Anda dapat menggunakan perintah cat seperti pada gambar.

cat  ~/.git-credentials

Untuk perintah selanjutnya untuk konteks URL yang sama, Git akan membaca kredensial pengguna Anda dari file di atas.

Sama seperti metode sebelumnya, cara meneruskan kredensial pengguna ke Git juga tidak aman karena file penyimpanan tidak terenkripsi dan hanya dilindungi oleh izin sistem file standar.

Cara ketiga yang dijelaskan di bawah ini, dianggap lebih aman.

Menyimpan Nama Pengguna dan Kata Sandi Repositori Git Jarak Jauh di Memori

Yang terakhir, Anda juga dapat menggunakan pembantu kredensial Git untuk menyimpan sementara kredensial Anda di memori selama beberapa waktu. Untuk melakukannya, keluarkan perintah berikut.

git config credential.helper cache
OR
git config --global credential.helper cache

Setelah menjalankan perintah di atas, saat Anda mencoba mengakses repositori pribadi jarak jauh untuk pertama kalinya, Git akan menanyakan nama pengguna dan kata sandi Anda dan menyimpannya di memori untuk beberapa waktu.

Waktu cache default adalah 900 detik (atau 15 menit), setelah itu Git akan meminta Anda memasukkan nama pengguna dan kata sandi Anda lagi. Anda dapat mengubahnya sebagai berikut (1800 detik=30 menit atau 3600 detik=1 jam).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Untuk informasi selengkapnya tentang Git dan pembantu kredensial, lihat halaman manualnya.

man git
man git-credential-cache
man git-credential-store

Apakah panduan ini bermanfaat? Beri tahu kami melalui formulir umpan balik di bawah. Anda juga dapat membagikan pertanyaan atau pemikiran apa pun tentang topik ini.