SSH şifremi yeniden girmeden bir "git çekme" işlemini nasıl gerçekleştirebilirim?


98

git/sshHer bir a yapmak istediğimde parolamı girmem için yapılandırmak mümkün mü git pull? Deponun github'da özel olduğunu unutmayın.

Veya alternatif olarak, özel bir Github deposundan kod dağıtımını otomatikleştirmek için en iyi uygulama ne olabilir?

Ek ayrıntılar: Fedora tabanlı genel bir AMI çalıştıran EC2 bulut sunucusu.



Bu sorunun çözümü var mı?
nim

Git 2.11+ (Q4 2016) itibarıyla libsecret kullanmak başka bir yoldur: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Yanıtlar:


70

Bu bağlantıya bir göz atın https://help.github.com/articles/working-with-ssh-key-passphrases/

Ancak anahtarı her kullandığımda uzun bir parola girmek istemiyorum!

Hiçbirini yapmam! Neyse ki, ssh-agentparolanızı güvenli bir şekilde kaydedip yeniden girmenize gerek kalmayan şık küçük bir araç var. OSX Leopard veya sonraki bir sürümdeyseniz, hayatınızı daha da kolaylaştırmak için anahtarlarınız sistemin anahtarlığına kaydedilebilir. Çoğu linux yüklemesi, oturum açtığınızda sizin için otomatik olarak ssh-agent'ı başlatır.


3
17.7k itibarı olan birine cevap verirken biraz gergin; Soruyu yanlış mı yorumladım ... ;-)
Fredrik Pihl

3
sinirli? emin olun: buradaki insanların büyük çoğunluğu oldukça iyi huylu ... ve olmayanların benden daha büyük sorunları var :)
jldupont

2
Bu bağlantı, parolanızın kaydedilmesini sağlamak için hangi komutların çalıştırılacağını açıklamada yardımcı oldu ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim

Anahtar kullanmak istemiyorum. Basit bir kullanıcı \
nim

Bağlantı neden yalnızca Mac / Widows seçenekleri sunuyor? Geçişe yeniden girmeden unix sunucusuna git çekmek istiyorum. tarihi bir proje için çalışmasını sağladı ama orada ne yaptığımı söyleyemiyorum. Uzak bir unix makinesine ssh yaptığınızda anahtarın iletildiği ve bunun yerine git çekme (veya özel besteci vcs) anahtarı olarak kullanıldığı nokta mı? Sanırım burada bir şeyi yanlış anlıyorum. Takdir edilen herhangi bir yardım :)
trainoasis

30

Parola önbelleğe almayı burada açıklandığı gibi etkinleştirdim:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Parolayı bir ay süreyle önbelleğe almak için:

git config --global credential.helper 'cache --timeout=2628000'

Teşekkürler temuri- Bu kesin ayrıntı için her yerde arıyordum. Çalışmıyordu, ancak belgeler görünüşe göre sadece HTTPS için olduğundan bahsetmiyor.
Mike Emery

2
Uzak bir Git deposunun SSH tabanlı bir URL'si için bir parola ( anahtar dosyası içeren bir parola değil) kullanıyorsanız, parolayı hiç kaydedemezsiniz. Ancak herhangi bir git komutunu verdikten sonra hemen şifreyi yazıp Enter tuşuna basabileceğinizi fark ettim . Parola isteminin görünmesini beklemenize gerek yoktur.
ADTC

1
git still ask pass
nim

12

Bunu dene:

git config credential.helper store

Şifrenizi bir kez girmeniz gerekecek, bundan sonra şifreniz kök içindeki bir klasörde saklanır.

Yorumların da işaret ettiği gibi, Bu, SSH şifreleri için ÇALIŞMAZ, sadece HTTPS şifreleri için.


1
@nim Bu, yanıta olumsuz oy vermeniz gerektiği anlamına gelmez, benim için neyin işe yaradığını önerdim ve birisi bunu yararlı bulabilir.
Yankee

Şifre kaydetme değil. Deniyorum ve sonuç yok. Bu ssh: // ad @ ip / yol gibi bir uzaktan kumanda ederseniz
nim

1
Bu, HTTP temel kimlik doğrulama şifresini saklamak istiyorsanız işe yarar.
Phil

4
Bu, SSH şifreleri için ÇALIŞMAZ, yalnızca HTTPS şifreleri için.
Eliezer Berlin

https için iyi çalışıyor. Bunu yazmanız yeterlidir. Bir dahaki sefere, açıklamayı en son girmeniz gereken zaman olmalıdır. Bir dahaki sefere şifre git tarafından hatırlanmalıdır.
Jonathan

7

Durumunuz şimdi düzeltildi, ancak benim için birden fazla anahtarım olduğu gerçeğiydi. ~/.ssh/

Sorunu çözmek için adlı bir dosya oluşturmalı ~/.ssh/configve şu satırı eklemeliydim:

IdentityFile ~/.ssh/my_key2_rsa

~/.ssh/my_key2_rsaanahtarım nerede


1
Bunun için teşekkürler, benim id_rsa ve id_rsa.pubdosyalarımın özel bir adı var, bu yüzden git onu asla tanımaz. ref: linux.die.net/man/5/ssh_config
lasec0203

6

Bunu neden henüz kimse rapor etmedi bilmiyorum. Ancak en basit yaklaşım AddKeysToAgent yes, .ssh / config dosyasının üstüne basitçe tek bir satır eklemek olacaktır . Tabii ssh-agentönceden koşuyor olmalı. Çalışmıyorsa ( ssh-agentterminaldeki komutla kontrol edin ), o zaman çalıştırıneval $(ssh-agent)

Bunun işe yaradığını teyit edebilirim, çünkü birçok alt modül içeren projemde ve klonlanan her alt modül için ssh parolamı yazmam gerekiyordu. Yukarıdaki numaradan sonra artık yapmama gerek yok.

Çözümün kaynağı /ubuntu/362280/enter-ssh-passphrase-once/853578#853578


Bu kesinlikle doğru cevap. Ayrıca, ssh-agent'ı çalıştırmak için bir systemd kullanıcı hizmetini kullanabilirsiniz
someonewithpc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.