Git pencerelerde ssh anahtarının parolasını sormaz mı?


43

Git bash kullanıyorum ve ssh-keygen kullanarak ssh anahtarını kuruyorum ve her defasında bir repo git ile bir şeyler yaptığımda parola sor /c/Users/jankiewj/.ssh/id_rsa. Bu parolayı devre dışı bırakmanın bir yolu var mı?



@Radoo yardım etmedi.
jcubic

Yanıtlar:


56

Bunu git bash içinde çalıştırabilirsiniz:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

ikinci komutta geçiş ifadesi isteyecektir ve hepsi bu kadar. Yapmanız gereken her ek işlem (bir kez gerekli parola ifadesi) sizden parola ifadesini istemez (aşağıdaki ekran resminde bir örneğe bakın):

Windows'da git bash'a şifre cümlesi ekleme


7
Tekrar girmek zorundayım, git bash'ı kapatır kapatmaz ... kalıcı bir çözüm var mı?
Siyah

@Siyah bu bash oturumu başına, bunu koydum, bu .bashrcyüzden git bash'ı her açışımda komut istemini alıyorum ve o oturum için hazırım.
jcubic

.Bashrc dosyasına tam olarak ne koyarsınız? Ve nerede .bashrc?
Siyah

Düzenleme: nevermind, içinde kendi dosya oluşturmak ~/.bashrcsonra yazı içine satırları girin ve kaydetmek, thats :) thx var!
Siyah

Yukarıdaki satırları kullanmak yerine, özellikle .bashrc, bir komut dosyası kullanmak ve ya .bash_profileveya içine yerleştirin .profile. İşte ana bölümümün bir parçacığı, .bash_profilehala bir cevap arayan herkes için bunu çözmeli; aşağıdaki cevaba benzer. Senaryo üst kısmında benim yüklemek .bashrc, hangi uygulanabilir değilse sadece dışarıda bırakın. Not: id_rsaÖzel SSH anahtarınızı adlandırdığınız her şeye ve belki de yola referansları değiştirmeniz gerekecektir .
Rockin4Life33

9

Biraz daha iyi ve kalıcı bir çözüm , git bash'ı pencerelerde açarken ssh-agent'ı otomatik olarak başlatmaktır. Aşağıdakileri kopyalayıp .profile veya .bashrc dosyasına yapıştırabilirsiniz. .Profile üzerine koymayı tercih ederim

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Bu çözüm bu github yardım makalesinden alınmıştır .


Basit kodumu girdim .bashrc, çözümünüz nasıl farklı? Windows bash'de her kabuk bağımsızdır, bu nedenle kabuğu çalıştırdığınızda aracı asla çalışmaz.
jcubic

Çözüm kodu içine koyarak iyi çalışır .bashrc. Ssh parolasını yalnızca ilk seferde sorma. Hayatımı korudum. Teşekkür ederim.
Ben Asmussen

teşekkürler bu hayatımı kurtarıyor.
gumuruh

Bu gerçekten kabul edilmiş cevap olmalı, çünkü kalıcı ve OP'nin sorduğunu düşündüğüm şeyi daha iyi karşılayan bir çözüm sunuyor.
Richard D

Başlangıçta yanlışlıkla yanlış parola yazdıysam ne yapmam gerekir? Düzenleme: dayanarak superuser.com/a/271673/647110 yapabilirsiniz ssh-add -Dtüm anahtarları silin.
Nils Guillermin

1

Bunu tavsiye etmek isteyip istemediğimden emin değilim, ancak Anahtarı oluşturduğunuzda ve şifre ayarlamanız istendiğinde, enter tuşuna basın ve şifreyi atlayın.

Nasıl kullanılacağı hakkında şu bağlantıya bir göz atın ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Belki bir ssh-agentşekilde size yardımcı olabilir. Ancak mevcut sisteminizi bilmeden emin değilim.


4
kesinlikle iyi bir cevap değil
Kennet Celeste

Windows 10'da çözmenin tek yolu buydu. "Yeni bir SSH anahtarı oluşturma ve ssh-agent'a ekleme" github rehberinin tüm adımlarını izledikten sonra, her zaman parola istedi. Ekledikten sonra bile. Bu davranış, benim saven dağıtım akışımı kırıyordu çünkü mvn release:performaşamada parola girmeden yayın etiketini kontrol etmeye çalışıyor. Yani sadece parolayı temizlemek bu sorunu çözdü.
Fernando Miguel Carvalho

-3

Bu git komutunu " ssh-keygen -p " depo yerinize girin. Bu işlem daha sonra anahtar dosya konumunu, eski parolayı ve yeni parolayı (parolasız boş bırakılabilir) girmenizi ister. Yeni şifreyle hiçbir şey girmeyin, şifre silinir


1
Boş bir şifre bırakmak güvenli değildir ve birçok şirket geliştiricisi kısıtlama nedeniyle boş bir parolaya sahip olamaz. Bu sorunlu bir çözüm, OP sorunu için bir çözüm değil.
cbaldan

belki topal, ama sadece yerel kullanım için, Lezzetli ve hızlı ™
Jim P
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.