Saya ingin menggunakan push dan pull secara otomatis di GitExtension , tanpa memasukkan pengguna dan kata sandi saya di prompt, setiap saat.
Jadi bagaimana saya bisa menyimpan kredensial saya di git?
Saya ingin menggunakan push dan pull secara otomatis di GitExtension , tanpa memasukkan pengguna dan kata sandi saya di prompt, setiap saat.
Jadi bagaimana saya bisa menyimpan kredensial saya di git?
Jawaban:
Lari
git config --global credential.helper store
kemudian
git pull
berikan nama pengguna dan kata sandi dan perincian itu akan diingat kemudian. Kredensial disimpan dalam file pada disk, dengan izin disk "hanya dapat dibaca / ditulis pengguna" tetapi masih dalam plaintext.
Jika Anda ingin mengubah kata sandi nanti
git pull
Akan gagal, karena kata sandi salah, git kemudian menghapus kata sandi + pengguna yang menyinggung dari ~/.git-credentials
file, jadi sekarang jalankan kembali
git pull
untuk memberikan kata sandi baru sehingga berfungsi seperti sebelumnya.
Anda dapat menggunakan git config
untuk mengaktifkan penyimpanan kredensial di git.
git config --global credential.helper store
Saat menjalankan perintah ini, pertama kali Anda menarik atau mendorong dari repositori jarak jauh, Anda akan ditanya tentang nama pengguna dan kata sandi.
Setelah itu, untuk komunikasi selanjutnya dengan repositori jarak jauh Anda tidak perlu memberikan nama pengguna dan kata sandi.
Format penyimpanan adalah .git-credentials
file, disimpan dalam plaintext.
Anda juga dapat menggunakan bantuan lain untuk git config credential.helper
, yaitu cache memori:
git config credential.helper cache <timeout>
yang membutuhkan opsional timeout parameter
, menentukan berapa lama kredensial akan disimpan dalam memori. Menggunakan helper, kredensial tidak akan pernah menyentuh disk dan akan dihapus setelah batas waktu yang ditentukan. The default
nilainya900 seconds (15 minutes).
PERINGATAN : Jika Anda menggunakan metode ini, kata sandi akun git Anda akan disimpan dalam plaintext
format, diglobal .gitconfig file
, misalnya di linux,/home/[username]/.gitconfig
Jika ini tidak diinginkan untuk Anda, gunakan a ssh key
untuk akun Anda.
git config credential.helper cache
kata sandi tidak akan disimpan ke file, hanya disimpan dalam memori. Lihat: git-scm.com/docs/git-credential-cache
Metode yang Disarankan dan Aman: SSH
Buat kunci Github ssh. Pergi ke github.com -> Pengaturan -> Kunci SSH dan GPG -> Kunci SSH Baru. Sekarang simpan kunci pribadi Anda ke komputer Anda.
Kemudian, jika kunci pribadi disimpan sebagai id_rsa di direktori ~ / .ssh / , kami menambahkannya untuk otentikasi:
ssh-add -K ~/.ssh/id_rsa
Metode yang Lebih Aman: Caching
Kita dapat menggunakan git-credential-store untuk menembolok nama pengguna dan kata sandi kita untuk jangka waktu tertentu. Masukkan saja yang berikut di CLI Anda (terminal atau command prompt):
git config --global credential.helper cache
Anda juga dapat mengatur periode waktu habis (dalam detik) seperti:
git config --global credential.helper 'cache --timeout=3600'
Metode Yang Kurang Aman
Git-credential-store juga dapat digunakan, tetapi menyimpan kata sandi dalam file teks biasa di disk Anda seperti itu:
git config credential.helper store
Jawaban yang Sudah Kadaluarsa - Cepat dan Tidak Aman
Ini adalah metode penyimpanan kata sandi yang tidak aman dalam teks biasa. Jika seseorang menguasai komputer Anda, kata sandi Anda akan terbuka!
Anda dapat mengatur nama pengguna dan kata sandi Anda seperti ini:
git config --global user.name "your username"
git config --global user.password "your password"
Di Terminal, masukkan yang berikut ini:
# Set git to use the credential memory cache
git config --global credential.helper cache
Secara default, Git akan men-cache kata sandi Anda selama 15 menit.
Untuk mengubah batas waktu cache kata sandi default, masukkan yang berikut ini:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
Dari Bantuan GitHub
cache
bagian dengan store
. Jadi, perintah penuh akan: git config --global credential.helper store
. Perhatikan bahwa ini akan menyimpan kata sandi Anda dalam file teks terbuka (tanpa enkripsi apa pun, demikian dikatakan).
--timeout
parameter?
Anda dapat mengedit ~/.gitconfig
file untuk menyimpan kredensial Anda
sudo nano ~/.gitconfig
Yang seharusnya sudah
[user]
email = your@email.com
user = gitUSER
Anda harus menambahkan di bagian bawah file ini.
[credential]
helper = store
Alasan saya merekomendasikan opsi ini adalah karena bersifat global dan jika suatu saat Anda harus menghapus opsi, Anda tahu ke mana harus pergi dan mengubahnya.
HANYA GUNAKAN OPSI INI DALAM KOMPUTER PRIBADI ANDA.
Lalu ketika Anda menarik | klon | masukkan kata sandi git Anda, secara umum kata sandi akan disimpan dalam ~/.git-credentials
format
https://GITUSER:GITPASSWORD@DOMAIN.XXX
WHERE DOMAIN.XXX BISA MENJADI GITHUB.COM | BITBUCKET.ORG | LAIN
Lihat Documents
Masukkan kredensial Anda di Url seperti ini:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Anda dapat menyimpannya seperti ini:
git remote add myrepo https://Userna...
... contoh untuk menggunakannya :
git push myrepo master
Sekarang adalah Daftar alias url:
git remote -v
... dan perintah untuk menghapus salah satunya:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, tidak ssh
, jadi solusi seperti ini dapat berguna di sana. Perhatikan juga bahwa Anda dapat menggunakan token-oauth, yang sedikit lebih aman daripada kata sandi GitHub Anda.
Untuk pengaturan global, buka terminal (dari mana saja) jalankan yang berikut:
git config --global user.name "your username"
git config --global user.password "your password"
Dengan itu, setiap repo git lokal yang Anda miliki di komputer Anda akan menggunakan informasi itu.
Anda dapat mengkonfigurasi secara individual untuk setiap repo dengan melakukan:
jalankan yang berikut ini:
git config user.name "your username"
git config user.password "your password"
Hanya memengaruhi folder itu (karena konfigurasi Anda bersifat lokal).
--local
tag tetapi sekali lagi tidak ada yang terjadi
Anda dapat menggunakan git-credential-store untuk menyimpan kata sandi Anda yang tidak dienkripsi di disk, hanya dilindungi oleh izin sistem file.
Contoh
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Anda dapat memeriksa kredensial yang disimpan dalam file ~/.git-credentials
Untuk info lebih lanjut kunjungi git-credential-store - Membantu menyimpan kredensial pada disk
Anda akan lebih aman jika menggunakan otentikasi SSH daripada otentikasi nama pengguna / kata sandi.
Jika Anda menggunakan Mac, otentikasi klien SSH diintegrasikan ke dalam gantungan kunci MacOS. Setelah Anda membuat kunci SSH, ketikkan ke terminal Anda:
ssh-add -K ~/.ssh/id_rsa
Ini akan menambahkan kunci pribadi SSH ke gantungan kunci MacOS. Klien git akan menggunakan ssh ketika terhubung ke server jarak jauh. Selama Anda telah mendaftarkan kunci publik ssh Anda dengan server, Anda akan baik-baik saja.
SSH
akses. Menggunakan otentikasi HTTP, seseorang yang mencuri kredensial hanya akan memiliki akses GitHub/GitLab
. Token juga dirancang untuk memiliki kehidupan yang terbatas.
Setelah mempelajari puluhan posting SO, blog, dll, saya mencoba setiap metode, dan inilah yang saya temukan. Ini mencakup semuanya.
Ini semua cara dan alat yang dengannya Anda dapat mengotentikasi git dengan aman untuk mengkloning repositori tanpa prompt kata sandi interaktif .
Want Just Works ™? Ini adalah peluru perak ajaib.
Dapatkan Token Akses Anda (lihat bagian di lembar contekan jika Anda memerlukan petunjuk Github atau Gitea untuk itu) dan mengaturnya dalam variabel lingkungan (baik untuk pengembang lokal dan penyebaran):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Untuk Github, salin dan jalankan baris ini kata demi kata :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Selamat, sekarang setiap alat kloning git repositori otomatis tidak akan terhalang oleh prompt kata sandi, apakah menggunakan https atau gaya url ssh.
Tidak menggunakan Github?
Untuk platform lain (Gitea, Github, Bitbucket), cukup ubah URL. Jangan mengubah nama pengguna (meskipun sewenang-wenang, mereka diperlukan untuk entri konfigurasi yang berbeda).
Kesesuaian
Ini berfungsi secara lokal di MacOS, Linux, Windows (dalam Bash), Docker, CircleCI, Heroku, Akkeris, dll.
Info lebih lanjut
Lihat bagian ".gitconfig sebagai gantinya" dari lembar contekan.
Keamanan
Lihat bagian "Keamanan" pada lembar contekan.
git config --global credential."https://somegithost.com".username MyUserName
, yang ada di lembar contekan Anda, tetapi tidak di tempat lain di utas jawaban ini. Solusi khusus itu tidak menjawab pertanyaan OP, tetapi menjawab pertanyaan saya, jadi terima kasih!
Dalam hal ini Anda perlu bantuan kredensial git untuk memberi tahu git untuk mengingat kata sandi dan nama pengguna GitHub Anda dengan menggunakan baris perintah berikut:
git config --global credential.helper wincred
dan jika Anda menggunakan repo menggunakan kunci SSH maka Anda perlu kunci SSH untuk otentikasi.
Tidak ada jawaban di atas yang berfungsi untuk saya. Saya terus mendapatkan yang berikut setiap kali saya ingin fetch
atau pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Untuk Mac
Saya dapat menghentikannya untuk meminta frasa sandi saya dengan:
vi ~/.ssh/config
UseKeychain yes
:wq!
Untuk Windows
Saya dapat membuatnya berfungsi menggunakan info di stackexchange ini: https://unix.stackexchange.com/a/12201/348665
Selain mengedit ~/.gitconfig
file, itu dapat Anda lakukan jika Anda bertanya:
git config --local --edit
atau
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
atau
git config --global user.name 'your username'
git config --global user.password 'your password'
Nama pengguna dan kata sandi Anda mungkin menggunakan beberapa karakter yang akan merusak kata sandi Anda jika Anda menggunakan tanda kutip ganda.
--local
atau --global
berarti params konfigurasi disimpan untuk proyek atau untuk pengguna os.
gunakan saja
git config --global credential.helper store
dan lakukan git pull , ia akan meminta nama pengguna dan kata sandi, mulai sekarang tidak akan memberikan prompt untuk nama pengguna dan kata sandi itu akan menyimpan rincian
.git-credentials
adalah tempat nama pengguna dan kata sandi Anda (akses token) disimpan saat Anda menjalankan git config --global credential.helper store
, yang merupakan jawaban lain yang disarankan, dan kemudian ketik nama pengguna dan kata sandi Anda atau akses token:
https://${username_or_access_token}:${password_or_access_token}@github.com
Jadi, untuk menyimpan nama pengguna dan kata sandi (token akses):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Ini sangat berguna untuk robot github, misalnya untuk menyelesaikan pembuatan rantai otomatis di repositori buruh pelabuhan yang sama dengan memiliki aturan untuk cabang yang berbeda dan kemudian memicunya dengan mendorongnya ke dalampost_push
hooker di hub docker.
Contoh dari ini dapat dilihat di sini di stackoverflow.
Cara cepat untuk menembolok kredensial git:
git config credential.helper 'cache' --timeout=10800
bagus dan aman
batas waktu dalam detik.
Setelah membaca utas sepenuhnya dan bereksperimen dengan sebagian besar jawaban untuk pertanyaan ini, saya akhirnya menemukan prosedur yang cocok untuk saya. Saya ingin membaginya jika seseorang harus berurusan dengan kasus penggunaan yang kompleks tetapi masih tidak ingin melalui thread penuh dan gitcredentials , gitcredentials-store dll halaman manual, seperti yang saya lakukan.
Temukan di bawah prosedur yang saya sarankan JIKA Anda (seperti saya) harus berurusan dengan beberapa repositori dari beberapa penyedia (GitLab, GitHub, Bitbucket, dll.) Menggunakan beberapa kombinasi nama pengguna / kata sandi. Jika Anda hanya memiliki satu akun untuk bekerja, maka Anda mungkin lebih baik menggunakan git config --global credential.helper store
ataugit config --global user.name "your username"
dll solusi yang sudah sangat baik dijelaskan dalam jawaban sebelumnya.
Solusi saya:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Catatan : perintah ini membuat file baru bernama ".git_repo_credentials" ke direktori home Anda, tempat Git menyimpan kredensial Anda. Jika Anda tidak menentukan nama file, Git menggunakan default ".git_credentials". Dalam hal ini hanya mengeluarkan perintah berikut akan dilakukan:
> git config credential.helper store
git config credential.*.username my_user_name
Catatan : menggunakan "*" biasanya ok jika repositori Anda berasal dari penyedia yang sama (mis. GitLab). Jika sebaliknya repositori Anda di-host oleh penyedia yang berbeda maka saya sarankan untuk secara eksplisit mengatur tautan ke penyedia untuk setiap repositori, seperti dalam contoh berikut (untuk GitLab):
git config credential.https://gitlab.com.username my_user_name
Pada titik ini jika Anda mengeluarkan perintah yang memerlukan kredensial Anda (mis. git pull
) Anda akan dimintai kata sandi yang terkait dengan "my_user_name". Ini hanya diperlukan satu kali karena git menyimpan kredensial ke ".git_repo_credentials" dan secara otomatis menggunakan data yang sama pada akses selanjutnya.
Dari komentar oleh rifrol, di Linux Ubuntu, dari jawaban ini , begini caranya di Ubuntu:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Beberapa distro lain menyediakan biner sehingga Anda tidak perlu membangunnya.
Di OS X biasanya datang "dibangun" dengan modul default "osxkeychain" sehingga Anda mendapatkannya secara gratis.
Periksa dokumentasi resmi git:
Jika Anda menggunakan transportasi SSH untuk menghubungkan ke remote, Anda dapat memiliki kunci tanpa frasa sandi, yang memungkinkan Anda untuk mentransfer data dengan aman tanpa mengetikkan nama pengguna dan kata sandi Anda. Namun, ini tidak mungkin dilakukan dengan protokol HTTP - setiap koneksi memerlukan nama pengguna dan kata sandi. Ini semakin sulit untuk sistem dengan otentikasi dua faktor, di mana token yang Anda gunakan untuk kata sandi dihasilkan secara acak dan tidak dapat dilanggar.
Untungnya, Git memiliki sistem kredensial yang dapat membantu dengan ini. Git memiliki beberapa opsi yang disediakan di dalam kotak:
Defaultnya bukan cache sama sekali. Setiap koneksi akan menanyakan nama pengguna dan kata sandi Anda.
Mode "cache" menyimpan kredensial dalam memori untuk periode waktu tertentu. Tidak ada kata sandi yang pernah disimpan di disk, dan dihapus dari cache setelah 15 menit.
Mode "store" menyimpan kredensial ke file teks biasa pada disk, dan mereka tidak pernah kedaluwarsa. Ini berarti bahwa sampai Anda mengubah kata sandi untuk host Git, Anda tidak perlu mengetikkan kredensial Anda lagi. Kelemahan dari pendekatan ini adalah bahwa kata sandi Anda disimpan dalam teks-jelas dalam file biasa di direktori home Anda.
Jika Anda menggunakan Mac, Git hadir dengan mode "osxkeychain", yang menyimpan kredensial di gantungan kunci aman yang dilampirkan ke akun sistem Anda. Metode ini menyimpan kredensial di disk, dan tidak pernah kedaluwarsa, tetapi dienkripsi dengan sistem yang sama yang menyimpan sertifikat HTTPS dan pengisian otomatis Safari.
Jika Anda menggunakan Windows, Anda dapat menginstal pembantu yang disebut "Git Credential Manager for Windows." Ini mirip dengan bantuan "osxkeychain" yang dijelaskan di atas, tetapi menggunakan Windows Credential Store untuk mengontrol informasi sensitif. Itu dapat ditemukan di https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Anda dapat memilih salah satu dari metode ini dengan menetapkan nilai konfigurasi Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store