Ortak anahtarlar sunuculara nasıl “gönderilir” ve özel anahtarlar SSH için “nasıl kullanılır”?


11

İki Linux makineleri, bir ortak anahtar (muhtemelen bir oluşturur B. Yani A'ya içine SSH edebilmek için bir ihtiyacı üzerinde çalışan A ve B Scripts olan ssh-keygen-generated id_rsa.pub) ve sonra (muhtemelen yine kendi ilgili özel anahtarı kullanır id_rsamarka için) SSH bağlantısı.

Yukarıda söylediğim bir şey yanlış veya yanlış ise, lütfen beni düzelterek başlayın!

Hedefteki az çok olduğumu varsayarsak:

  • A, B'ye ortak anahtarını ( id_rsa.pub) nasıl “verir” ? Bu manuel bir işlem mi olmalı yoksa otomatikleştirilebilir mi? Manuel ise, süreç nedir? Otomatikleştirilmişse, komut nedir? B bu ortak anahtarı "aldığında" nereye gider veya depolanır?
  • B ile SSH bağlantısı başlatılırken, A bu anahtarın bir id_rsaparçası olarak özel anahtarını ( ) nasıl kullanır ?

3
Downvote neden açıklama sans? Araştırma gösterir, bir SSCCE'dir ve bildiklerime göre, bir kopya değildir. Kabul etmiyorsanız ve bunun bir kopya olduğunu düşünüyorsanız, lütfen bunun bir kopya olduğunu düşündüğünüz soruya bir bağlantı verin!
user3178622

Ben inmedim ve bu sorunun herhangi bir şekilde kötü olduğunu düşünmese de, belki de Bilgi Güvenliği Yığını daha uygun bir yer olurdu.
MC10

3
Ben de oy vermedim, ama neden birinin yaptığını anlıyorum. Bu, yaygın olarak kullanılan bir giriş yöntemidir, ancak Google arama sonuçlarının makalelerin nasıl çalıştığına değil, nasıl çalışacağına dair karışıklık olduğunu kabul ediyorum. Aradığınız bilgileri bulmak mümkündür.
Tyson

5
SSCCE kavramı, kodla ilgili olmayan sorular için gerçekten geçerli değildir.
Scott

2
Yinelenen değil, ilgili: superuser.com/questions/383732/how-does-ssh-encryption-work . Sorunun ikinci bölümüne cevap verebilir (özel anahtarların nasıl kullanıldığı)
Jay

Yanıtlar:


5

ssh-keygenbaşlangıçta yalnızca yerel olarak bulunan hem genel hem de özel anahtarları oluşturur. Ortak anahtarı başka bir ana bilgisayara vermek, kullanıcının B sunucusundan sorumlu birine göndererek manuel olarak yapması gereken bir şeydir veya şifreyle bir hesabınız varsa, giriş yapabilir ve oraya kendiniz koyabilirsiniz. Sunucu B'ye şifresiz oturum açmaya izin vermek için, ortak anahtarınızı sunucu B'deki ~ / .ssh / yetkili_anahtarlar dosyasına eklemeniz gerekir (her satırda bir ortak anahtar, bu dosyada istediğiniz sayıda anahtar olabilir). ssh-copy-idKimliği sizin için kopyalayıp dosyaya koyacak bir linux komutu vardır.

Varsayılan olarak, ssh özel anahtarınız olarak ~ / .ssh / id_XXX dosyasını kullanır. XXX rsa, dsa veya bir anahtarın oluşturulduğu herhangi bir protokol olabilir. IIRC, dsa eskidir ve kullanılmamalıdır. Farklı bir özel anahtar kullanmak istiyorsanız, bunu kullanarak ssh komutunuzda belirtebilirsiniz -i. Kullanılan özel anahtar, uzak makinedeki genel bir anahtarla (oturum açtığınız kullanıcının hesabı için yetkili_anahtarlar dosyasında) eşleştiği sürece, bir parola sağlamanız gerekmez.


Teşekkürler @BamaPookie - birkaç takip: (1) ssh-keygençalıştırıldığında, iki anahtar "sadece yerel olarak ikamet" bahsetti mi? Nerede?!? Olduğu gibi, klasör ne gidin ve görebilir id_rsa.pubve id_rsa? (2) Açık ssh-addanahtar eklemek için komut olduğunu düşündüm authorized_keys, değil mi? Arasındaki fark nedir ssh-copy-idve ssh-add? Tekrar teşekkürler!
user3178622

2
@ user3178622 re '1' Önümde yok ama ~/.ssh/id_rsa yeniden '2' gibi görünüyor , ssh-add yetkili_anahtarlara eklemek için değil, bir anahtarlığa eklemek için .. ssh kullanmadım -sa da ekle. ssh-add, bir anahtar sözcük gerektiren her anahtar kullandığınızda bir anahtar sözcük girmenize gerek kalmamasıyla ilgilidir. Eğer ssh anahtarlarınız bir anahtar kelime gerektirmiyorsa, ssh-add kullanmak için herhangi bir neden yoktur ve ssh-copy-id kullanmanız veya genel anahtarı kopyalayarak manuel olarak yapmanız gerektiğini düşünüyorum. authorized_keys
barlop

2
ssh-keygen dosyayı nereye kaydedeceğinizi soracaktır, ancak varsayılan konum ~ / .ssh / ssh-copy-id'de ortak anahtarı uzak bir ana bilgisayara kopyalar. ssh-add yerel anahtarlığınıza özel bir anahtar ekler. Yerel anahtarlığınıza özel bir anahtar eklemek, bir ssh bağlantısı denerken (yani, -i ile belirtmek zorunda kalmadan) varsayılan olarak kontrol edileceği anlamına gelir.
BamaPookie

1
@BamaPookie Yazdığınız yere "Yerel anahtarlığınıza özel bir anahtar eklemek, bir ssh bağlantısı denerken varsayılan olarak denetleneceği anlamına gelir (yani, -i ile belirtmek zorunda kalmadan)." <--- Seçtiğiniz varsayılan özel anahtarı değiştirdiğini düşünüyorum, böylece id_rsa yerine, anahtarlıktan. (Tabii ki, ssh-add olmadan hala -i ile özel bir anahtar belirtmek zorunda değilsiniz, yine de bir varsayılan, sadece farklı bir varsayılan olacaktır.
barlop

3

A üzerinde çalışan iki Linux makinesi vardır: A üzerinde çalışan komut dosyaları SSH'nin B'ye girebilmesi gerekir. Bu nedenle A, ortak bir anahtar oluşturur (muhtemelen ssh-keygen tarafından oluşturulan id_rsa.pub) ve ardından ilgili özel anahtarını ( tekrar, muhtemelen id_rsa).

Yukarıda söylediğim bir şey yanlış veya yanlış ise, lütfen beni düzelterek başlayın!

Hedefteki az çok olduğumu varsayarsak:

Evet

ancak A'nın B'ye bağlanabilmesi için B'nin A'nın ortak anahtarının B'nin yetkili_anahtarlar dosyasında listelenmesi gerekir

Ayrıca id_rsa.pub ve ssh'yi B'ye silebilirsiniz ve yine de çalışır, çünkü ortak anahtar her ssh bağlantısıyla taze olarak üretilir ve herhangi bir id_rsa.pub'da saklanmaz

A, B'ye ortak anahtarını nasıl verir (id_rsa.pub)? Bu manuel bir işlem mi olmalı yoksa otomatikleştirilebilir mi? Manuel ise, süreç nedir? Otomatikleştirilmişse, komut nedir?

manuel - benzeri bir şey

kimden A-

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

veya daha da fazla manuel olarak, komutu bozmak için

A $ cat id_rsa.pub | ssh user@host 'cat>~/a.a'

sonra B'de ~ / .ssh olduğundan emin olun cat a.a >> ~/.ssh/authorized_keys

ve anahtarın listelendiğinden emin olmak için B'nin yetkili_ tuşlarını önce ve sonra kullanabilirsiniz.

Veya bir e-posta hesabına id_rsa.pub adresine e-posta gönderebilirsiniz, ardından B'den B e-postayı kontrol edebilir ve id_rsa.pub içeriğini yetkili_anahtarlar dosyasına ekleyebilir

otomatik olarak

Ssh-copy-id komutu

İçeri girebilmeniz gerekiyor, bu yüzden şifre erişimine ihtiyacınız var

Ssh user @ host yapmak yerine ssh-copy-id user @ host yaparsınız ve sizden bir şifre girmeniz istenir, siz girersiniz, giriş yaparsınız, genel anahtarı kopyalar. Ve bir dahaki sefere ssh user @ host yaptığınızda anahtarı kullanacaktır.

B bu ortak anahtarı "aldığında" nereye gider veya depolanır?

B'nin ~ / .ssh / yetkili_anahtarları

B ile SSH bağlantısı başlatılırken, A özel anahtarını (id_rsa) bu bağlantının bir parçası olarak nasıl kullanır?

bunun hakkında fazla bir şey bilmiyorum, kafamın üstünden, ama bir anahtarla şifrelenen her şey diğer anahtarla şifresi çözülebilir ve kendinizi tanımlamak veri göndermekten biraz farklıdır ... ve bir şey olabilir geçici bir anahtar hakkında.


Teşekkürler @barlop! Lütfen BamaPookie'nin cevabının altındaki sorularıma bakın; Senin için aynı sorularım var!
user3178622
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.