GitExtension'da kullanıcı ve şifremi her seferinde bir komut istemi olmadan otomatik olarak bir push-pull kullanmak istiyorum .
Peki git'te kimlik bilgilerimi nasıl kaydedebilirim?
GitExtension'da kullanıcı ve şifremi her seferinde bir komut istemi olmadan otomatik olarak bir push-pull kullanmak istiyorum .
Peki git'te kimlik bilgilerimi nasıl kaydedebilirim?
Yanıtlar:
Çalıştırmak
git config --global credential.helper store
sonra
git pull
bir kullanıcı adı ve şifre girin ve bu ayrıntılar daha sonra hatırlanacaktır. Kimlik bilgileri, "yalnızca kullanıcı tarafından okunabilir / yazılabilir" disk izinleriyle, ancak yine de düz metin olarak diskteki bir dosyada depolanır.
Parolayı daha sonra değiştirmek isterseniz
git pull
Parola yanlış olduğu için başarısız olur, git sonra rahatsız edici kullanıcı + parolayı ~/.git-credentials
dosyadan kaldırır , bu yüzden şimdi yeniden çalıştırın
git pull
daha önce çalışacak şekilde yeni bir şifre sağlamak.
git config
Git'te kimlik bilgileri depolamasını etkinleştirmek için öğesini kullanabilirsiniz .
git config --global credential.helper store
Bu komutu çalıştırırken, uzak depodan ilk kez çektiğinizde veya ittiğinizde, kullanıcı adı ve şifre sorulur.
Daha sonra, uzak havuzla daha sonra iletişim kurmak için kullanıcı adı ve parola girmeniz gerekmez.
Depolama biçimi, .git-credentials
düz metin olarak depolanan bir dosyadır.
Ayrıca, git config credential.helper
bellek önbelleği için diğer yardımcıları kullanabilirsiniz :
git config credential.helper cache <timeout>
bu, isteğe bağlı olarak timeout parameter
, kimlik bilgilerinin ne kadar süreyle bellekte saklanacağını belirler. Yardımcıyı kullanarak kimlik bilgileri hiçbir zaman diske dokunmaz ve belirtilen zaman aşımından sonra silinir. default
değerdir900 seconds (15 minutes).
UYARI : Bu yöntemi kullanırsanız, git hesabı parolalarınız plaintext
biçiminde global .gitconfig file
, örneğin linux'ta/home/[username]/.gitconfig
Bu sizin için istenmiyorsa ssh key
, hesaplarınız için bir kullanın.
git config credential.helper cache
şifreleri bir dosyaya kaydedilmez, sadece hafızada saklanır. Bakınız: git-scm.com/docs/git-credential-cache
Önerilen ve Güvenli Yöntem: SSH
Bir ssh Github anahtarı oluşturun. Git github.com -> Ayarlar -> SSH ve GPG tuşları -> Yeni SSH Anahtar. Şimdi özel anahtarınızı bilgisayarınıza kaydedin.
Özel anahtar olarak kaydedilir Sonra, id_rsa içinde ~ / .ssh / dizinine, biz gibi kimlik doğrulaması için ekleyin:
ssh-add -K ~/.ssh/id_rsa
Daha Güvenli Bir Yöntem: Önbellekleme
Git-credential-store'u kullanarak kullanıcı adımızı ve şifremizi bir süre önbelleğe alabiliriz. CLI'nize (terminal veya komut istemi) aşağıdakileri girmeniz yeterlidir:
git config --global credential.helper cache
Zaman aşımı süresini (saniye cinsinden) aşağıdaki gibi de ayarlayabilirsiniz:
git config --global credential.helper 'cache --timeout=3600'
Daha Az Güvenli Bir Yöntem
Git-credential-store da kullanılabilir, ancak şifreleri diskinizdeki düz metin dosyasına şu şekilde kaydeder:
git config credential.helper store
Eski Cevap - Hızlı ve Güvensiz
Bu, şifrenizi düz metin olarak saklamak için güvenli olmayan bir yöntemdir. Birisi bilgisayarınızın kontrolünü ele geçirirse, şifreniz ortaya çıkar!
Kullanıcı adınızı ve şifrenizi şu şekilde ayarlayabilirsiniz:
git config --global user.name "your username"
git config --global user.password "your password"
Terminal'e aşağıdakileri girin:
# Set git to use the credential memory cache
git config --global credential.helper cache
Varsayılan olarak Git, şifrenizi 15 dakika boyunca önbelleğe alır.
Varsayılan şifre önbellek zaman aşımını değiştirmek için aşağıdakileri girin:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
Gönderen GitHub Yardım
cache
parçayı değiştirin store
. Yani, tam komut olacaktır: git config --global credential.helper store
. Bunun, şifrenizi açık metin dosyasında saklayacağını unutmayın (herhangi bir şifreleme olmadan).
--timeout
Parametre için maksimum değer nedir ?
Kimlik bilgilerinizi saklamak için ~/.gitconfig
dosyayı düzenleyebilirsiniz
sudo nano ~/.gitconfig
Hangisi zaten olmalı
[user]
email = your@email.com
user = gitUSER
Bu dosyanın altına eklemelisiniz.
[credential]
helper = store
Bu seçeneği önermemin nedeni küresel olması ve herhangi bir noktada seçeneği kaldırmanız gerektiğinde, nereye gideceğinizi ve değiştireceğinizi biliyorsunuzdur.
SADECE BU SEÇENEKLERİ KİŞİSEL BİLGİSAYARDA KULLANIN.
Sonra çektiğinizde | klon | git git parolanızı girin, genel olarak parola ~/.git-credentials
biçiminde kaydedilir
https://GITUSER:GITPASSWORD@DOMAIN.XXX
DOMAIN.XXX NEREDE GITHUB.COM OLABİLİR | BITBUCKET.ORG | DİĞER
Dokümanlara Bakın
Kimlik bilgilerinizi şu şekilde Url'ye koyun:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Bu şekilde saklayabilirsiniz :
git remote add myrepo https://Userna...
... kullanmak için örnek :
git push myrepo master
Şimdi URL takma adlarını listelemek için:
git remote -v
... ve bunlardan birini silme komutunun:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
unutmayın ssh
, bu nedenle böyle bir çözüm burada yararlı olabilir. Ayrıca GitHub şifrenizden çok daha güvenli olan bir oauth jetonu kullanabileceğinizi unutmayın.
Global ayar için aşağıdakileri çalıştıran terminali açın (herhangi bir yerden):
git config --global user.name "your username"
git config --global user.password "your password"
Böylece, makinenizde bulunan tüm yerel git repoları bu bilgileri kullanacaktır.
Her repo için ayrı ayrı yapılandırarak şunları yapabilirsiniz:
aşağıdakileri çalıştırın:
git config user.name "your username"
git config user.password "your password"
Yalnızca bu klasörü etkiler (yapılandırmanız yerel olduğundan).
--local
etiket ekledi ama yine hiçbir şey olmuyor
Git-credential-store kullanarak şifrelerinizi şifrelenmemiş olarak sadece dosya sisteminin izinleriyle korunan bir diskte saklayabilirsiniz.
Misal
$ 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]
Dosyada saklanan kimlik bilgilerini kontrol edebilirsiniz ~/.git-credentials
Daha fazla bilgi için git-credential-store adresini ziyaret edin - Kimlik bilgilerini diskte saklamak için yardımcı
SSH kimlik doğrulaması kullanıyorsanız kullanıcı adı / şifre kimlik doğrulamasından daha güvenli olacaksınız.
Mac kullanıyorsanız, SSH istemci kimlik doğrulaması MacOS anahtar zincirine entegre edilmiştir. Bir SSH anahtarı oluşturduktan sonra terminalinize yazın:
ssh-add -K ~/.ssh/id_rsa
Bu, SSH özel anahtarını MacOS anahtarlığına ekleyecektir. Git istemcisi uzak sunucuya bağlandığında ssh kullanır. Ssh genel anahtarınızı sunucuya kaydettirdiğiniz sürece, iyi olacaksınız.
SSH
. HTTP kimlik doğrulaması kullanıldığında, kimlik bilgilerini çalan birisinin yalnızca erişimi olur GitHub/GitLab
. Ayrıca jeton sınırlı bir ömre sahip olacak şekilde tasarlanmıştır.
Düzinelerce SO yayını, blogu vb. Üzerinden geçtikten sonra her yöntemi denedim ve bulduğum şey bu. HER ŞEYİ kapsar.
Bunlar, bir depoyu etkileşimli bir parola istemi olmadan klonlamak için git'i güvenli bir şekilde doğrulayabileceğiniz tüm yollar ve araçlardır .
Just Works ™ ister misiniz? Bu sihirli gümüş mermi.
Erişim Simgenizi alın (bunun için Github veya Gitea talimatlarına ihtiyacınız varsa hile sayfasındaki bölüme bakın) ve bir ortam değişkenine (hem yerel geliştirici hem de dağıtım için) ayarlayın:
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Github için şu satırları aynen kopyalayın ve çalıştırın :
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:"
Tebrikler, artık git depolarını klonlayan herhangi bir otomatik araç, ister https ister ssh url stilinden biri olsun, bir parola istemiyle engellenmeyecektir.
Github kullanmıyor musunuz?
Diğer platformlar (Gitea, Github, Bitbucket) için URL'yi değiştirmeniz yeterlidir. Kullanıcı adlarını değiştirmeyin (rastgele olmasına rağmen, farklı yapılandırma girişleri için gereklidir).
uygunluk
MacOS, Linux, Windows (Bash'ta), Docker, CircleCI, Heroku, Akkeris vb.
Daha fazla bilgi
Hile sayfasının ".gitconfig yerineOf" bölümüne bakın.
Güvenlik
Hile sayfasının "Güvenlik" bölümüne bakın.
git config --global credential."https://somegithost.com".username MyUserName
ki, içinde senin Pardus, ancak başka hiçbir yerde bu cevabı dizisindeki. Bu özel çözüm OP'nin sorusuna cevap vermiyor, ama benimkini yanıtladı, bu yüzden teşekkürler!
Bu durumda, git komutunu GitHub şifrenizi ve kullanıcı adınızı aşağıdaki komut satırını kullanarak hatırlayabilmeniz için söylemeniz gerekir:
git config --global credential.helper wincred
ve SSH anahtarını kullanarak repo kullanıyorsanız, kimlik doğrulaması için SSH anahtarına ihtiyacınız vardır.
Yukarıdaki cevapların hiçbiri benim için işe yaramadı. İstesem şu her zaman elde tutulan fetch
veya pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Mac'ler için
Parolamı şu şekilde sormasını durdurabildim:
vi ~/.ssh/config
UseKeychain yes
:wq!
Pencereler için
Bu Stack Exchange bilgiyi kullanarak işe almak başardı: https://unix.stackexchange.com/a/12201/348665
~/.gitconfig
Dosyayı düzenlemenin yanı sıra, şunları sorarsanız yapabilirsiniz:
git config --local --edit
veya
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
veya
git config --global user.name 'your username'
git config --global user.password 'your password'
Kullanıcı adınız ve şifreniz, çift tırnak işareti kullanırsanız şifrenizi kıracak bazı karakterler kullanabilir.
--local
veya --global
konfigürasyon parametrelerinin proje veya işletim sistemi kullanıcısı için kaydedildiği anlamına gelir.
sadece kullan
git config --global credential.helper store
ve git çekme yapmak, kullanıcı adı ve şifre isteyecek, bundan sonra ayrıntıları saklayacak kullanıcı adı ve şifre için herhangi bir istem sağlamayacak
.git-credentials
çalıştırdığınızda kullanıcı adınızın ve şifrenizin (erişim belirteci) depolandığı yerdir git config --global credential.helper store
; bu, diğer yanıtların önerdiği şeydir ve daha sonra kullanıcı adınızı ve şifrenizi veya erişim belirtecinizi yazın:
https://${username_or_access_token}:${password_or_access_token}@github.com
Bu nedenle, kullanıcı adını ve şifreyi (erişim belirteci) kaydetmek için:
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Bu, github robot için, örneğin farklı dal için kurallara sahip olarak aynı docker deposundaki Zincir otomatik yapıları çözmek ve daha sonra post_push
docker hub'ındaki fahişeye iterek tetiklemek için çok yararlıdır .
Git kimlik bilgilerini önbelleğe almanın hızlı bir yolu:
git config credential.helper 'cache' --timeout=10800
iyi ve güvenli
zaman aşımı saniye cinsindendir.
Konuyu tam olarak okuduktan ve bu sorunun yanıtlarının çoğunu denedikten sonra, sonunda benim için çalışan prosedürü buldum. Birisi karmaşık bir kullanım durumu ile uğraşmak zorunda ama yine de tam iş parçacığı ve gitcredentials , gitcredentials-mağaza vb adam sayfaları, gitmek istemiyorum durumunda paylaşmak istiyorum .
Önerim prosedür aşağıda bul EĞER (benim gibi) birkaç farklı kullanıcı adı / şifre kombinasyonları kullanarak çeşitli sağlayıcıları (GitLab, GitHub, Bitbucket, vb) birkaç depoları ile uğraşmak zorunda. Bunun yerine birlikte çalışmak için sadece tek bir hesap varsa, o zaman istihdam daha iyi olabilir git config --global credential.helper store
ya da git config --global user.name "your username"
çok iyi olmuş önceki cevapları açıkladık vb çözümler.
Çözümüm:
> 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'
Not : Bu komut, Git dizininizin kimlik bilgilerini sakladığı ana dizininizde ".git_repo_credentials" adlı yeni bir dosya oluşturur. Bir dosya adı belirtmezseniz Git, varsayılan ".git_credentials" öğesini kullanır. Bu durumda, aşağıdaki komutu vermek yeterlidir:
> git config credential.helper store
git config credential.*.username my_user_name
Not : havuzlarınız aynı sağlayıcıdan (örneğin GitLab) geliyorsa, "*" kullanmak genellikle uygundur. Bunun yerine havuzlarınız farklı sağlayıcılar tarafından barındırılıyorsa, aşağıdaki örnekte (GitLab için) olduğu gibi, her havuz için sağlayıcıya bağlantıyı açıkça ayarlamanızı öneririm:
git config credential.https://gitlab.com.username my_user_name
Bu noktada, kimlik bilgilerinizi (örn. git pull
) Gerektiren bir komut verirseniz, "my_user_name" ifadesine karşılık gelen bir parola istenir. Git yalnızca kimlik bilgilerini ".git_repo_credentials" dizininde sakladığı ve sonraki erişimlerde otomatik olarak aynı verileri kullandığı için bu yalnızca bir kez gereklidir.
Rifrol'un yorumundan, Linux Ubuntu üzerine, bu cevaptan Ubuntu'da şöyle:
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
Diğer bazı dağıtımlar ikili dosyayı sağlar, böylece onu oluşturmak zorunda kalmazsınız.
OS X'te genellikle "osxkeychain" varsayılan modülü ile "inşa edilmiş" olarak gelir, böylece ücretsiz olarak alabilirsiniz.
Resmi git belgelerine bakın:
Uzaktan kumandalara bağlanmak için SSH aktarımını kullanırsanız, kullanıcı adınızı ve şifrenizi yazmadan verileri güvenli bir şekilde aktarmanızı sağlayan, parola içermeyen bir anahtara sahip olmanız mümkündür. Ancak, HTTP protokolleri ile bu mümkün değildir - her bağlantının bir kullanıcı adı ve parolaya ihtiyacı vardır. Bu, iki faktörlü kimlik doğrulaması olan sistemler için daha da zorlaşır; burada parola için kullandığınız belirteç rasgele oluşturulur ve okunamaz hale gelir.
Neyse ki Git'in bu konuda yardımcı olabilecek bir kimlik sistemi var. Git'in kutusunda birkaç seçenek vardır:
Varsayılan değer hiç önbelleklememektir. Her bağlantıda kullanıcı adınız ve şifreniz istenir.
“Önbellek” modu kimlik bilgilerini belirli bir süre bellekte tutar. Parolaların hiçbiri diskte saklanmaz ve 15 dakika sonra önbellekten temizlenir.
“Depo” modu, kimlik bilgilerini diskteki düz metin dosyasına kaydeder ve süresi asla dolmaz. Bu, Git ana bilgisayarı için parolanızı değiştirene kadar kimlik bilgilerinizi bir daha yazmak zorunda kalmayacağınız anlamına gelir. Bu yaklaşımın dezavantajı, şifrelerinizin ana dizininizdeki düz bir dosyada açık metin olarak saklanmasıdır.
Mac kullanıyorsanız Git, sistem hesabınıza eklenen güvenli anahtarlıktaki kimlik bilgilerini önbelleğe alan “osxkeychain” modu ile birlikte gelir. Bu yöntem kimlik bilgilerini diskte depolar ve süresi asla dolmaz, ancak HTTPS sertifikalarını ve Safari otomatik dolgularını depolayan aynı sistemle şifrelenir.
Windows kullanıyorsanız, “Windows için Git Kimlik Bilgisi Yöneticisi” adlı bir yardımcı yükleyebilirsiniz. Bu, yukarıda açıklanan "osxkeychain" yardımcısına benzer, ancak hassas bilgileri denetlemek için Windows Kimlik Bilgisi Deposu'nu kullanır. Https://github.com/Microsoft/Git-Credential-Manager-for-Windows adresinde bulunabilir .
Git yapılandırma değeri ayarlayarak bu yöntemlerden birini seçebilirsiniz:
$ git config --global credential.helper cache
$ git config --global credential.helper store