macOS Sierra güncellediğimden beri ssh şifremi sormaya devam ediyor


588

Parolayı hatırlıyordu ama şimdi her seferinde bana soruyor.

Yaptığım bu komut ile ortak anahtarı yeniden oluşturmam gerektiğini okudum:

ssh-keygen -y -f id_rsa > id_rsa.pub

ama hiçbir şeyi çözmedi.

MacOS'un şifremi tekrar hatırlamasını nasıl sağlayabilirim?


İlgili davranış yaşıyorum: Daha önce, anahtarlık iletişim kutusu parola istemek için açılır, şimdi sadece normal SSH konsol istemini alıyorum. Bazı yardımcı program kaydı muhtemelen gitmiştir.
Daniel B,

1
İd_rsa'mı oluşturduğum yıllar oldu ve hiçbir zaman bir parola kullanmamıştım ve bunu birçok sunucuya ssh olarak kullandım. Üzerinde gerçekten bir parola var mı, yoksa sadece Sierra'nın yapmam gerektiğini düşündüğü mü? $ Cat ~ / .ssh / id_rsa | olduğuna dikkat edin. kafa -2 ----- BAŞLANGIÇ RSA ÖZEL ANAHTAR ----- Proc-Type: 4, ŞİFRELİ
Joe Murray


Pretzo kullanıyorsanız ve bu cevapların hiçbiri sorununuzu çözmedi: sshModülün etkin durumda olmadığından emin olun zpretzorc. Yine de macOS'ta gereksizdir ve etkinleştirilirse, siz ekledikten sonra bile parolanızı soracaktır UseKeychain.
Jimothy

1
ssh -v ...yararlı bir hata ayıklama bilgisi olup olmadığını görmek için deneyin ...
rogerdpack

Yanıtlar:


1129

MacOS'un en son sürümünde (10.12.2) bu düzeltilmesi kolaydır. Sadece düzenleyin ~/.ssh/configve UseKeychainseçeneği etkinleştirin :

Host *
    UseKeychain yes

Başka bir şeyi değiştirmeye gerek yok. Artık her şey en son güncellemelerden önce çalışmakta olduğu gibi çalışıyor. İçin anahtar eklemenize gerek yoktur ssh-agent.


Düzenleme: Yine de parolanızı bir kez girmeniz gerekebilir. Eğer bilmiyorsanız, ortaya çıkarmak için bu talimatları izleyin .


24
Bu kesinlikle benim için çalıştı. Aşağıdaki her şey bu düzeltmeden daha karmaşık görünüyor.
Br.Bill

82
Not Host *bloğu (neredeyse) her zaman alt kısmında yer almalıdır ~/.ssh/configdosyası. Ne zaman sshayarları için arıyor kullandığı ilk bulduğu değeri. Böylece, joker karakter bloğunu sonuna koyarak, bir dizi varsayılan olarak işlev görür; Dosyayı daha önce belirterek belirli ana bilgisayarlar için ayarları geçersiz kılabilirsiniz.
Molomby

6
Bu benim için de işe yaradı ancak bir kez doğru parolaya girmek zorunda kaldım. Orada başka cevap onu hatırlamıyorum eğer şifreyi görebilirsiniz açıklamaktadır.
FGreg

26
Eğer config dosyası mevcut değilse, bir tane oluşturmak ve bunu eklemek de işe yarayacaktır.
wynshaft

6
Host *Başlığa ihtiyacınız yok . Bunun tüm ana bilgisayarlara uygulanmasını istiyorsanız tek satırınızı UseKeychain yesüstüne ekleyin .ssh/config.
sj26

185

Ben de aynı problemi yaşadım. MacOS Sierra anahtarlık, parolayı sormaya devam ediyor. IDRSA güvenlik için bir parola ile şifrelenmelidir. Sonra onu anahtarlığa eklemeyi dene.ssh-add -K ~/.ssh/id_rsa

Anahtarınız başka bir klasördeyse ~/.ssh, doğru klasörle değiştirin.

Anahtarlık şimdi ssh anahtarınızı bilir ve umarım hepsi çalışır (benimki)


25
Bu çalışıyor ancak bilgisayarımı yeniden başlattığımda kalıcı görünmüyor. Aynı sorunu yaşayan başka biri var mı?
joshua.paling

1
Evet, burada da aynı sorun. @ joshua.paling
kingkool68

18
@ joshua.paling, kingkool68 - Apple, ana OpenSSH davranışına uymak için SSH anahtarlarınızı yeniden başlatma sırasında hatırlama olanağını kaldırdı. Aynı işlevselliği sağlamanın diğer yolları için bu soruya bakın: apple.stackexchange.com/questions/254468/…
Evan Pon

@EvanPon Ama bu şifreli anahtarlarla çalışmaz, değil mi?
Konrad Rudolph

2
@KonradRudolph benim için çalışıyor. Seçeneği çağırmak ssh-add, söz -Akonusu kimliklere ait tüm şifreler için MacOS anahtarlığında arayacaktır. Şifrelerin anahtarlıkta olmaması durumunda sizi yönlendireceğine inanıyorum.
Evan Pon,

73

Bu da benzer sorunumu düzeltti:

/usr/bin/ssh-add -K

Bu anahtarlık anahtar kelimelerinizde saklar.

Güncelleme (teşekkürler @EasyCo): Bu çalışır ancak yeniden başlatmalar arasında kalıcı değildir. @ Bu sayfadaki Jukka-Suomela çözümü yok yeniden çalışabilmelidir. Bu cevabı burada bulabilirsiniz:

https://superuser.com/a/1158050/234685


3
İşe yarayan tek şey bu.
cryptic0

5
Bu çözümü kullanırken .ssh / .config oluşturmama gerek yoktu.
Shai

Bu benim için çalıştı. Ana bilgisayar dosyasını düzenlemeye gerek yok. Sierra'dayım.
cchiera

Bu benim için Mac OS Sierra'da çalıştı.
Dayron Gallardo

2
Daha önce belirtildiği gibi, bu çalışır ancak yeniden başlatmalar arasında kalıcı değildir. @ jukka-suomela'nın çözümü yeniden başlatmalar arasında çalışır.
EasyCo

40

Sadece bir kez doğru parolayı girmek zorunda kaldım ve çalışmaya başladı. Sorun şu ki, orijinal SSH şifremi hatırlamıyordum, ancak Github'dan bu adımları izleyerek onu kurtardım :

  • Finder'da, Anahtarlık Erişimi uygulamasını arayın.
  • Anahtarlık Erişimi'nde SSH'yi arayın.
  • Yeni bir iletişim kutusu açmak için SSH anahtarınızın girişine çift tıklayın.
  • Anahtarlık erişimi iletişim kutusu Sol alt köşede, Şifreyi göster seçeneğini seçin.
  • Yönetici şifreniz istenir. "Anahtarlık Erişimi" iletişim kutusuna yazın.
  • Şifreniz ortaya çıkacak.

2
Çalışmıyor Terminal hala "kötü parola" diyor
Jayden Lawson

18

Yukarıdaki çözümlerin hiçbiri Sierra'yı El Capitan'ı yeni bir MacBook Pro'ya kurduktan sonra işe yaramadı. Tasarım gereği olarak Sierra, SSH anahtarlarını anahtarlığa kaydetmez.

İki çözüm benim için çalıştı. Biri ssh-add -A &> /dev/null~ / .bash_profile komutunu eklemektir . Terminali her açtığınızda, bu komut çalıştırılacaktır ( &> /dev/nullkısım, komutun çıktısını / dev / null dosyasını gönderir).

Daha karmaşık ancak biraz daha hafif bir çözüm, macOS Sierra anahtar zincirinde SSH anahtarlarını kaydetme bölümünde önerildiği gibi OS'nin her açılışında yürütülen komut ile bir pist oluşturmaktır . Bu dosyayı oluşturmak için Xcode kullanmayı içerir.


Bu aynı zamanda Apple'ın resmi cevabı gibi görünüyor - bkz. Openradar.appspot.com/27348363
Nick Maynard

Şu ana kadar benim için en iyi çözüm. Mac OSX Sierra (10.12.2) kullanıyorum.
zyc

15

Düzeltmelerden biri ~ / .ssh / config dosyasına aşağıdakileri eklemektir:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

Alınan: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Ayrıca bakınız: https://apple.stackexchange.com/a/264974/3810


Şimdiye kadar, cevapların hiçbirinde, hiç kimse Bad configuration option: usekeychainUseKeychain ile karşılaştığım hatayı dile getirmedi (ancak büyük harfle yazılmıştır). Ancak , bu satırı kaldırarak ve AddKeysToAgent ve IdentityFile'den (hala ilk defa parolayı girmeniz gerekir) bırakarak çalışmasını sağlayabildim. Bu macOS Sierra 10.12.6 ile.
William Turrell

terminalde olduğumda ve ssh komutunu kullandığımda bu iyi çalışır, ancak kendi terminalini kullanan WebStorm gibi diğer uygulamalar normal terminalde ilk ssh komutunu kullanana kadar bu yapılandırmayı yapmazlar. sonra her yerde, herhangi bir öneriniz var mı?
santiago arizti

@WilliamTurrell Bu hala devam ederse , Fink veya MacPorts'un bir sürümünü which sshkullanıp kullanmadığınızdan emin olmak için yazın veya/usr/bin/ssh/usr/local/bin/ssh/opt/local/bin/ssh
Stefan Lasiewski

7

Bu sabah, Sierra'ya geçtikten sonra seninle aynı problemi yaşadım. Benim durumumda, id_rsadosya şifreli ve şifresini çözdükten sonra bir cazibe gibi çalışıyordu.

  1. id_rsaDosyanızın aşağıdaki komutla şifrelenip şifrelenmediğini doğrulayın :cat ~/.ssh/id_rsa | head -2
  2. İkinci satır diyorsa Proc-Type: 4,ENCRYPTEDşifreli ve şifresini çözmeyi deneyebilirsiniz
  3. Önemli: orijinal id_rsadosyanızı yedekleyin ! Komutu kullancp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Özel anahtarınızın şifresini çözün openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Orijinal anahtarı ( rm ~/.ssh/id_rsa) çıkarın ve şifresi çözülmüş olanla değiştirin:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Bu adımlardan sonra tekrar ssh kullanabilmelisiniz.


4
Bu bir tür geçici çözüm olsa da, OP'nin problemini çözdüğünü sanmıyorum .
Daniel B,

Bu benim için çalışıyor. @DanielB, bunu yapmanın sorunu nedir?
Dag Høidahl

7
@ DagHøidahl Anahtar artık şifrelenmeyecek. Düzenli kullanıcı haklarıyla çalınabilir, bu yüzden şifreleme güçlü bir yöntemdir.
Daniel B

6
Bu, şifreyi anahtardan kaldırır, bu nedenle OP'nin sorunu etrafında çalışır. Ancak buna karşı öneriyorum. Şifre, insanların çalındığında anahtarınızı kullanmalarını engelleyen tek şeydir. Anahtarınız muhtemelen birden fazla sisteme erişim sağlayacağından, zayıflatmak istemezsiniz.
Martijn Heemels


4

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_rsa.pubanahtarı / 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 -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 (sanırım) UseKeychainSSH 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.


3

Jukka Suomela 'ın cevabı doğrudur, ancak kullanarak eğer opensshyüklenmiş homebrew, o zaman da bunu kaldırmak gerekir:

brew remove openssh

... sistem varsayılan openssh'a geri dönmek için, çünkü homebrew'unki UseKeychainssh config girişini desteklemiyor .


1
Herhangi biri evdekileri
rogerdpack

1

Burada önerilen tüm çözümleri denedim, ancak Mac'imde anahtarlık kurulmadı.

.ssh/configHem yerel hem de uzak makinede üstteki dosyaya aşağıdaki satırı ekleyerek benim için çalıştı.

PubkeyAcceptedKeyTypes=+ssh-dss 

1

Her macOS başlangıcında çalıştırmak için .plisteklenmiş bir dosyaya ihtiyacınız var .~/Library/LaunchAgents/ssh-add -A

Bunu yapan tek bir komut var ( SSH-anahtarlarını-macOS-Sierra-anahtarlığından ):

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
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.