Capistrano'yu kullanarak bazı kodları dağıtmaya çalışırken de bu sorunu yaşadım . Çok sinir bozucu. İşte bu sorunla başa çıkmak için bildiğim iki yöntem.
Yöntem 1: Bilinen tüm anahtarları SSH aracısına ekleyin .
Bu yüzden bulduğu çözüm çalıştırmaktır ssh-add
ile -A
seçeneğiyle-bu-benzeri anahtarlıkta sizin saklanan passphrases kullanarak SSH aracıya bilinen tüm kimlikleri ekler:
ssh-add -A
Şimdi bu işe yarıyor ama yeniden başlatmalar arasında sürmeyecek. Dolayısıyla, bir daha asla bu konuda endişelenmek istemiyorsanız, kullanıcı ~/.bash_profile
dosyanızı şu şekilde açın:
nano ~/.bash_profile
Ve bu satırı en altına ekleyin:
ssh-add -A 2>/dev/null;
Şimdi yeni bir Terminal penceresi açtığınızda, her şey yolunda olmalı!
Yöntem 2: Yalnızca, anahtarlıktaki SSH anahtarlarını aracıya ekleyin .
Bu nedenle, ssh-add -A
seçenek çoğu temel durum için geçerli olsa da, son zamanlarda, daha yaygın id_rsa.pub
kullanılan bir makinede 6-7 Vagrant kutusunun (erişim için SSH anahtarlarını / kimliklerini kullanan) kurduğu bir sorunla karşılaştım .
Uzun lafın kısası, sunucu erişimi bir parolaya dayandığından ve SSH anahtarları / kimlikleri SSH anahtarları / kimlikleri olduğundan, SSH anahtarlarına / kimliklerini temel alan çok sayıda başarısız denemeden dolayı uzak bir sunucudan kilitlendi. SSH ajanı tüm SSH anahtarlarımı denedi , başarısız oldu ve şifre istemine bile ulaşamadım.
Sorun şu ki ssh-add -A
, yapmanız gerekmese bile, sahip olduğunuz her SSH anahtarını / kimliğini keyfi olarak ekleyecektir; Vagrant kutuları durumunda olduğu gibi.
Çok fazla testten sonra benim çözümüm aşağıdaki gibiydi.
Öncelikle, acentenize ihtiyaç duyduğunuzdan daha fazla SSH anahtarı / kimliği eklenmişse, ssh-add -l
bunlarla gösterildiği gibi, hepsini de aracıdan temizleyin:
ssh-add -D
Bu işlem bittikten sonra SSH aracısını şöyle bir arka plan işlemi olarak başlatın:
eval "$(ssh-agent -s)"
Şimdi, garipleşiyor ve neden olduğundan emin değilim. Bazı durumlarda, ~/.ssh/id_rsa.pub
anahtarı / kimliği aşağıdaki gibi aracıya özellikle ekleyebilirsiniz :
ssh-add ~/.ssh/id_rsa.pub
Parolanızı yazın, vurun Returnve gitmeniz iyi olur.
Ancak, diğer durumlarda, basitçe çalıştırmak, anahtarı / kimliği eklemek için yeterlidir:
ssh-add -K
Hepsi işe yaradıysa, yazın ssh-add -l
ve listelenen bir yalnız SSH anahtarı / kimliği görmelisiniz.
Hepsi iyi? Şimdi aç şunu .bash_profile
:
nano ~/.bash_profile
Ve bu satırı en altına ekleyin; -A
yerinde olan varsa yorum yapın veya kaldırın :
ssh-add -K 2>/dev/null;
Bu, SSH anahtarının / kimliğinin her açılış / yeniden başlatma işleminde SSH aracısına yeniden yüklenmesini sağlayacaktır.
GÜNCELLEME: Apple şimdi UseKeychain
açık SSH yapılandırma seçeneklerine bir seçenek ekledi ve ssh-add -A
bir çözüm olarak da değerlendirdi.
MacOS Sierra 10.12.2'den itibaren Apple (sanırım) UseKeychain
SSH yapılandırmaları için bir yapılandırma seçeneği ekledi . Man sayfasını (üzerinden man ssh_config
) kontrol etmek aşağıdaki bilgileri gösterir:
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
Ya ekleme gibi Apple çözümü görmeye aşağı kaynar hangi ssh-add -A
listenize .bash_profile
bu Aç Radar bilet açıklandığı gibi veya ekleme UseKeychain
kullanıcı başına seçeneklerden biri olarak ~/.ssh/config
.