SSH özel anahtarımı Keychain'e nasıl kalıcı olarak ekleyebilirim ki ssh için otomatik olarak kullanılabilir mi?


419

ssh-add -K ~/.ssh/id_rsaAnahtarınızı yükleyebilecek, ancak her yeniden başlattığınızda şifreyi isteyecek gibi görünüyor .

Girişler arasında anahtar şifreyi tekrar girmemi gerektirmeyen bir çözüm arıyorum.


1
Parola istemi sizin için ne zaman ortaya çıktığı hakkında biraz daha bilgi verebilir misiniz? Soruyorum çünkü uzaktaki bir sunucu için bir ssh-anahtarım var, sizi temin ederim Mac giriş şifremle veya başka bir şeyle aynı değil ve yıllardır ssh-key için şifreyi girmek zorunda kalmadım . Bir terminal açıp "ssh <server>" yazabilirim ve oradayım. Sanırım ilk önce bu anahtarı OSX 10.5'e ayarladım. id_dsa, ama bunun önemli olduğunu sanmıyorum.
Michael H.

Benim id_rsaanahtar üzerinde bir şifre vardır.
sorin

Ayrıca bunu çok uzun zaman önce çözdüğüm bir problemim var, ne yaptığımı tam olarak hatırlayamıyorum. Ama bence bir fikir olduğunu değil koşmak ssh-add, ama sadece koşmak sshdoğrudan. Anahtarın geçiş cümlesi olarak çıkacak bir pencere açmanız ve anahtarlığınıza kaydetmenize izin vermek için bir onay kutusu seçmeniz gerekir.
Harald Hanche-Olsen

1
@ Sorin - benimki de öyle! Uzun zaman önce bir kere girmek zorunda kaldım ve Mac o zamandan beri benim için sakladı. Umarım Harald'ın tavsiyesi yardımcı olacaktır.
Michael H.

Anahtarlık şifresini (yani giriş şifreniz) veya anahtarın şifresini mi kastediyorsunuz? İkincisi ise, parolalarınız kesinlikle Anahtarlıkta depolanıyor mu? Bunu Keychain Access'i açarak ve giriş anahtarlığında arayarak kontrol edebilirsiniz.
Mathew Hall

Yanıtlar:


687

Yerel ssh-addmüşterinin OSX'te OSX anahtarlığında özel anahtarın parolasını kaydetme konusunda özel bir argümanı vardır, bu normal girişinizin ssh ile kullanım için kilidini açacağı anlamına gelir. OSX Sierra ve sonrasında, SSH'yi her zaman anahtarlığı kullanacak şekilde yapılandırmanız gerekir (aşağıdaki Adım 2'ye bakın).

Alternatif olarak, parola olmadan bir anahtar kullanabilirsiniz, ancak bu iş akışında kesinlikle kabul edilebilir olan güvenliği tercih ediyorsanız.

Adım 1 - Anahtarı anahtarlıkta saklayın

Sadece bir kere yap:

ssh-add -K ~/.ssh/[your-private-key]

Anahtar parolanızı girin ve sizden tekrar istenmeyecek.

(OSX’in Sierra öncesi bir sürümündeyseniz, işlem tamamlanmıştır, 2. Adım gerekli değildir.)

Adım 2 - Her zaman anahtarlığı kullanmak için SSH'yi yapılandırın

Görünüşe göre OSX Sierra, girişler arasında anahtarlarınıza devam etmenin uygun davranışını ortadan kaldırdı ve ssh güncellemesi artık anahtarlığı varsayılan olarak kullanmıyor. Bu nedenle, yükseltme yaptıktan sonra ve her yeniden başlatmanın ardından bir anahtarın şifresini girmeniz istenir.

Çözüm oldukça basit ve bu github thread yorumunda özetlenmiştir . İşte nasıl ayarladınız:

  1. Anahtarı anahtarlığa kaydetmek için yukarıdaki 1. Adımı tamamladığınızdan emin olun.

  2. Henüz yapmadıysanız, bir ~/.ssh/configdosya oluşturun. Başka bir deyişle, .sshana dizininizdeki dizinde bir dosya oluşturun config.

  3. Bu .ssh/configdosyaya aşağıdaki satırları ekleyin:

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

    ~/.ssh/id_rsaÖzel anahtarınızın asıl dosya adını değiştirin . Dizininizde başka özel anahtarlar varsa ~.ssh, IdentityFileher biri için bir satır ekleyin . Örneğin, IdentityFile ~/.ssh/id_ed25519bir 2. özel anahtar için okuyan bir ek satırım var .

    UseKeychain yesAnahtar parola için OSX anahtarlıkta bakmak için SSH söyler anahtar parçasıdır.

  4. Bu kadar! Herhangi bir ssh bağlantısı kurduğunuzda, belirttiğiniz özel anahtarları deneyecek ve şifrelerini OSX anahtarlığında arayacaktır. Şifre girişi gerekmez.


2
Bu neredeyse benim için çalışıyordu. "Login" anahtarlığımda otomatik kilitleme özelliği devre dışı bırakıldı, bu nedenle Matthew Sanabria'nın cevabı geçerli değildi. Kullanarak ssh-add -K ...şifreleri ssh aracısına bir şifre sormadan ekledim, fakat sadece geçerli oturum için. Yeniden başlattıktan sonra, komutu yeniden düzenlemek zorunda kaldım.
Poulsbo,

4
@Poulsbo & @Abram - güncellememe bakın, Sierra otomatik davranışı değiştirdi ve şimdi ssh-add -Akayıtlı anahtarlığınızı yüklemek için manuel olarak çalıştırmanız gerekiyor. Yukarıda belirtilen bazı olası çözümler.
trisweb

3
@trisweb Tahmininiz için teşekkürler. joshbuchea'nın .ssh/configdosyayı değiştirme çözümü umut verici görünüyor! Bakınız github.com/lionheart/openradar-mirror/issues/…
Poulsbo

2
@sorin güncellenmiş cevabı görün ve herhangi bir geri bildiriminiz varsa bana bildirin. Teşekkürler!
trisweb

9
Harika çalışıyor! Benim durumumda , anahtarlarımı anahtarlığa eklemek ve parolayı ona ( ) kaydetmek için Abayrak ekine ihtiyacım vardı . Teşekkürler! Kssh-add -AK ~/.ssh/[your-private-key]
youssman

22

Ben de benzer bir problem yaşadım, bu yüzden benim pub-key şifrem için HER ZAMAN sorulmuştu.

Yukarıdaki "trisweb" kullanıcısının önerisine göre, bu seçenekleri ~ / .ssh / config olarak açtım:

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

AMA yine de her seferinde ssh kullanmak istemiştim.

Sonunda "ssh -v" yi açtım ve bu hata ayıklama satırını buldum:

debug1: key_load_private: Özel anahtarın şifresini çözmek için verilen yanlış şifre

Daha sonra anahtarlığımı "Keychain Access.app" de açtım, "SSH: /Users/username/.ssh/id_rsa" isimli anahtarı buldum ve açtım.

Şifreyi ifşa etmek için "Şifreyi göster" i tıkladım ve gerçekten de anahtarlıktaki şifrenin eski bir şifre olduğunu tespit ettim.

Keychain Access'teki parolayı güncelledim ve şimdi şifresiz çalışmalar.

Parolayı şu ifadeyle de güncelleyebilirdim:

ssh-keygen -p -f ~ / .ssh / id_rsa


13

Her seferinde şifre girmeniz istenir, çünkü "giriş" anahtarlığınız etkinlik dışı kaldıktan ve / veya uyuduktan sonra veya sizin durumunuzda yeniden başlatıldığında kilitlenir. Bunu sizin için çözmenin iki yolu var.

  1. "Giriş" anahtarlığınız için ayarları değiştirin. Ssh anahtarınızın "login" anahtarlığında olduğunu varsayalım.

    • Anahtarlık Erişimini Aç
    • "Giriş" anahtarlığını vurgulayın
    • "Login" anahtarlığını sağ tıklayın ya da isteğe bağlı tıklayın
    • "X dakika etkinlik dışı kaldıktan sonra kilitle" ve "Uyurken kilitle" onay kutularının işaretini kaldırın.
  2. Parola kullanmadan başka bir SSH anahtarı oluşturun.

    • Terminali açın.
    • Komutu girin: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t, tür için, -b anahtar boyut, -C yorum, -f çıktı dosyası (önce dizinler oluşturmalıdır)
    • Bir şifre ayarlamayın.
    • SSH anahtarını "login" anahtarlıkına alın ssh-add -K <path to ssh key>

Artık bir anahtarlık şifresi girmeniz istenmemelidir.


2
ssh-addSSH'nin içinden çağırırken önce aranması gerektiğini unutmayın security unlock-keychain. Ayrıca, -fparametre için dizinler oluşturmak zorunda değildim . Ne yazık ki, security unlocl-keychainher seferinde parola isteyen Keychain girişine erişmek için hala SSH oturumlarını aramak zorunda kaldım ...
Ohad Schneider,

2
Bütün mesele anahtarın üzerinde bir parola olması. Yeni bir SSH anahtarı oluşturmanın soruya yardımcı olacağından şüpheliyim.
Gray

7

Ayrıca, macOS Sierra ve HighSierra'de (önceki sürümleri bilmiyorum), ssh-add -Açalışanlar, parolaları Anahtarlık'ta depolanan tüm anahtarların yüklenmesini sağlayacaklar ... Çok kullanışlı


7

Yukarıdakilerin işe yaramadığı herkes için benim sorunum UseKeychain yes& AddKeysToAgent yesssh anahtar profillerinin / kısayollarının çoğunu kopyalamamdan kaynaklanıyor gibi görünüyor . ~/.ssh/configBunları yalnızca bir kez bildirmek için dosyamı güncelledim ve şimdi hepsi başlangıçta şifreler sormadan oturum açtıklarında yüklendiler, örneğin:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar

-3

Ortak anahtarı şuraya ekle:

.ssh/known_hosts

Genel anahtar genellikle açık:

/home/user/.ssh/id_rsa.pub

umarım yardımcı olur


8
Ben düşünüyorum demekauthorized_keys
Rene Larsen

Neyse, birden fazla anahtarınız varsa bu işe yaramaz!
sorin
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.