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-addile -Aseç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_profiledosyanı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 -Aseçenek çoğu temel durum için geçerli olsa da, son zamanlarda, daha yaygın id_rsa.pubkullanı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 -lbunlarla 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_rsaanahtarı / kimliği aşağıdaki gibi aracıya özellikle ekleyebilirsiniz :
ssh-add ~/.ssh/id_rsa
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 -lve 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; -Ayerinde 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 UseKeychainaçık SSH yapılandırma seçeneklerine bir seçenek ekledi ve ssh-add -Abir çözüm olarak da değerlendirdi.
MacOS Sierra 10.12.2'den itibaren Apple,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 -Alistenize .bash_profile bu Aç Radar bilet açıklandığı gibi veya ekleme UseKeychainkullanıcı başına seçeneklerden biri olarak ~/.ssh/config.
$ ssh-add -Kbana verirssh-add: illegal option -- K