Amazon EC2'DE geliştirme için kullandığım bir Ubuntu sunucum var ve bugün aptalca her şeyi temizledim. ~/.ssh/authorized_keys dosya. Neyse ki açık bir SSH'M var, bu yüzden hala bağlıyım ve dosyayı düzeltebilirim, ancak anahtar dosyamı geri koymaya çalıştığımda işe yaramıyor. Yerel makinemdeki sunucudan hala izin reddedildi.
authorized_keys 600 izinlerine sahiptir. SSH anahtarımı ssh-rsa ile eklemeyi ve ssh-rsa'yı kapalı bırakmayı denedim. Ayrıca SSH anahtarını tek bir satır yapmaya çalıştım, ancak bu da işe yaramadı.
Dosyayı yeniden yüklemek gibi yapmam gereken başka bir şey var mı?
Yapmalısın asla dosyayı içeriğinden başlayarak kaydedin -----BEGIN RSA PRIVATE KEY----- sunucuda, bu senin özel anahtar. Bunun yerine, koymak gerekir kamu içine anahtar ~/.ssh/authorized_keys dosya.
Bu kamu anahtar vardır .pub kullanılarak oluşturulduğunda uzantı ssh-keygen ve içeriği ile başlar ssh-rsa AAAAB3. (İkili biçim, aşağıdakilere verilen cevaplarda açıklanmıştır bu soru).
İzinler ~/.ssh sunucuda 700 olmalıdır. Dosya ~/.ssh/authorized_keys (sunucuda) 600 moduna sahip olması gerekiyordu. İstemci tarafındaki (özel) anahtarın izinleri 600 olmalıdır.
Özel anahtar bir parola ile korunmadıysa ve sunucuya koyduysanız, yeni bir tane oluşturmanızı öneririm:
ssh-keygen -t rsa
Silinen özel anahtarı sunucudan kimsenin kurtaramayacağından tamamen eminseniz bunu atlayabilirsiniz.
Bu yardımcı olmazsa, koş ssh daha fazla ayrıntı için seçeneklerle:
ssh -vvv user@example.com
Sunucu tarafında şunları inceleyebilirsiniz /var/log/auth.log ayrıntılar için.
Önce yerel ortak anahtarınızın içeriğini görüntüleyin / kopyalayın id_rsa.pub e-posta adresinizle bitene kadar "ssh-rsa" başlangıcı dahil:
cat ~/.ssh/id_rsa.pub
Sonra düzenle authorized_keys sunucuda ve panonuzun içeriğini o dosyadaki diğer tuşların altına yapıştırın:
nano ~/.ssh/authorized_keys
Ve kurtar Ctl+O, dosyadan çık Ctl+X. SSH oturumundan çık exit ve çalıştığını doğrulamak için tekrar giriş yapmayı deneyin. Şifre istemediyse işe yaradı.
Anahtarı koymak istediğiniz uzak makineye bir kabuk alın ve ardından gerekli dosyaları ve dizinleri oluşturmak, izinlerini ayarlamak ve anahtarı dosyaya eklemek için bu tek satırlı satırı çalıştırabilirsiniz. Tabii ki değiştirmek zorundasın. KEYGOESHERE aşağıdaki bölüm ve ondan sonraki yorum.
Özellikle AWS örnekleriyle ilgili olduğu için buna katkıda bulunabileceğimi düşündüm ve tüm cevaplar sorunu yalnızca bir donanım parçasıymış gibi bir Linux sorunu olarak ele alıyor. Anlamanız gereken ilk şey, EC2 örneklerini asla donanım olarak değerlendirmemeniz gerektiğidir. Bu sadece onlara değişken davranmanız için daha fazla iş yaratacaktır. İnsanların AWS ile yaşadıklarını gördüğüm en büyük engel bu.Örneğinizin bir amı'sini oluşturun ve ihtiyacınız olan anahtarı yeni örneğe enjekte edin. cloud-init bunun için ilgilenecek you.In tek yapmanız gereken, orijinalin amı'sından yeni bir örnek oluştururken doğru ortak anahtarı kullanmaktır.Onaylanan cevabın yorumlarında olduğu gibi kendi pub ve pem dosya çiftinizi oluşturmak istiyorsanız AWS size ec2'de kullanmak üzere ortak anahtarlarınızı yükleme seçeneği sunar.
Genel anahtarı kaydettikten sonra, özel anahtarı pc'nizdeki bir dizine ve dosyaya kaydetmelisiniz. Ve putty'deki ssh'nin auth bölümünde, masaüstünüze kaydettiğiniz özel anahtar dosyasına işaret etmelisiniz. İşe yarayacak. Bana uyar.
Burada, bir metin dosyasında ortak anahtar dosya adlarının bir listesine sahip olabileceğiniz ve büyük toplu ortak anahtar dosyalarının da aynı dizinde bulunduğu bir varyasyon var.
Bu varyasyon, içe aktarılacak ortak anahtar dosyalarının büyük bir listesini veriyorsanız yararlı olabilir :-)
$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
Yıllar sonra, bu -hala- alakalı ve aktif görünüyor; sadece bir gözlem yapmak istedim, bir mermiden kaçtığım hakkında konuşmak istedim: “Neyse ki açık bir SSH’M var, bu yüzden hala bağlıyım […]” - sheesh! ;dP