ssh-add yeniden başlatmalar arasında kalıcı değil


150

Aracıya bir ssh anahtarı ekledim:

$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)

Yeniden başlatmanın ardından, ajan artık bu anahtarı eklememiş:

$ ssh-add -l
The agent has no identities.

Bu neden oldu?


Şu an tam olarak cevaplamak için zamanım yok, ancak ssh modunda gpg-agent istediğinizi yapacak. Eski ssh-agent yerine bunu dene. Eğer bu işe yararsa, zamanım geldiğinde bunu deneyebilir ve genişletebilirim.
Vality

@Galite: gpg-agent’ın yeniden başlatmalar arasında kalıcı olacağından şüpheliyim.
Pavel Šimerda

@ PavelŠimerda Özel anahtarları kullanıcı parolasıyla şifreler ve ardından $HOME/.gnupg/private-keys-v1.dssh-add ile ekler ekler. Gerçekten ısrarcı. Değişken olmayan bir ev dizininiz olduğunu varsayarsak
Vality

@Galite: Bunun bir güvenlik konusu olduğu düşünülmemeli mi? Parola olmadan bir anahtar kullanıp, hiçbir aracıya ihtiyaç duymadan da yapamaz mısın?
Pavel Šimerda

1
@ PavelŠimerda Anahtar, kullanıcı şifresiyle şifrelenmiş olarak saklandığı için gerçekten bir güvenlik sorunu değildir, kullanıcı şifresini çözmek için her oturum açtığında yine de şifreye ihtiyaç duyar. Anahtarın şifrelenmemiş olarak saklanması, root (veya sabit diskinizi alan bir hırsız) kullanan bir kullanıcının onları ana dizininizden çalabileceği, gnupg ile çalması durumunda şifrenizle şifreleyecekleri ve böylece işe yaramayacakları anlamına gelir.
Vality

Yanıtlar:


174

Ajana anahtarların eklenmesi geçicidir. Sadece ajan çalıştığı sürece devam ederler. Öldürürseniz veya bilgisayarınızı yeniden başlatırsanız, yeniden ekleyene kadar kaybolurlar. Gönderen ssh-agentadam sayfası:

ssh-agent, genel anahtar kimlik doğrulaması için kullanılan özel anahtarları tutan bir programdır (RSA, DSA, ECDSA). Buradaki fikir, ssh-agent'ın X oturumunun veya bir oturum açma oturumunun başlangıcında başlatıldığı ve diğer tüm pencerelerin veya programların ssh-agent programına istemci olarak başlatıldığıdır. Ortam değişkenlerini kullanarak aracı, ssh (1) kullanarak diğer makinelere giriş yaparken doğrulama için yerleştirilebilir ve otomatik olarak kullanılabilir.

Ajan başlangıçta herhangi bir özel anahtara sahip değildir. Anahtarlar ssh-add (1) kullanılarak eklenir. Değişkenler olmadan çalıştırıldığında (1) dosyalarını ekler ssh-ekleyebilir ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsave ~/.ssh/identity. Kimlik bir parola içeriyorsa, ssh-add (1) terminalde parola olup olmadığını ya da X11'in altında çalışıyorsa küçük bir X11 programından olsaydı terminalde parolayı ister. Bunlardan hiçbiri bu durumda değilse, doğrulama başarısız olur. Daha sonra kimliği acenteye gönderir. Ajanda birkaç kimlik depolanabilir; Temsilci bu kimlikleri otomatik olarak kullanabilir. ssh-add -lajan tarafından o anda tutulan kimlikleri gösterir.

macOS Sierra

MacOS Sierra 10.12.2 ile başlayan Apple, SSH yapılandırmaları için bir UseKeychain yapılandırma seçeneği ekledi. Ekleyerek bu özelliği aktif hale UseKeychain yesgetirebilirsiniz ~/.ssh/config.

Host *
  UseKeychain yes

OSX Anahtarlık

OSX kullanmıyorum ancak bu soru ve yanıtı SuperUser'da bulabildim: Mac OS X Keychain SSH tuşları ile nasıl kullanılır? .

Mac OS X Leopard'dan bu yana, Anahtarlığın SSH anahtarlarını depolamayı desteklediğini biliyorum. Birisi lütfen bu özelliğin nasıl çalışması gerektiğini açıklayabilir mi?

Böylece, bu komutu kullanarak SSH anahtarlarınızı Keychain'e aktarabilirsiniz:

$ ssh-add -K [path/to/private SSH key]

Anahtarlarınız önyüklemeden önyüklemeye devam etmelidir.

Mac'inizi her yeniden başlattığınızda, anahtarlığınızdaki tüm SSH anahtarları otomatik olarak yüklenir. Anahtar Zinciri Erişimi uygulamasında ve ayrıca komut satırından tuşları görebilmeniz gerekir:

  ssh-add -l

Kaynak: Süper Kullanıcı - SSH tuşları ile Mac OS X Keychain nasıl kullanılır?


Gerçekten mi? Linux'ta bu konuda bir sorunum yok. Bilgisayarımı her başlattığımda "ssh-add my_key" yazmam gerekiyor mu?
ス レ ッ ク ス

2
@Alex Cevabın açıkladığı gibi, ajan otomatik olarak ekler ~/.ssh/id_rsa. Sanırım bu linux'taki anahtar dosyasının yeri. Standart ssh anahtar aracısını kullanmamanız da mümkündür. Gnome-keyring-daemon gibi farklı davranışları olabilecek başkaları da var.
Patrick

ama Mac’te "id_rsa_mac" adı verildi. Ajanın otomatik olarak eklemesini nasıl sağlayabilirim?
ス レ ッ ク ス

@Patrick: Klasik ssh-agentherhangi bir anahtarı otomatik olarak ekleyip eklemeyeceğinden emin değilim . ssh-addAjansı sshkullanmıyorsanız bence standart konumları veya müşteriyi okuyor .
Pavel Šimerda

5
Small sidenote, eğer ssh-add komutunuz muhtemelen ssh-add'in macport versiyonunu kullandığınız -K bayrağını tanımıyorsa ... böyle:/usr/bin/ssh-add -K /path/to/private/key
ChrisR

20

ssh-agentBir olan geçici anahtarlarını saklayan seans hizmeti kullanıcı için.

SSH aracısının temel amacı, bir parola kullanarak güvence altına alınan bir anahtarın açık metin sürümünü hatırlamaktır. Başka bir deyişle, anahtar bir parola kullanılarak şifrelenmiş diskte depolanır ve anahtarın sahibi ssh-addparolayı sağlamak ve oturumdan çıkana veya kullanıcı açıkça kaldırılmasını talep edene kadar onu hatırlamasını istemek için parola sağlamak için kullanılır.

Bir parola kullanmıyorsanız ve aracı yönlendirme kullanmıyorsanız (bu çoğu durumda güvensizdir), araca hiç ihtiyacınız yoktur . Herhangi bir SSH istemcisi, anahtarı diskten, standart bir konumdan veya açıkça belirtilenlerden okuyabiliyor olmalıdır.

Standart yerler manuel sayfada listelenmiştir ssh(1):

Varsayılan protokol sürüm 1 için ~ / .ssh / kimlik ve protokol sürüm 2 için ~ / .ssh / id_dsa, ~ / .ssh / id_ecdsa, ~ / .ssh / id_d25519 ve ~ / .ssh / id_rsa'dır.

Standart olmayan konumlar kullanırken, aynı manuel sayfada açıklanan -ianahtarı sshveya kullandığınız SSH istemcisindeki ilgili seçeneği kullanabilirsiniz.


4
Olmayan kullanımını savunan +1ssh-agent
dg99

7

In Sierra :

UseKeychain kullanın . (Bunu denemedim ama en doğru çözüm gibi geliyor.)

Veya

ssh-add -K /your/key
echo ssh-add -A | cat >> ~/.bash_profile

Veya eklemek yerine basit bir dosya oluşturun~/.bash_profile .

Sorumluluk reddi: Diğerlerinin de belirttiği gibi, ssh kodlarını anahtarlıkta saklamanın ne kadar güvenli olduğunu bilmiyorum.


Yukarıdaki tüm yöntemleri denedim ama sadece bu işe yarıyor. Teşekkür ederim!
Duannx
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.