UNIX'teki özel / genel SSH anahtarlarım nerede?


17

RSA ve genel / özel anahtar sistemlerinin nasıl çalıştığını anlamaya başladım ve özel ve genel SSH anahtarımın nerede saklandığını merak ediyordum. Ana dizinime gittiğimde ve .ssh dizinime (cd .ssh) göz attığımda, yalnızca bildiğim farklı uzak SSH sunucularının ortak anahtarlarını içeren "bilinen_anahtarlar" dosyasını görüyorum.

Bu anahtarları nerede bulabilirim? Bu arada onları oluşturduğumu bile hatırlamıyorum, ancak daha önce ssh bağlantıları kurduğumdan, bir yerde olmalılar.

MAC OS 10.6 ile OpenSSH_5.2p1 kullanıyorum.

Teşekkürler!

Yanıtlar:


15

~/.ssh/id_rsave ~/id_rsa.pubgenellikle. Ancak ssh'ın bir çift oluşturması ve kaydetmesi gerektiği anlamına gelmez: ssh temel olarak Diffie / Hellman anahtar değişimi algoritmasını veya bir varyantı kullanarak bir oturum anahtarı oluşturan SSL protokolünü kullanır . Bu, bağlantıyı kurmanın el sıkışmasının bir oturum anahtarı oluşturduğu ve oturum tamamlandığında atar.

Algoritma hakkında okuyun, oldukça şık: oldukça basit bir matematik kullanarak, anahtarı bağlantı üzerinden göndermeden bağlantının her iki ucunda da bilinen bir anahtar oluşturur .


Bu, RSA'nın hiç kullanılmadığı SSH anahtarları üretmem istenmediği anlamına mı geliyor? Başka bir deyişle, oturum anahtarını paylaşmak için bazı asimetrik algoritma kullanıldı, ancak bağlantı için geçici genel / özel anahtarlar bilgisayarımda saklanmadı mı?

Bu kesinlikle doğru. Aslında, şifreleme simetriktir - asimetrik algoritmalar akış için uygun değildir. Diffie-Hellman, simetrik şifreleme için bir oturum anahtarı oluşturmak için kullanılır. Bunun yerine genel / özel bir anahtar çifti kullanırsanız, simetrik algoritma için bir oturum anahtarı oluşturmak için başka bir el sıkışmasında kullanılırlar.
Charlie Martin

@mieli: Hayır. İlk etapta asla yaratılmadılar. publickeybirçoğunun olası tek bir kimlik doğrulama yöntemidir; passwordveya ile basitçe giriş yaptıysanız keyboard-interactive, şifrenin kendisi gönderilmiştir. (Not: Kullanıcı anahtarını, ana bilgisayar anahtarını ve oturum anahtarlarını karıştırmayın.)
user1686

@grawity çoğunlukla burada hemfikiriz ama biraz dikkatli olalım. Diffie-Hellman anahtar değişimi RSA ve diğer asimetrik şifreleme algoritmaları ile ilgilidir ve değişimin her iki tarafının da nihai anlaşmanın kendi "yarısı" na sahip oldukları için asimetriktir. Onlar do anahtarın iki bölümden ve nihai anahtar ve inşa etmek için tam süreç oturumun sonunda atılır. Ancak bunlar bir RSA çiftinin kamu ve özel kısımları değil.
Charlie Martin

4

Kişisel ortak ve özel ssh anahtarlarınız normalde şu yerlerde depolanır:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

Veya olabilir id_rsave id_rsa.pubDSA anahtarları yerine RSA anahtarları oluşturduysanız (OpenSSH her iki formu da destekler).

Ancak daha önce ssh bağlantıları kurduğunuz gerçeği ssh anahtarlarınız olduğu anlamına gelmez. Eğer sshkomut kişisel anahtarı bulamazsa, bu uzak sistem için bir parola ister. Bu, anahtar kullanmaktan daha az güvenlidir.

Normalde ssh özel anahtarınızı bir parola ile oluşturmanız gerekir. Parola olmadan oluşturursanız, özel anahtarınızın bir kopyasını alan biri sizi taklit edebilir. ssh-agenther kullandığınızda parolanızı tekrar girmek zorunda kalmadan parola içeren bir anahtar kullanmanıza olanak tanır.


2

Bir keypair oluşturmak vermedi, muhtemelen yok olması birini.

SSH2 trafiği, DH, ECDH algoritmaları veya GSSAPI anahtar değişimi kullanılarak oluşturulan simetrik bir oturum anahtarı ile şifrelenir . Ne ana bilgisayar anahtarı ne de kullanıcı anahtarı veri şifrelemek için kullanılmaz - tek amacı kimlik doğrulamasıdır .

Şimdi SSH'nin çeşitli kimlik doğrulama yöntemlerini desteklediğini unutmayın : Buna ek olarak publickey, hemen hemen tüm sunucular basit passwordve / veya keyboard-interactivehiçbir anahtar üretimi veya kullanımının gerçekleşmediğini kabul eder - şifre doğrulama için uzak sunucuya gönderilir.

Başka bir deyişle, "Daha önce ssh bağlantıları kurduğum için, bir yerde olmalılar" yanlış - bağlantı kurmak için kullanıcı anahtar çifti gerekli değil .


Eğer varsa yaptığımız bir keypair oluşturmak, büyük olasılıkla olacak ~/.ssh/id_*- örneğin, id_rsavarsayılan RSA anahtar çiftinin için id_ecdsaECDSA için, id_dsaDSA için. Bu dosyalar içermesine rağmen , her iki anahtar çiftinin özel ve kamu parçaları, kamu kısmı genellikle otomatik ayrı içine ayıklanır id_*.pubkolaylık dosyası ( id_rsa.pubiçin id_rsave benzeri).

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.