Genel anahtarı bir SSH özel anahtarından nasıl alabilirim?


444

Tarafından oluşturulan bir SSH özel anahtarı, ssh-keygenortak bir anahtar bölümü içerir. Bu ortak anahtarı özel anahtardan nasıl alabilirim? Genel anahtarımı kaybettim ve bu genel anahtarın içeriğini sunucu authorized_keysdosyasına koymak ve yeni bir anahtar çifti oluşturmak istemiyorum.

Alternatif olarak ifade edilmiş: id_rsa.pubdosyayı bir id_rsadosyadan nasıl oluşturabilirim ?


pbcopy > ~/.ssh/id_rsa.pubayy.
Nick T,

@NickT - pbcopy bir MacOSX komutudur. Ayrıca, panoya başka bir şeyi yeniden başlattıysanız, oturumu kapattıysanız veya kopyaladığınızda işe yaramaz.
jsnfwlr

Yanıtlar:


681

Yanıtı Sunucu Hatası üzerinde buldum: Özel anahtardan ortak bir SSH anahtarı oluştur?

Seçenek -y, genel anahtarı çıkarır:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Bir yan not olarak, genel anahtarın yorumu kaybolur. Yorumu gerektiren bir sitem var (Launchpad?), Bu nedenle ~/.ssh/id_rsa.pub, yorum ve anahtar veriler arasında boşluk bırakarak ilk satırı bir yorumu düzenlemeniz ve eklemeniz gerekir . Örnek bir genel anahtar aşağıda kısaltılmış olarak gösterilmiştir.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

SSH Agent'a eklenen tuşlar için (arka planda çalışan ve tekrar tekrar anahtar dosya parolasını tekrar girme ihtiyacını önleyen bir program), programa ssh-add -Leklenmiş anahtarların genel anahtarlarını listelemek için komutu kullanabilirsiniz . ajan (yoluyla ssh-add -l). Bu, SSH anahtarı bir akıllı kartta depolandığında yararlıdır (ve özel anahtar dosyasına erişim mümkün değildir).


1
Özel anahtar dosyanızın ~/.ssh/id_rsakullanıcı adınızla sınırlandırılması gerektiğini lütfen unutmayın . kullanmak $ sudo chmod 600 ~/.ssh/id_rsave kısıtlamak için kök kimlik bilgilerinizi girin, sonra ortak anahtar dosyasını verebilirsiniz. Aksi takdirde, sınırsız özel anahtar dosya uyarısı alırsınız.
Mark Mikofski

12
@MarkMikofski Gerek yok sudo, zaten özel anahtara sahip olmanız gerekiyor. Aksi takdirde ilk etapta okuyamazsınız.
Lekensteyn

7
@Lekensteyn teşekkürler, elbette haklısın !. Ayrıca 400, özel anahtar dosyası yazmanız gerekmediğinden de önerilir. Düzeltilmiş komut olmalıdır$ chmod 400 ~/.ssh/id_rsa
Mark Mikofski

Özel anahtar yorum kayboldu. Bkz stackoverflow.com/questions/38290929/...
weberjn

1
@weberjn Özel anahtarın ( id_rsadosya) bir yorumu yoktur, ancak genel anahtar dosyadaki ( id_rsa.pub) yorum aslında kaybolur.
Lekensteyn

14

Bu, özellikle Amazon SSS ve GCE'deki bulut görüntüleri de dahil olmak üzere, Windows SSH'yi uzak makinelerinde kullanan kullanıcılar için özel bir çözümdür.

(Uyarı)

Kısa bir süre önce bu çözümü GCE'deki yeni konuşlandırılmış VM görüntülerine uzaktan oturum açmak için kullandım.


Kullanılan aletler:

  1. PuTTYgen
  2. WinSCP

Gerçekleştirilecek adımlar:

  1. Puttygen kullanarak bir kamu / özel anahtar çifti oluşturun.
  2. Sunucunuza bulut veya uzak konumdaki bir genel anahtarı yükleyin.

Açıklama (nasıl yapılır):

  1. Bir anahtar / çift oluşturun veya mevcut bir özel anahtarı kullanın:

    Özel bir anahtarınız varsa:

    Puttygen'i açın, yükle düğmesine basın ve özel anahtar (* .pem) dosyanızı seçin.

    Eğer yoksa değil özel bir anahtar vardır:

    • Puttygen açın
    • Parametreler bölümünde istenen anahtar tipini SSH2 DSA (RSA veya DSA kullanabilirsiniz) seçin ... ve parola alanını boş bırakmanız önemlidir,
    • Oluşturma düğmesine basın ve (genel / özel) anahtar çifti oluşturmak için talimatları izleyin.

    Örnek Anahtar Üretimi pic

  2. Yeni bir 'yetkili_key' dosyası yaratın (Not Defteri ile):

    Genel anahtar verilerinizi PuTTY Anahtar Üreticisi'nin "OpenSSH yetkili_ anahtarlar dosyasına yapıştırmak için genel anahtar" bölümünden kopyalayın ve anahtar verilerini "yetkili_ anahtarlar" dosyasına yapıştırın.

    Bu dosyada yalnızca bir satır metin olduğundan emin olun.

  3. Anahtarı bir Linux sunucusuna yükleyin:

    • WinSCP’yi açın,
    • SFTP dosya protokolünü seçin ve SSH kimlik bilgilerinizle giriş yapın.
    • Başarıda, uzak makinenizdeki giriş dizini yapısını görürsünüz.

    Yetkili_ anahtar dosyasını uzak makinedeki ana dizine yükleyin.

  4. Uygun izinleri ayarlayın:

    Bir .sshdizin oluşturun (yoksa)

    authorized_keysDosyayı .ssh dizinine kopyalayın (bu mevcut herhangi bir authorized_keysdosyanın yerini alacak ; bunu not edin).

    Dosya varsa, bu dosyanın içeriğini varolan dosyaya eklemeniz yeterlidir.

    İzinleri ayarlamak için komutları çalıştır:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Artık her seferinde kimlik bilgilerini girmeden uzaktaki bir makineye geçebileceksiniz.

Daha fazla okuma:

  1. Windows altında SSH anahtarlarını oluşturma ve yükleme

  2. OpenSSH Anahtarını kullanarak şifresiz kimlik doğrulama, .pem ve .pub sertifikaları


Ana dizininiz şifrelenmişse
devprashant

2
Cevabınız soru ile gerçekten alakalı olmasa da, coşkunuz için bunun için oy.
Truong Nguyen,
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.