Github öğreticisinde belirtildiği gibi anahtarlar oluşturdum, bunları github'a kaydettim ve ssh-agent'ı açıkça kullanmayı denedim - ancak git her çekiş veya itme yapmaya çalıştığımda parolamı sormaya devam ediyor.
Sebep ne olabilir?
Github öğreticisinde belirtildiği gibi anahtarlar oluşturdum, bunları github'a kaydettim ve ssh-agent'ı açıkça kullanmayı denedim - ancak git her çekiş veya itme yapmaya çalıştığımda parolamı sormaya devam ediyor.
Sebep ne olabilir?
Yanıtlar:
SSH aracısını aşağıdakilerle başlattıktan sonra:
eval $(ssh-agent)
Özel anahtarınızı buna eklemelisiniz:
ssh-add
Bu, parolanızı yalnızca bir kez soracaktır ve genel anahtarı Github'a yüklemeniz koşuluyla, itmenize izin verilmelidir.
Anahtarı macOS'ta kalıcı olarak kaydetmek için:
ssh-add -K
Bu, kapattıktan ve kullanıcının anahtarlığında saklayarak yeniden açtıktan sonra da devam edecektir.
git pull
, tekrar şifre sor.
ssh-add -K
kapattıktan ve kullanıcının anahtarlığında saklayarak yeniden açtıktan sonra da devam edecektir.
ssh-add -K
aşağıdakileri verir:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
-K
elmaya özgüdür. Bkz. Help.github.com/articles/…
Bu, OS X El Capitan'dan (10.11) macOS Sierra'ya (10.12) yükseltme yapıldıktan sonra yeniden başlatıldıktan sonra başıma geliyor. ssh-add
Çözelti geçici olarak çalıştı ama başka bir yeniden başlatma arasında varlığını olmaz.
Kalıcı çözüm seçeneği düzenlemek (veya oluşturmak) ~/.ssh/config
ve etkinleştirmektir UseKeychain
.
Host *
UseKeychain yes
İlişkili: macOS, Sierra'ya güncellediğimden beri ssh parolamı sormaya devam ediyor
ssh-add -K /Users/***/.ssh/git/id_rsa
ama terminal yeniden başlatıldıktan sonra hala çalışmıyordu ... teşekkür ederim.
Denediyseniz ssh-add
ve yine de parolanızı girmeniz istenirse kullanmayı deneyin ssh-add -K
. Bu, parolanızı anahtarlığınıza ekler.
Güncelleme: macOS Sierra kullanıyorsanız, yukarıdakilerin artık çalışmayabileceği için muhtemelen başka bir adım atmanız gerekir. Aşağıdakileri kendinize ekleyin ~/.ssh/config
:
Host *
UseKeychain yes
Aşağıdakileri deneyeceğim:
~/.bashrc
dosyasını
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
zsh
. Sadece bunu ekle.zshrc
id_rsa
. Özel bir adınız varsa, örn. /usr/bin/ssh-add ~/.ssh/custom_filename
Windows'da benim için ne işe yaradı (bir repo 1 kod klonlanmıştı):
eval $(ssh-agent)
ssh-add
git pull
hangi zamanda parolam için son bir kez daha sordu
Kredi: çözüm /unix/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket adresinden alınmıştır.
Bunu ~ / .ssh / config dosyasına eklemeyi deneyin :
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
... özel anahtarınızın id_rsa olduğunu varsayarsak
Benzer bir sorunum vardı, ancak diğer cevaplar sorunumu çözmedi. Başkasının benim gibi berbat bir düzene sahip olması durumunda devam edeceğimi düşündüm.
Anlaşılan birden fazla anahtarım vardı ve Git önce yanlış olanı kullanıyor. Bana parolamı girmesini isterdi ve ben girerdim, o zaman Git işe yarayacak farklı bir anahtar kullanırdı (parolayı girmem gerekmiyordu).
Sadece bir parola istemek için kullandığı anahtarı sildim ve şimdi çalışıyor!
SSH-Agent'ın kendisiyle ilgili sorun yaşıyor olabileceğiniz anlaşılıyor. Bunu gidermeyi denerdim.
1) Anahtarınızı SSH'ye eklemek için ssh-add yaptınız mı?
2) Kullanımlar arasında terminal penceresini kapatıyor musunuz, çünkü pencereyi kapatırsanız yeniden açtığınızda şifreyi tekrar girmeniz gerekecektir.
Yukarıdaki çözümler benim için işe yaramıyorsa, kontrol edilmesi gereken bir şey aslında ortak anahtara da sahip olmanızdır id_rsa.pub
. Olmaması olağandışı, ama bu benim için sebepti.
Genel anahtarınızı özel anahtarınızdan oluşturmak için:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Farklı çözümler deniyorum ama hiçbir şey yardımcı değil. Ancak Bitbucket.com dikişlerinden bu adımlar ( GitBash SSH ortamım her zaman parolamı istiyor, ne yapabilirim? ) İyi çalışıyor:
Fikir:
~/.bashrc
dosya oluştur
takip komut dosyası ekle:
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Bash'i yeniden çalıştır
Yukarıda belirtilmeyen bir diğer olası çözüm, uzaktan kumandanızı aşağıdaki komutla kontrol etmektir:
git remote -v
Uzaktan kumanda git ile başlamıyor ancak https ile başlıyorsa, aşağıdaki örneği izleyerek onu git olarak değiştirmek isteyebilirsiniz.
git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed