SSH anahtarları nasıl saklanır?


66

Sadece kısa bir süre önce şifreler yerine SSH anahtarlarını kullanmaya başladım (elbette GitHub sayesinde), bu yüzden bu kavramın tamamında yeni olduğumu unutmayın. Şu anda anahtarlarım basitçe ~ / .ssh altında bulunuyor, ancak bunun iyi bir uygulama olup olmadığından emin değilim. Örneğin, birden fazla makinem varsa, istenmediğini düşündüğüm özel anahtarlarımı çoğaltmam gerekir. Veya, eğer HDD'm kaput olursa, o zaman (sanırım) istenmeyen bir anahtar olan bu anahtarları kaybedeceğim.

Peki, SSH anahtarlarını güvenli, rahat ve güvenilir bir şekilde saklamak için en iyi yöntemler nelerdir?

Akıllı kart kullanmak bir seçenek gibi görünüyor (bkz. Gpg / ssh anahtarlarını saklamak için Akıllı Kartlar (Linux) - neye ihtiyacım var? ), En iyisi bu mu?

Güncelleme: Sorunun nedeni, birçok servisin (GitHub, AWS EC2 gibi), servisi kullanmak için SSH anahtarlarını nasıl ayarlayacağınız konusunda rehberler sağlamasıydı; tarafından ssh-keygen[1], güvenlik önlemlerini tavsiye edilir ne). Ve bu bilginin aslında önemsiz olup olmadığı ya da 'varsayılan olarak' bilmeniz beklenmiyor.

Bu noktaya kadar cevapları özetlemek için (ama lütfen onları okuyunuz ve eğer ekleyeceğiniz bir şey varsa - lütfen yapınız): bu durumda, özel anahtarlarınızı ~ / .ssh konumunda bırakmanız yeterlidir. onları diğer insanlardan uzak tutun; ancak, bir tane kaybederseniz yeni bir anahtar yüklemek veya oluşturmak için servise erişmek için başka bir yolunuz olduğundan emin olun (normalde budur).

[1] GitHub , birden fazla anahtarın nasıl yönetileceği konusunda yardım sağlamak için kullanılır .


Bu bağlantı bozulmuş gibi görünüyor help.github.com/multiple-ssh-keys
KJ Fiyat

@KJ Price, İnternet Arşivi Wayback Makinesi sayesinde, sayfa orijinal bağlantısında olmasa da çevrimiçi olarak kullanılabilir. 2 Eylül 2011'de arşivlenen sayfanın bir kopyası Multiple SSH anahtarlarında bulunabilir .
ayın doğuşu

Yanıtlar:


41

Örneğin, eğer birden fazla makinem varsa, istenmediğini düşündüğüm özel anahtarları kopyalamam gerekir.

Hayır, aslında değilsin. Birden fazla makineniz varsa, her birinde ayrı bir özel anahtar oluşturursunuz. Her özel anahtar için, aynı işlemi kullanarak ilgili ortak anahtarı GitHub'a yüklemeniz yeterlidir.

Ayrıca eğer HDD'm kaput olursa, özel anahtarımı da kaybedeceğim, ki sanırım istenmeyen bir durum.

Pek sayılmaz; Özel anahtarınızı kaybederseniz, sadece yeni bir tane oluşturun ve ilgili ortak anahtarı yükleyin.

Ne pahasına olursa olsun, özel bir anahtarı çoğaltmanın kesinlikle istenmeyen bir durum olduğu konusunda haklısın. İdeal olarak, özel bir anahtar tek bir dosyada ( ~/.ssh/id_rsaörneğin) oluşturulmalı ve bu dosyadan asla ayrılmamalıdır - yani hiçbir zaman kopyalanmamalı, taşınmamalı ve özellikle bir ağ üzerinden aktarılmamalıdır. (örneğin, onları yedeklemelerin dışında bırakıyorum) Asimetrik kimlik doğrulama protokollerinin doğası gereği, yalnızca özel anahtarınızı başkalarının ellerinden uzak tutmayla ilgili endişelenmeniz gerekir. Eğer biraz denize düştüğünde ve izini kendin kaybediyorsan, bu genelde önemli bir şey değil. (Asimetrik şifreleme özel anahtarlarıyla, örneğin muhtemelen tutmak istediğiniz GPG anahtarlarıyla) karıştırılmamalıdır.)


14
Bu, yalnızca özel anahtarın erişim sağladığı sunuculara erişmek için başka bir yönteminiz varsa çalışır. Yeni ortak anahtarı yalnızca bu yedekleme erişiminiz varsa yükleyebilirsiniz.
AĞACI

2
@TREE: doğru, ancak benim deneyimime göre, alternatif bir erişim yöntemi sağlamayan bir sunucu bulmak (veya en azından SSH'ye geçmeden ek bir genel anahtar eklemek) bulmak çok nadirdir.
David Z,

3
Sağol, bu işleri çok temizliyor Gerçekten, özel SSH anahtarını kaybetmek sorun gibi görünmüyor, çünkü kullandığım tüm servisler için her zaman yeni bir tane yüklemek için bir servise erişmenin başka bir yolu gibi görünüyor.
Anton Strogonoff

3
AWS, özel anahtarın yanı sıra başka bir erişim şekli sağlamaz. Özel anahtarınızı kaybettikten sonra erişebilmek için sürücünün bağlantısını kesmeniz ve bununla uğraşmanız gerekir.
Asad Saeeduddin

1
Başka bir güvenlik katmanı istiyorsanız, özel anahtarınıza bir şifre koyabileceğinizi unutmayın.
sudo

8

Her ikisini de çalıştırmak için aynı kullanıcı hesabını kullanıyorsanız, tarayıcınız tarafından ~ / .ssh / okunabilir olduğunu eklerim.

Dene! Tarayıcınızı , ana dizininizdeki özel anahtarınıza yönlendirin. Komik.

Bu yüzden ssh anahtarlarını başka bir kullanıcı hesabının giriş dizinine kaydetmenizi tavsiye ederim.

parola koruma tuşlarında bir kelime

  • Bugünlerde rasgele olmayan şifreleri kırmak çok hızlı. Karma kedi göz atın
    • (Rastgele ve uzun 12+ karakter şifrelerinin hala kaba kuvvet için oldukça uzun sürmesine rağmen)
    • Dolayısıyla, AES şifreli ssh anahtarları, iyi uzun parolalar kullandığınız sürece öngörülebilir gelecek için parçalanamaz. Github tavsiyelerine bakın
  • Böylece bazı web siteleri JavaScript'iniz ile anahtarınızı tahmin edebilir. Sonra anahtarı çevrimdışı duruma zorla zorla.
  • Ayrıca tarayıcılar JS'nizle Panonuza da bakabilir. Bu yüzden kopyalamaya yapıştırma çok uzun parolalar da sizi daha karmaşık javascript saldırılarına karşı risk altına sokar.

look_at_keys.html

 9 <HTML>
10 <HEAD>
11 <TITLE>look at keys</TITLE>
12 </HEAD>
13 <FRAMESET cols="20%, 80%">
14   <FRAMESET rows="100, 200">
15       <FRAME src="/Users/yourname/.ssh/stuff.pem">
16       <FRAME src="blah.html">
17   </FRAMESET>
18   <FRAME src="contents_of_frame3.html">
19 </FRAMESET>
20 </HTML>

17
Açıkçası, sadece tarayıcı özel anahtarınızı okuyabildiği için bu, tarayıcıda çalışan bir web sitesi anlamına gelmez.
Ajedi32

6
Ancak, tarayıcı işleminde bir işlem enjekte ederseniz. Ardından tarayıcının kontrolünü de elinize alabilirsiniz. Yani bu argüman tamamen geçerli.
BigSack

Ancak, tarayıcınızın işlem ünitesinin işlem kaydındaki işlemleri enjekte eden işlemi kesmeniz gerekir.
Skid Kadda

8

Uzantılı ( http://lechnology.com/software/keeagent/ ) KeePass2 ( http://keepass.info/ ) adında çok güzel bir araç var.

Orada saklayabilirsiniz Parolalar, SSH Anahtarları ve çok daha fazlası (resmi KeePass sayfasında çok daha kullanışlı uzantılardır)
SSH Anahtarlarınızla otomatik olarak giriş yapmak istiyorsanız, sadece PuTTY, Pageant ve KeePass'ı KeeAgent ile kurmanız gerekir. Doğru yapılandırıyorsanız, Anahtarları PuTTY, Pageant veya FileZilla'da ayarlamanız gerekmez.

Kendim kullanıyorum ve çok mutluyum. Belli miktarda farklı SSH Anahtarına sahip 30'dan fazla VPS ve Root Server'ım var ve tek yapmam gereken tek şey KeePass'ı açmak (Bu benim birincil şifre güvenli değil) ve ardından konsolda parolamı yazmam gerekiyor.


3

Özel anahtarları saklamanızı tavsiye ederim:

  • çevrimdışı (bulutta değil)
  • birden fazla yerde
  • ilişkili olduğu herhangi bir şey dışında, örneğin şifrelenmiş verileriniz için bir anahtar olarak, verileri verilerden ayrı bir yerde saklayın.

Bence en iyi yer şudur:

  • harici bir sabit disk
  • flaş tuşu
  • internete bağlı olmayan bir bilgisayar

Daha da iyisi, sadece yazdırın ve yangına dayanıklı bir kasaya koyun.


4
Güvenlik / en iyi uygulamalar pratiklik ile el ele çalışır. Bir güvenlik stratejisi bir sistemi kullanma yeteneğini artırırsa, saldırgandan ziyade kullanıcı tarafından atlanacaktır.
zaTricky

1

Kullanıcı dir kurulumumu (.bashrc, .ssh / ve diğer config dosyaları) güvenli bir yerde tuttuğum bir tar dosyası var. Herhangi bir yerde yeni bir kabuk hesabı aldığımda, tar dosyasını içine çekiyorum.

Özel anahtarlarınızı yalnızca güvendiğiniz sunuculara koymanız gerekir, aksi takdirde sunucuda yalnızca bu sunucu için yeni bir özel anahtar oluşturmanız ve erişmesini istediğiniz şeylere erişmesine izin vermeniz gerekir.

Şahsen, sadece .ssh / şeylerimi her yere kopyalayabiliyorum (ayrıca, düzenli ssh anahtarının anında ssh erişimi alması, çünkü zaten yetkili_keys dosyasında olduğu anlamına geliyor).


Sanırım, bir USB çubuğunda takılı şifreli ~ / .ssh tuşlarına sahip olmak, donanım arızası durumunda yeni anahtar oluşturma ve yükleme ihtiyacından tasarruf sağlayacaktır. Ancak, erişmek için SSH anahtarlarını kullandığım çok az sayıda sunucu (ve bağlandığım çok az sayıda makine) olduğu için, yeni anahtarlar üretmek fazla masrafa neden olmaz.
Anton Strogonoff

2
Kurslar için atlar ve anahtarları neden kullandığınıza bağlı. Zaten şifreli bir SSH bağlantısı üzerinden ssh özel anahtarını kopyalarken bir sorun görmüyorum. Ancak, hedef makineye güvenmiyorsanız ve kimin root erişimine sahip olduğunuzu bilmiyorsanız, sunucuya kaybetmeyi göze alamayacağınız bir şey koymamanız gerekir.
EightBitTony

Özel anahtarınızı bir başkasının sunucusuna koymak istemezsiniz. Bu sunucuda Root erişimi olan herkes özel anahtarınızı okuyabilir ve daha sonra bu özel anahtarla eriştiğiniz sistemlerde sizi taklit edebilir. Sunucuya erişim için genel anahtarınızı yalnızca girmelisiniz. Ve özel bir anahtarın şifresini çözmek için uzak bir makinede kullanıyorsanız, parolanın bu kadar yardımcı olacağını düşünmeyin.
Codeguy007

Ssh-agent'ı ssh üzerinden iletebilirsiniz. Bu şekilde, özel anahtarı sunucuda saklamanıza veya parolanızı ağ üzerinden göndermenize gerek yoktur. stackoverflow.com/questions/12257968/…
Codeguy007

1

Ssh anahtarlarınızı şifreli bir bölüm içindeki ayrı bir dizinde saklayabilirsiniz. Daha sonra bu dizine işaret eden ssh ile şunları yapabilirsiniz -i:

ssh -i identity_file me@example.com

Tam açıklama ( man ssh):

-i kimlik_dosyası

Genel anahtar kimlik doğrulaması için kimliğin (özel anahtar) okunduğu bir dosyayı seçer. 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_ed25519 ve ~ / .ssh / id_rsa kimliklerdir. ayrıca yapılandırma dosyasında ana bilgisayar başına da belirtilebilir.
Birden fazla -i seçeneğine (ve yapılandırma dosyalarında belirtilen birden fazla kimliğe) sahip olmak mümkündür. CertificateFile yönergesi tarafından herhangi bir sertifika açıkça belirtilmemişse, ssh ayrıca -cert.pub ekleyerek elde edilen dosya adından kimlik dosya adlarına sertifika bilgilerini yüklemeye çalışacaktır.

Güvenlik yaklaşımım, bilgiyi özel ve genel olarak bölmem. Tüm ev bölümümü şifrelemek istemiyorum, bu yüzden gizli dosyaları ~/.sshşifrelenmiş bir bölüme kopyalarım .

Bunun oldukça etkili bir güvenlik sağladığını düşünüyorum, çünkü kötü amaçlı yazılım ~ / .ssh'ta hiçbir şey bulamaz ve muhtemelen bu konumu bulmak için tüm sisteminizi veya kabuk profillerinizi taramaz.

-F configfile 

config dosyasına giden yolu ayarlar.

PS Ben bir takma ad oluşturacağım alias ssh='ssh -i ... -F ...'ve onu profilinize ekleyeceğim.

PPS Bunu henüz kontrol etmedim ve diğer programların (git gibi) bu ssh ayarlarıyla nasıl çalışacağını bilmiyorum.

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.