SSH özel anahtar izinleri 0600 olarak ayarlandığında şifre diyalog penceresi görünür.


71

SSH özel anahtarımı yerleştirdim ~/.ssh/id_rsave izinlerini olarak ayarladım 0600. Terminal.app üzerinden özel anahtarımı kullanan bir SSH sunucusuna bağlandığımda sshbir iletişim kutusu açılır ve id_rsadosyaya erişmek için şifremi girmemi ister :

görüntü tanımını buraya girin

Interarchy GUI istemcisiyle bir FTP sunucusuna bağlandığımda aynı iletişim kutusunu görüyorum.

Güncelleme: "İletişim anahtarlığımdaki şifreyi hatırla" seçeneğini işaretleyip kontrol etmediğimden bağımsız olarak, bu iletişim kutusunu her gördüğümde görüyorum. Şifre alanına ne girildiğinden bağımsız olarak Tamam düğmesine tıklandığında iki kez daha görünür.

Bu izinleri rahatlattığımda 0640, artık, şifremi isteyen bir iletişim kutusu görmüyorum, ancak sshaşağıdaki hatayı bırakıyor:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ UYARI: KORUMA ÖZEL KEY DOSYA! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
'/Users/myusername/.ssh/id_rsa' için izinler 0640 çok açık.
Özel anahtar dosyalarınıza başkaları tarafından erişilemez.
Bu özel anahtar dikkate alınmayacak.
hatalı izinler: anahtarı yoksay: /Users/myusername/.ssh/id_rsa

Şifre iletişim kutusunu son derece sinir bozucu buluyorum ve SSH'nin id_rsadosyaya erişmesi için gereken bu iletişim kutusunu kapatmaktan kaçınmanın bir yolu olması gerektiğinden eminim .

Not: Mac OS X 10.6.8 kullanıyorum.

Yanıtlar:


70

Eğer karşılık gelen olduğundan emin olun id_rsa.pubveya id_dsa.pubsizin içinde ~/.sshdizine.

Buna id_rsakarşılık gelen bir eşim olmadığı zaman id_rsa.pub, Mac OS X diyaloğu açmaya devam etti ve anahtarlığımdaki parolayı hiçbir şey yapmadı.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

benim için uygun ortak anahtar dosyasını oluşturdu.

Genel dosyanız orada zaten varsa (başka bir adla yeniden adlandırın) ve yukarıdaki anahtarı kullanarak genel anahtarı yeniden oluşturduysanız, oluşturulan ve eskisinin eşit olmadığını fark edeceksiniz. Her nasılsa, Mac OS X’in eski sürümleri Lion’un artık sevmediği bir genel anahtar oluşturdu ve onu yeniden üretti.

Meraklı için, anahtar tamamen aynıdır, değişen kısım artık dosyadaki anahtardan sonra "yorum" bölümü olmamasıdır.


2
Bu çözüm ilk bakışta pek bir anlam ifade etmeyebilir, ancak deneyin. Ben de aynı problemi yaşıyordum ve düzeltti. Ben her zaman ssh anahtarlarımda bir şifre kullanırım ve sen de yapmalısın.
Alex Recarey,

3
Bu çözüm benim için çalıştı. Hiçbir anlamı yok ama işe yarıyor! (OS X Lion)
bruno077 29:12

2
Vay, bu hiçbir şekilde sıfır anlam ifade etmiyor, fakat sistemimdeki garip davranışları düzeltti. Teşekkürler.
Warren Pena

2
Hayatım boyunca, günlerce aynı konuyla ilgili bir çözüm bulamadım ve bu benim için düzeltti. Bu hiç mantıklı gelmiyor ama sorunumu çözdü! Teşekkürler, oy verildi.
Danny Englander

OMG teşekkürler! Benim için çalıştı (dağ aslanı ve SourceTree kullanarak) bu diyaloglar çok can sıkıcıydı.
Sebastian Sastre

91

İlk önce, çalıştırın ssh-add -Kve bunun sorunu çözüp çözmediğini kontrol edin.

Değilse:

  • Rsa_id.pub dosyası kaldırıldı ve yeni bir tane oluşturuldu (~ / .ssh / içinde olmalıdır):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Hem id_rsa hem de id_rsa.pub için izinlerin 600 olarak ayarlandığından emin olun (~ / .ssh / içinde olmalıdır):

    chmod 600 id_rsa*
  • Aşağıdaki komutu çalıştırın:

    ssh-add -K

Bunu yaptıktan sonra, artık özel anahtar şifremi vermem istenmedi. Bu aslında OS X'in kullanması için özel anahtar şifresini doğru anahtarlık konumuna koyuyor gibi görünüyor.


7
Ben "ssh-add -K" komutunu geçinceye kadar GELECEK GELDİ OSX'in ne kadar karmaşık şeyler yaptığına inanmıyorum. +1000
eduncan911

4
fwiw, chmod 600çalışması için (644 yerine) ihtiyacım vardı
kangax

1
644 ile Özel Anahtar bueno değil
xtian

15
ssh-add -Ksorunumu
çözdüm

2
Chmod 644, chmod 600'e düzeltilene kadar yükseltme yapmaz, bu güvenli değildir.
Tomáš Kafka,

20

Benim durumumda ssh-add -Khile yapmadım, anahtarı belirtmek zorunda kaldım:

ssh-add ~/.ssh/id_rsa

Hiçbir yoktur -Kseçeneği artık. Çözümün düzeltti. Bunu neden yapmam gerektiğini merak ediyorum. Hiç şifre isteminde bulunmadınız.
DannyRe,

Teşekkürler! Bu OS X Sierra sonunda benim id_rsa şifremi istedi.
Tomáš Kafka

2
FWIW, -Kbayrak Sierra'da çalıştı 10.12.2
Chris Wagner

Evet. Onaylayabilirim. -K var ve sorunu en yeni Sierra'da düzeltti! İyi iş @ nathancahill.
Matt Komarnicki

17

MacOS 10.12 için Sierra'nın ssh-add -Kher yeniden başlatmanın ardından çalıştırılması gerekiyor. Bunu önlemek için ~/.ssh/configbu içerikle oluşturun.

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

Apple, neler olduğunu açıklayan Technote 2449'u ekledi .

MacOS Sierra'dan önce, ssh, parolanızı soran bir iletişim kutusu sunacak ve bunu anahtarlığa saklama seçeneği sunacaktı. Bu kullanıcı arayüzü bir süre önce kullanımdan kaldırıldı ve kaldırıldı.

Düzenleme: Görünüşe göre bir ana bilgisayar ve anahtar belirlemek gerekli değildir. Sadece bunu eklemek yeterli.

AddKeysToAgent yes
UseKeychain yes

Bu benim için çalıştı. İlk başta ssh-add -K'yi denedim, ancak değişiklik sadece yeniden başlatılıncaya kadar işe yarayacak.
Gandalf458

Ben AddKeysToAgentüst seviyeye koymak gerekiyordu ~/.ssh/config.
Radon Rosborough 19:17

12

Özel anahtar parolasını bir yere girmelisiniz ve OS X varsayılan olarak ssh-agent kullanıyor.

Ssh-agent kullanmak, ancak gui iletişim kutusundan kaçınmak istiyorsanız, şifreyi ajana eklemek için ssh-add komutunu ve ardından her zamanki gibi ssh kullanabilirsiniz.

Ssh-agent kullanmak istemiyorsanız ve bunun yerine parola ssh komut istemine sahipseniz, SSH_AUTH_SOCK ortam değişkenini ayarlayın.


Sağol Alrescha. Özel anahtar şifrenizi Mac OS X anahtarlığında kalıcı olarak saklamanın bir yolu olup olmadığını biliyor musunuz (yalnızca bir oturum için değil)?
titanyumdecoy

3
Terminal'de 'ssh-add -K' komutunu deneyebilirsiniz, ancak kutuyu işaretlemenin çalışmadığı bir hata varsa, o zaman bu çalışmayabilir. Ssh şifrelerimin anahtarlıkta saklanmasını istemiyorum bu yüzden test etmedim.
zzz

İle ssh-add -Kbenim şifre girmek gerekmez bağlamak ama istemi görünmeye devam etmek; Sadece reddettim.
titaniumdecoy

3
ssh-add -K, parolanızı anahtarlığa eklemek için kullandığınız şeydir. Eğer şifrenizi girmezseniz, anahtarlığa giremezsiniz.
zzz

1
Zeyilname: Lion ve Snow Leopard'ın her ikisinde de, eğer ssh-add -K girersem, Terminal'den bilgi alırım - bir iletişim kutusu olmaz.
zzz

8

İzinleri gevşettiğinizde, anahtar dikkate alınmaz. Bunu yaparak hiçbir şey kazanamazsın.

Her seferinde bir şifre girmek zorunda kalmadan bir anahtar kullanmak istiyorsanız, iki seçeneğiniz vardır.

“Anahtarlığımdaki şifreyi hatırla” seçeneğini işaretlerseniz, her seferinde şifreyi yazmak zorunda kalmazsınız: anahtarlıkta diğer tüm şifrelerinizle birlikte saklanır. Bu önerilen seçenek.

Şifre olmadan özel bir anahtar dosyası oluşturabilirsiniz. Mevcut özel anahtar dosyanızı şifreyle korunmayacak şekilde değiştirebilirsiniz (şifrenin değiştirilmesi sadece anahtar dosyasını değil, anahtarın kendisini etkiler). Komut satırından çalıştırın ssh -p, mevcut parolayı girin ve ardından yeni parolayı boş bırakın. Boş bir parola ifadesinde güvenlik riski vardır: Özel anahtar dosyanıza erişebilen (örneğin yedeklerinize erişerek) herkes anında kullanabilir.


Cevabınız için teşekkürler, bahsetmeyi unuttuğum bir şey olmasına rağmen - "Anahtarlığımdaki şifreyi hatırla" seçeneğinin işaretlenmesinin bir etkisi olmadı: Bir sonraki bağlanışımda iletişim kutusu yeniden beliriyor. (Boş bir parola kullanmak benim için bir seçenek değildir.)
titaniumdecoy

3
Parola korumalı bir anahtarı parola olmadan bir anahtarla değiştirmeyi
önermek

5

Özel anahtarınızı ~ / .ssh kaynak dizinine eklediyseniz ve bunu anahtarlığa eklemek için ssh-add -K yazdıysanız ve genel anahtar içeriğinizi .ssh / yetkili_ anahtarlarına kopyaladığınızdan (doğru için) hesap) hedef sunucudaki dosya iletişim kutusu gider.

Zaman, zaman alabilmesi için zor bir dosya, izin, konum ve komut kombinasyonudur. böcekler hakkında bir sonuca varmayacağım.


3

Lion'da da aynı problemim var (Mac OS X 10.7). Sanırım bir hata ... ssh kimlik doğrulaması şifre ise, müşteri ilk önce normal olan genel anahtardan geçiyor. Ancak, yeni bir ssh bağlantısı kurulduğunda parolayı anahtarlığa kaydetmeyi seçmiş olsanız bile (parola doğrulaması için gerekli değildir), sizden tekrar parola istenir ...


1
Ayrıca bunu bir hata olarak görüyorum, her şey kar leoparıyla iyi çalışıyordu, ancak bilgisayarım uykudan her geldiğinde ssh anahtar şifresi tekrar soruluyor, ancak en son ne zaman "yeniden hatırlat" ı seçtim! Çok can sıkıcı ...
Schmurfy

3

Genel anahtarlarınızı yeniden oluşturmanıza gerek yoktur. Bu iki komutu basitçe yapabilirsiniz :

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Temel olarak, ortak anahtar dosyasındaki izinleri sıkmanız ve anahtarınızı OSX kimlik doğrulama aracısına eklemeniz gerekir.


3

MacOS'un en son sürümünde (10.12.2 - Sierra) bu kolay bir düzeltmedir. Sadece ~ / .ssh / config dosyanızı düzenleyin ve UseKeychain seçeneğini kullanın:

Host *
UseKeychain yes

Kaydet ve çözüldü.


2

Bu sorun, ssh-agent öldüğünde OS X 10.7.4 sistemimde meydana geldi. Yeniden başlatma sorunu düzeltti. (Ssh-agent'ı yeniden başlatmayı deneyebilirsiniz, ancak Anahtarlığın yeni ssh-agent soketini almaya yetecek kadar zeki olup olmadığını bilmiyorum.)


Bu benim sorunum da bir saat boyunca güdüklendikten sonra düzeldi.
DannyRe

2
  1. ~ / .Ssh / chmod 700 olduğundan emin olun.

  2. ~ / .Ssh / id * dosyalarının her ikisinin de chmod 600 olduğundan emin olun.

  3. Çalıştır / Uygulamalar / Yardımcı Programlar / Anahtarlık Access.app ve onarım anahtarlığı.

  4. Çıkış Yap. (Yeniden başlatma korkunç bir fikir olmaz)

  5. Oturum aç

  6. Sorun devam ederse, mevcut ~ / .ssh / id * dosyalarınızı Masaüstünüze taşıyın ve yeni anahtarlar kullanarak yeni anahtarlar oluşturmayı deneyin ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tldve yeni anahtarların daha iyi çalışıp çalışmadığını görün.

Lion'dayım, ancak IIRC Snow Leopard da aynı şekilde çalıştı.

ps - boş bir ssh şifresi kullanmayı öneren herkes, bir işaret takmak zorunda kalmalı, böylece diğer insanlar onlardan tavsiye almamalarını bilmelidir.


1

Açık anahtarın yenilenmesi benim için işe yaramıyor gibi görünmüyor (10.8), ne de yeni bir SSH anahtarı üretmiyor. Örneğin, eğer giriş anahtarlığını kilitledikten sonra git pull komutunu çalıştırırsanız, önce şifreyi giriş anahtarlığından almaya çalışmak yerine şifreyi şifreye talep etmek için bir iletişim kutusu açılır.

Ancak, önce ssh-agent'ı öldürürsem, SSH anahtar şifresini alan giriş anahtarlık şifresini girmem istenir.


Merhaba, bu, bu sorunun cevabını değil, ayrı bir soruyu andırıyor. Yeni bir soru olarak tekrar gönderebilir misiniz?
Scot

1

Bir başka ilginç bulgu da, PEM dosyasının içeriğini kopyalayıp yapıştırdığınızda, çizgi eksik kalması olabilir. Bu yüzden final satırını şu şekilde eklemeyi unutmayın.

-----END RSA PRIVATE KEY-----

Benzer bir şey, bir ssh anahtarını lastpass gibi bir şeyden yapıştırırken hepsini tek bir satıra yapıştırmasıdır. Bu benim için bir sorun gibi görünüyordu ve bir kez beyaz boşluktaki özel anahtarı tekrar doğru formata bölerek işe yaradı.
Cameron Gagnon

1

Çalışması için aşağıdaki adımları izlemem gerekiyordu.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Son komut daha sonra şöyle bir şey çıkarmalıdır: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.


0

Ben de aynı problemi yaşadım. Bunu yaparak düzeltmiş gibiyim.

1) Eski id_dsa ve id_dsa.pub dosyalarını yeniden isimlendirerek yedeklenir.

2) Boş bir parola ile yeni bir keygen çalıştır.

Uzaktaki bir sunucuyu izlemenin yanı sıra bir terminalde ssh ile oturum açmanın başlatılmasıyla çalışır.

Benim terminalinde hızlı bir işlev authme işlevi var çünkü benim .bash_profile içinde aşağıdaki var

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Böylece hızlı bir authme remoteserver.com yeni uzak anahtarı kopyalayacaktır.

Böceğin, dönüştürülmeyen parola ile ilgisi olduğunu düşünüyorum (eski Snow Leopard'ımda hiç yoktu).

Bunu dene ve yardım edip etmediğini gör.

Yapması 10 dakikadan fazla sürmedi. Bunun başka sözleri olup olmadığını görmek için sonsuza kadar googling geçirdim. Bu site tek kişiydi!

Owain.


Boş bir parola kullanmak benim için bir seçenek değil, ne yazık ki
titaniumdecoy

0

Benzer bir problemim vardı. Kullandığım özel anahtarın yanlış bir formatta olduğu ortaya çıktı. Win makinemde PuTTY Key Generator kullandım ve OS X'te ssh farklı bir format bekliyor - SSH formatını aç.

Bu anahtarı üretmek için kullandığım aracın (PuTTY Anahtar Üreticisi), özel anahtarımı SSH Açık'ın gerektirdiği formata dönüştürme seçeneğine sahip olduğu ortaya çıktı.

Olarak basit:

  1. PuTTY Key Gen'i aç
  2. Özel anahtarınızı yükleyin
  3. Dönüşümler> OpenSSH anahtarını dışa aktar'ı seçin.

Kaydedeceğiniz dosya orijinal özel anahtarınızı uygun (OpenSSH) biçiminde içerir.


0

Lütfen bundan emin ol:

  1. Özel anahtarınız için pem biçimini kullanıyorsunuz. Bunun nedeni, Mac'in pem ile çalışan openssh istemcisini kullanmasıdır. ppk, macunun özel formatıdır ve openssh ile uyumlu değil. Sadece ppk olması durumunda kolayca ppk'yi macun keygen kullanarak pem'e dönüştürebilirsiniz .
  2. Pem dosyanızdaki izinler 600'dür. Özel anahtarlar sadece sahiplerinince erişilebilir olmalıdır. Bu nedenle, eğer izinler başkasına okuma izni verirse, güvenlik tehdidi sayılır.

Bu umarım sorunu çözmelidir.


-1

.Pk anahtarı yerine .pem anahtarını kullanın.


1
Bazı açıklamalar ve bağlamlar sağlayan uzun cevaplar arıyoruz. Sadece bir satırlık cevap vermeyin; Cevabınızın neden doğru olduğunu, ideal olarak alıntılarla açıklayın. Açıklama içermeyen cevaplar kaldırılabilir.
Tetsujin
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.