Lebih
Apakah ada cara untuk cache GitHub mandat untuk mendorong melakukan?
Saya baru-baru ini beralih ke sinkronisasi saya repositori untuk https:// di GitHub (karena masalah firewall), dan meminta password setiap kali.
Apakah ada cara untuk cache mandat, bukan otentikasi setiap kali git push
?
1799
23
Dengan Git versi 1.7.9 dan kemudian
Sejak Git 1.7.9 (dirilis pada akhir januari 2012), ada yang rapi mekanisme di Git untuk menghindari harus mengetikkan kata sandi anda sepanjang waktu untuk HTTP / HTTPS, yang disebut credential pembantu. (Terima kasih kepada dazonic untuk menunjukkan fitur baru ini di komentar di bawah ini.)
Dengan Git 1.7.9 atau lambat, anda hanya dapat menggunakan salah satu dari berikut credential pembantu:
... yang memberitahu Git untuk menjaga password anda cache di memori (secara default) 15 menit. Anda dapat mengatur waktu yang lebih lama dengan:
(Contoh yang disarankan dalam GitHub halaman bantuan untuk Linux.) Anda juga dapat menyimpan kredensial anda secara permanen jika jadi diinginkan, lihat jawaban yang lain di bawah ini.
GitHub's membantu menunjukkan bahwa jika anda're pada Mac OS X dan digunakan Homebrew untuk install Git, anda dapat menggunakan Mac asli OS X keystore dengan:
Untuk Windows, ada pembantu yang disebut Git Credential Manager untuk Windows atau wincred di msysgit.
Dengan Git untuk Windows 2.7.3+ (Maret 2016):
Untuk Linux, anda dapat menggunakan
gnome-keyring
](https://stackoverflow.com/questions/13385690/how-to-use-git-with-gnome-keyring-integration)(atau lainnya keyring implementasi seperti KWallet).Dengan Git versi sebelum 1.7.9
Dengan versi Git sebelum 1.7.9, ini lebih aman opsi ini tidak tersedia, dan anda'll perlu mengubah URL yang
asal
remote menggunakan untuk memasukkan password di mode ini:... dalam kata lain dengan
password
setelah username dan sebelum@
.Anda dapat mengatur URL baru untuk
asal
remote dengan:Pastikan bahwa anda menggunakan
https
, dan anda harus menyadari bahwa jika anda melakukan ini, anda GitHub password akan disimpan dalam plaintext pada anda.git
direktori, yang jelas tidak diinginkan.Dengan setiap versi Git (nah, sejak versi 0.99)
Sebuah pendekatan alternatif adalah untuk memasukkan username dan password anda
~/.netrc
file, meskipun, seperti dengan menjaga password pada remote URL, ini berarti bahwa password anda akan disimpan pada disk dalam bentuk teks biasa, dan dengan demikian kurang aman dan tidak dianjurkan. Namun, jika anda ingin mengambil pendekatan ini, tambahkan baris berikut ke~/.netrc
:... mengganti
<hostname>
dengan server's hostname, dan<username>
dan<password>
dengan username dan password anda. Juga ingat untuk mengatur pembatasan sistem file permissions pada file tersebut:Perhatikan bahwa pada Windows, file ini harus disebut
_netrc
, dan anda mungkin perlu untuk menentukan %RUMAH% variabel lingkungan - untuk rincian lebih lanjut lihat:Anda juga dapat memiliki Git menyimpan kredensial anda secara permanen menggunakan berikut:
Catatan: Sementara ini nyaman, Git akan menyimpan kredensial anda dalam teks yang jelas dalam file lokal (.git-kredensial) di bawah direktori proyek anda (lihat di bawah untuk "rumah" direktori). Jika anda don't seperti ini, hapus file ini dan beralih untuk menggunakan cache pilihan.
Jika anda ingin Git untuk melanjutkan untuk meminta anda untuk kredensial setiap waktu yang dibutuhkan untuk terhubung ke remote repository, anda dapat menjalankan perintah ini:
Untuk menyimpan password dalam
.git-kredensial
di%RUMAH%
direktori sebagai lawan untuk proyek direktori: gunakan- global
benderaTLDR; Menggunakan netrc berkas dapat dienkripsi dengan Git 1.8.3+.
Menyimpan password untuk sebuah repositori Git HTTPS URL ini dimungkinkan dengan
~/.netrc
(Unix) atau%RUMAH%/_netrc
(perhatikan_
) pada Windows.Tapi: file Yang akan menyimpan password dalam bentuk teks biasa.
Solusi: Mengenkripsi file dengan GPG (GNU Privacy Guard), dan membuat Git mendekripsi itu setiap kali ia membutuhkan password (untuk
mendorong
/menarik
/mengambil
/clone
operasi).Catatan: dengan Git 2.18 (Q2 2018), anda sekarang dapat menyesuaikan GPG digunakan untuk mendekripsi
.netrc
file.Lihat melakukan 786ef50, melakukan f07eeed (12 Mei 2018) oleh Luis Marsano (`). (Digabung dengan Junio C Hamano --
gitster
-- di melakukan 017b7c5, 30 Mei 2018)Langkah-demi-Langkah petunjuk untuk Windows
Dengan Windows:
(Git memiliki
gpg.exe
dalam distribusi, tetapi menggunakan full GPG instalasi termasukgpg-agent.exe
, yang akan mengingat kata sandi anda yang berhubungan dengan GPG key.)gpg4Win Lite
, minimum gnupg command-line interface (mengambil paling barugpg4win-vanilla-2.X.Y-betaZZ.exe
), dan lengkapi JALAN anda dengan GPG direktori instalasi:set PATH=%PATH%:C:\path\to\gpg copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
(Catatan '
copy
' perintah: Git akan perlu Bash script untuk mengeksekusi perintah 'gpg
'. Sejakgpg4win-vanilla-2
dilengkapigpg2.exe
, anda perlu untuk menduplikasi itu.)gpgp --import aKey
atau
gpg --gen-key
(Pastikan untuk menempatkan kata kunci ke kunci itu.)
Percaya bahwa kunci
Pasang kredensial helper script di direktori dalam
%PATH%
:cd c:\a\fodler\in\your\path curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
(Ya, ini adalah sebuah Bash script, tapi ini akan bekerja pada Windows karena akan disebut oleh Git.)
mesin a_server.corp.com login a_login password a_password protokol https
mesin a_server2.corp.com login a_login2 password a_password2 protokol https
(Don't melupakan '
protokol
' bagian: 'http
' atau 'https
' tergantung pada URL yang akan anda gunakan.)gpg -e -r a_recipient _netrc
(Anda sekarang dapat hapus the
_netrc
file, hanya menjaga_netrc.gpg
dienkripsi satu.)git config --lokal credential.pembantu "netrc -f C:/path/to/_netrc.gpg -v"
(Catatan '
/
':C:\path\to...
tidak't bekerja pada semua.) (Anda dapat menggunakan dipertama-v -d
untuk melihat apa yang terjadi.)Mulai sekarang, setiap perintah Git menggunakan HTTP(S) URL yang memerlukan otentikasi akan mendekripsi yang
_netrc.gpg
file dan menggunakan login/password berhubungan ke server anda menghubungi. Pertama kalinya, GPG akan meminta anda untuk frasa sandi anda GPG key untuk mendekripsi file. Lain kali, gpg-agen diluncurkan secara otomatis pertama GPG panggilan akan memberikan kata sandi untuk anda.Dengan cara itu, anda dapat menghafal beberapa Url/login/password dalam satu file, dan harus disimpan pada disk anda dienkripsi.
Saya merasa lebih nyaman dari "cache" pembantu", di mana anda perlu untuk mengingat dan jenis (sekali per sesi) password yang berbeda untuk setiap layanan remote, untuk kata sandi yang akan di-cache dalam memori.
Ada's mudah, cara kuno untuk menyimpan kredensial pengguna di HTTPS URL:
Anda dapat mengubah URL dengan
git remote set-url <remote repo> <URL>
Yang jelas kelemahan pendekatan ini adalah bahwa anda harus menyimpan password dalam bentuk teks biasa. Anda masih bisa hanya memasukkan nama pengguna (
https://user@github.com/...
) yang setidaknya akan menghemat setengah kerumitan.Anda mungkin lebih memilih untuk beralih ke SSH atau menggunakan GitHub perangkat lunak klien.
Anda hanya dapat menggunakan
Ketika anda memasukkan password saat berikutnya dengan menarik atau mendorong, itu akan disimpan dalam file .git-kredensial sebagai teks biasa (sedikit tidak aman, tapi hanya memasukkannya ke dalam folder yang dilindungi).
Dan yang's ini, seperti yang dinyatakan pada halaman ini:
git-kredensial-toko
Menggunakan credential store.
Untuk Git 2.11+ di OS X dan Linux, menggunakan Git's dibangun di credential toko:
Untuk msysgit 1.7.9+ di Windows:
Untuk Git 1.7.9+ pada OS X menggunakan:
Cukup memasukkan kredensial login sebagai bagian dari URL:
Catatan: saya tidak merekomendasikan metode ini, tetapi jika anda berada di terburu-buru dan tidak ada yang lain bekerja, anda dapat menggunakan metode ini.
Itu't segera jelas bagi saya bahwa saya perlu untuk men-download penolong pertama! Saya menemukan credential.pembantu download di Atlassian's secara Permanen otentikasi dengan Git repositori.
Quote:
Ikuti langkah-langkah berikut jika anda ingin menggunakan Git dengan credential caching pada OS X:
Download biner git-kredensial-osxkeychain.
Jalankan perintah berikut untuk memastikan binary executable:
Meletakkannya di direktori
/usr/local/bin
.Jalankan perintah di bawah ini:
Pada GNU/Linux setup,~/.netrc bekerja cukup baik juga:
Itu mungkin tergantung pada jaringan perpustakaan Git menggunakan HTTPS transportasi.
Untuk Windows, anda dapat menggunakan Git Credential Manager (GCM) plugin. Saat ini dikelola oleh Microsoft. Hal yang baik adalah bahwa hal itu menghemat password di Windows Credential Toko, bukan sebagai teks biasa.
Ada installer di halaman rilis proyek. Ini juga akan menginstal versi resmi dari Git untuk Windows dengan credential manager built-in. Hal ini memungkinkan dua-faktor otentikasi untuk GitHub (dan server lainnya). Dan memiliki antarmuka grafis untuk awalnya masuk.
Untuk Cygwin pengguna (atau pengguna yang sudah menggunakan resmi Git untuk Windows), anda mungkin lebih suka manual menginstal. Download paket zip dari rilis halaman. Ekstrak paket, dan kemudian jalankan
install.cmd
file. Ini akan menginstal untuk anda~/bin
folder. (Pastikan anda~/bin
direktori di JALAN anda.) Anda kemudian mengkonfigurasi menggunakan perintah ini:Git kemudian akan menjalankan
git-credential-manager.exe
ketika melakukan otentikasi ke server apapun.Jika anda don't ingin menyimpan password anda dalam plaintext seperti kata Mark, anda dapat menggunakan GitHub URL untuk mengambil dari yang anda lakukan untuk mendorong. Dalam file konfigurasi anda, di bawah
[remote "asal"]
:Itu masih akan meminta password ketika anda menekan, tapi tidak ketika anda mengambil, setidaknya untuk proyek open source.
OAuth
Anda dapat membuat anda sendiri pribadi token API (OAuth) dan menggunakannya dengan cara yang sama seperti yang anda akan menggunakan anda normal kredensial (di:
/pengaturan/token
). Misalnya:.netrc
Metode lain adalah untuk mengkonfigurasi user/password di
~/.netrc
(_netrc
pada Windows), misalnyaUntuk HTTPS, tambahkan baris:
Mandat pembantu
Untuk cache anda GitHub password di Git ketika menggunakan HTTPS, anda dapat menggunakan kredensial pembantu untuk memberitahu Git untuk mengingat GitHub username dan password setiap kali berbicara ke GitHub.
git config --global credential.pembantu osxkeychain
(osxkeychain penolong
diperlukan),git config --global credential.pembantu wincred
git config --global credential.pembantu cache
Terkait:
Anda dapat menggunakan kredensial pembantu.
dimana
x
adalah jumlah detik.Setelah anda clone repository
repo
, anda dapat mengeditrepo/.git/config
dan tambahkan beberapa konfigurasi seperti di bawah ini:Kemudian anda memenangkan't akan diminta untuk
username
danpassword
lagi.Aku tahu ini bukan solusi yang aman, tapi kadang-kadang anda hanya perlu sebuah solusi yang sederhana - tanpa menginstal apa pun. Dan sejak penolong = toko tidak bekerja untuk saya, saya membuat sebuah boneka helper:
Membuat script dan memasukkannya ke dalam pengguna bin folder, di sini bernama credfake, script ini akan memberikan username dan password anda:
membuatnya executable:
kemudian konfigurasikan di git:
(atau menggunakannya tanpa --global untuk satu repo saja)
dan - voilá - git akan menggunakan user + password.
Otentikasi token yang harus digunakan sebagai pengganti password akun. Pergi ke GitHub pengaturan/aplikasi dan kemudian membuat personal access token. Token dapat digunakan dengan cara yang sama password yang digunakan.
Token ini dimaksudkan untuk memungkinkan pengguna untuk tidak menggunakan password account untuk pekerjaan proyek. Hanya menggunakan password ketika melakukan pekerjaan administrasi, seperti membuat token baru atau mencabut tua token.
Bukan token atau password yang memberikan pengguna seluruh akses ke akun GitHub, sebuah proyek tertentu penyebaran kunci dapat digunakan untuk memberikan akses ke satu proyek repositori. Git proyek dapat dikonfigurasi untuk menggunakan kunci yang berbeda dalam langkah-langkah berikut ketika anda masih dapat mengakses lainnya Git akun atau proyek-proyek dengan normal credential:
Host
,IdentityFile
untuk penyebaran kunci, mungkinUserKnownHostsFile
, dan mungkinUser
(meskipun saya pikir anda don't perlu).ssh -F /path/ke/direktori/config $*
GIT_SSH=/path/ke/direktori/wrapper
di depan anda normal Git perintah. Di sinigit remote
(asal) harus menggunakangit@github.com:user/project.git
format.Hal ini lebih baik untuk menggunakan kredensial untuk keamanan, namun anda dapat menyimpannya untuk beberapa waktu menggunakan cache:
Kredensial anda akan disimpan selama 3600 detik.
Hal-hal yang sedikit berbeda jika anda're menggunakan dua-faktor otentikasi seperti saya. Karena saya didn't menemukan jawaban yang baik di tempat lain, saya'll stick satu ini, jadi mungkin aku dapat menemukannya nanti.
Jika anda're menggunakan otentikasi dua faktor, kemudian menentukan username/password tidak't bahkan pekerjaan - anda mendapatkan akses ditolak. Tapi anda dapat menggunakan aplikasi token akses dan penggunaan Git's credential penolong untuk cache untuk anda. Berikut ini adalah bersangkutan link:
Dan saya don't ingat di mana saya melihat ini, tapi bila anda're diminta untuk username - yang's di mana anda memasukkan aplikasi access token. Kemudian biarkan password kosong. Bekerja pada Mac saya.
Biasanya anda memiliki remote URL, sesuatu seperti ini,
Jika anda ingin melewatkan username dan password saat menggunakan git push`, coba ini:
I've hanya menambahkan URL yang sama (dengan rincian pengguna seperti password) ke asal.
CATATAN: Itu doesn't bekerja jika username email Id.
Ini bekerja untuk saya, saya'm menggunakan Windows 10