Saya mengkloning repositori git dalam skrip seperti ini:
git clone https://user:[email protected]/name/.git
Ini berfungsi, tetapi nama pengguna dan kata sandi saya! sekarang disimpan di url asal di .git/config
.
Bagaimana saya bisa mencegah ini, tetapi masih melakukan ini dalam skrip (jadi tidak ada input kata sandi manual)?
git remote set-url origin https://host.com/name/.git
Jawaban:
Metode yang saya gunakan adalah benar-benar menggunakan
git pull
bukan klon. Script akan terlihat seperti:Ini tidak akan menyimpan nama pengguna atau kata sandi Anda di
.git/config
. Namun, kecuali jika langkah lain diambil, nama pengguna dan kata sandi plaintext akan terlihat saat proses berjalan dari perintah yang menunjukkan proses saat ini (misalnyaps
).Satu saran lebih lanjut yang akan saya buat (jika Anda tidak dapat menggunakan ssh) adalah untuk benar-benar menggunakan token OAuth alih-alih nama pengguna / kata sandi plaintext karena sedikit lebih aman. Anda dapat membuat token OAuth dari pengaturan profil Anda: https://github.com/settings/tokens .
Kemudian menggunakan token itu perintah tarik akan
sumber
ps
ketika tarikan berjalan (setidaknya kecuali Anda telah mencegah pengguna melihat proses satu sama lain)IMO solusi terbaik adalah menggunakan
GIT_ASKPASS
penolong khusus dan mengirimkan kata sandi sebagai variabel lingkungan lain. Jadi misalnya, buat filegit-askpass-helper.sh
sebagai:dan kemudian jalankan
git clone https://username@hostname/repo
dengan variabel lingkunganGIT_ASKPASS=/path/to/git-askpass-helper.sh
danGIT_PASSWORD=nuclearlaunchcodes
.Ini memiliki keuntungan bahwa kata sandi tidak akan terlihat dalam daftar proses juga.
sumber
git pull
solusi dan memungkinkan Anda untuk menyimpan kata sandi plaintext sebagai rahasia di alat pilihan penyebaran otomatis Anda.Anda dapat memasukkan kredit koneksi Anda di
~/.netrc
file Anda . Sesuatu di sepanjang garis:Pastikan untuk chmod file itu ke 600. Jika Anda menggunakan windows, tautan berikut mungkin berguna: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- windows-to-save-user-and-password
Secara pribadi, saya memiliki kecenderungan untuk menggunakan kunci SSH untuk tujuan auth (jika Anda diizinkan, tentu saja).
sumber
Setelah mempelajari puluhan posting SO, blog, dll, saya mencoba setiap metode, dan inilah yang saya hasilkan. Ini mencakup semuanya.
Lihat Lembar Chit Kredensial & Paket Privat
Ini semua cara dan alat yang dengannya Anda dapat mengotentikasi git dengan aman untuk mengkloning repositori tanpa prompt kata sandi interaktif .
Opsi terbaik tanpa penyimpanan plaintext
Dari apa yang ditanyakan di sini, SSH Keys
GIT_ASKPASS
,, ataugit credential store
menggunakan manajer Keychain OS mungkin merupakan pilihan terbaik.Karena GIT_ASKPASS mungkin adalah yang paling sedikit dipahami dari 3, saya akan menjelaskannya di sini - dan yang lainnya ada di lembar contekan.
GIT_ASKPASS
Cara membuat
GIT_ASKPASS
skrip:Bagaimana cara menggunakannya:
Script menerima stdin dalam bentuk:
Script menerima Git ENVs seperti:
Lebih detail di lembar contekan .
sumber