Soru Yerel Ubuntu'dan bir Amazon EC2 sunucusuna SSH denerken neden “İzin reddedildi (publickey)” alıyorum?


Amazon EC2 örneğinde bulutta çalışan bir uygulama örneğim var ve yerel Ubuntu'mdan bağlamam gerekiyor. Yerel ubuntu ve dizüstü bilgisayar üzerinde iyi çalışıyor. Başka bir yerel Ubuntu'da SS2'den EC2'ye erişmeye çalışırken "İzin reddedildi (publickey)" mesajım var. Benim için çok garip.

Amazon EC2'de güvenlik ayarlarıyla ilgili bir takım sorunlar olduğunu düşünüyorum, bu da bir örneğe sınırlı IP erişimi var veya sertifikanın yenilenmesi gerekebilir.

Bir çözüm bilen var mı?


213
2017-07-13 07:38


Menşei


"Daha önce çalışırdı" - önce ne? - womble♦
Elastic Beanstalk EC2 örneğim var. Ağustos 2013'te olduğu gibi çözüm, izin reddedildi (publicKey) hatası yapan ec2 kullanıcısı kullanıcısı olarak örneğe erişecekti. Viz: ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com. Tabii ki diğer tüm şeylere göre var. stackoverflow.com/questions/4742478/... - mikemay
Yanlış kullanıcı adınız varsa, bu sorunu alırsınız. Aws docs (docs.aws.amazon.com/AWSEC2/latest/UserGuide/...) şu anda kullanıcı adı ec2-user [ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com] ile bir örnek verirken, eski) ubuntu kutusunun ubuntu'nun bir kullanıcı adı vardır, bu yüzden bu hatayı aldığımda, doğru kullanıcı isminin değiştirilmesi çözülür. - david.barkhuizen
@ david.barkhuizen, yorumunuz bana yardımcı oldu. Benzer bir problemim vardı; Bu kullanıcı adı ile ilgili olduğu ortaya çıktı. Teşekkürler. - NaijaProgrammer


Cevaplar:


Bu durumda yapılacak ilk şey, -v seçeneği sshBöylece, hangi kimlik doğrulama türlerinin denendiğini ve sonucun ne olduğunu görebilirsiniz. Bu durumu aydınlatmaya yardımcı olur mu?

Sorunuza yapılan güncellemenizde, "başka bir yerel Ubuntu'da" bahsediyorsunuz. Ssh özel anahtarını diğer makineye kopyaladınız mı?


140
2017-07-13 07:44



@Greg'in önerdiği gibi ssh özel anahtarını diğer makineye kopyaladım. Şuan çalışıyor. Teşekkürler! - Vorleak Chy
FYI -i bayrağını, bunları yüklemeden anahtarların yolunu gösterecek şekilde kullanabilirsiniz. - Jorge Vargas
Benim durumumda, bir bitnami .ami kullanıyordum ve kullanıcı gibi bitnami olarak giriş yapmanız gerektiğini farketmedim: ssh -i <keyfile> bitname@<ec2-address>. Ne yazık ki -v seçeneği bunu bulmama yardımcı olmadı, ancak kontrol etmek için hala çok yararlı! - Matt Connolly
Eh, benim durumumda yanlış kullanıcı adı kullanıyordum. "bitnami" yerine "ubuntu" kullanıyordu. şunun gibi: ssh -i key.pem bitnami @ hostaddress - Lucas Pottersky
İyi bir kurşun da uzak düğümün kendisi, içine bakmak /var/log/auth.log, bazen aşağıdaki mesajları göreceksiniz: Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys veya başka bir şey - Jonas Libbrecht


Açıkça belirtilmediğinden, sshd varsayılan olarak authorized_keys Dosyalar. Eğer authorized_keys olduğu yazılabilir kullanıcı dışında kimse için veya yazılabilir yapılabilir kullanıcı dışında herhangi biri tarafından, sshd ile yapılandırılmadığı sürece kimlik doğrulamayı reddeder StrictModes no)

"Yazılabilir hale getirilebilir" ile kastedilen, ana dizinlerden herhangi birinin kullanıcı dışında herhangi bir kullanıcı için yazılabilir olması durumunda, bu dizinleri değiştirmeye izin veren kullanıcıların izinleri yetkili_kartları değiştirebilecek / değiştirebilecek şekilde değiştirmeye başlayabilmesidir.

Bu görünmeyecek ssh -v, sshd tarafından yayımlanan günlüklerde görünecektir (genellikle /var/log/secure veya /var/log/auth.log, dağıtıma ve syslogd konfigürasyonu).

Adam sshd'den (8):

 ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described above.  The
         content of the file is not highly sensitive, but the recommended
         permissions are read/write for the user, and not accessible by
         others.

         If this file, the ~/.ssh directory, or the user's home directory
         are writable by other users, then the file could be modified or
         replaced by unauthorized users.  In this case, sshd will not
         allow it to be used unless the StrictModes option has been set to
         “no”.

73
2018-01-05 14:38



Bu "yazılabilir yapılabilir" diye bana neyin var - wmarbut
FWIW anahtar dosyalar için doğru izinler 600'dür (bkz. İşte) - Matt Lyons
Evet, .authorized_keys dosyası grup tarafından yazılabilirdi, bu yüzden kabul etmeyi reddetti. - Aditya M P
Kafamı duvara çarpıyordum! Kullanıcı klasörümde yanlış izinler vardı. Teşekkür ederim! - XJones
Aynı ~ / .ssh klasörünün kendisi için de geçerli. aşağıdaki hata mesajını alabilirsiniz: Authentication refused: bad ownership or modes for directory - Yevgeniy M.


Bu hatayı aldım çünkü eklemeyi unuttum -l seçeneği. Yerel kullanıcı adımım uzak sistemdekiyle aynı değildi.

Bu sorunuzu cevaplamıyor, ama burada benim problemime bir cevap buldum.


37
2018-04-01 21:51



ssh host -l user aynıdır ssh user@host, sağ? - Znarkus
@Znarkus evet, aynı. - cregox
Evet, bu da "İzin reddedildi (publickey)" hatasına neden olan sorunumu çözdü. - Brooks Moses
Bu benim için sorun oldu. Çalışmak için kullanıcı "root" bekliyordum, ama "ubuntu" varsayılan kullanıcı vardı bir Ubuntu EC2 görüntü kullanıyordu. - Cerin


Bu mesajı Ubuntu AMI'ye dayanan yeni bir örnekte aldım. PEM'i sağlamak için -i seçeneğini kullanıyordum ama hala "İzin reddedildi (publickey)" gösteriliyordu.

Benim problemim doğru kullanıcıyı kullanmadım. Ssh'i ubuntu @ ec2 ile çalıştırarak normal gibi çalıştı.


19
2017-11-17 16:29



Evet ... komuta ile koşuyordum sudoBu yüzden çalışmıyordu. - thaddeusmt


Okuması daha kolay bir şey ssh -i (benim görüşüme göre), tail -f /var/log/auth.log. Bağlanmaya çalışırken, bağlanmaya çalıştığınız sunucuda çalıştırılmalıdır. Düz metinde hataları gösterecektir.

Bu, sorunumu çözmeme yardımcı oldu:

Kullanıcı gruplarının hiçbirisi AllowGroups'ta listelenmediğinden xx.yy.com adresinden kullanıcı [kullanıcı adı] izin verilmiyor


16
2018-02-01 14:07



Bence demek istedin -v - Tim Tisdall
Bu sunucu günlüğü. RHEL / CentOS 7 için: tail -f /var/log/secure - Gianfranco P.


Kontrol edin / Etc / SSH / sshd_config dosya. Orada, yazan satırı bulun.

PasswordAuthentication no

Bu satırın hayır yerine evet demek için değiştirilmesi gerekiyor. Ayrıca, sshd sunucusunu daha sonra yeniden başlatın.

sudo /etc/init.d/ssh restart

11
2017-12-10 06:15



Bu, sunucunun daha az güvenli olmasını sağlar. - Znarkus
Bu benim için sorun oldu: Başka bir kullanıcı için bir hesap açmak istedim, sadece bir şifre ile kimlik doğrulaması. Ayrıca, kendi özel anahtarım olmadığı yerlerden kendime giriş yapabilmeyi istedim. - Daniel
Nasıl gidebiliriz /etc/ssh/sshd_config - sunucuya bile giremezsek? - kyo
Sunucunun kendisine girebilmek için, örneği oluştururken verdikleri PEM dosyasını kullanmanız gerekir. Talimatlar bundan sonra gider. - Sudipta Chatterjee
Bu benim için çalıştı, ancak sshd'yi yeniden başlatmak için aşağıdaki komut gerekiyordu: sudo service sshd reload - pacoverflow


Belki de mevcut posterle alakalı değil, benzer durumlara cevap ararken başkalarını bulan başkalarına da yardımcı olabilir. Amazon'un ssh anahtarlığını oluşturmasına izin vermek yerine, kendi standart, varsayılan, public ssh anahtarınızı Amazon'a yüklemenizi ve bir EC2 örneğini çalıştırdığınızda belirtmenizi öneririm.

Bu, ssh'de "-i" tipi sözdizimini bırakmanıza, standart seçeneklerle rsync'i kullanmanıza ve aynı ssh anahtarını tüm EC2 bölgelerinde kullanmanızı sağlar.

Bu süreç hakkında bir makale yazdım:

Kişisel ssh Anahtarlarını Amazon EC2'ye Yükleme
http://alestic.com/2010/10/ec2-ssh-keys


6
2017-09-29 21:15



+1 Bu nedenle tam olarak bu soruya baktı. - John Riselvato
Makalenizi takip ederek bu hatayı görüyorum. region = $ (ec2-describe-areas | cut -f2) Gerekli seçenek '-K, --özel anahtar KEY' eksik (kullanım için -h) - KashifAli
@KashifAli EC2 API komut satırı aracı kimlik bilgilerini kurmak isteyeceksiniz, böylece her komut satırında kimlik bilgilerini her zaman geçmek zorunda kalmazsınız. - Eric Hammond