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.