Amazon EC2 yönetim ortamına SSH Erişimi [kapalı] izni reddedildi (publickey)


355

Amazon ec2 örneğimi kullanmak istiyorum ancak aşağıdaki hatayla karşılaştım:

Permission denied (publickey).

Anahtar çiftimi oluşturdum ve .pem dosyasını indirdim .

Verilen:

chmod  600 pem file.

Sonra bu komut

ssh -i /home/kashif/serverkey.pem  ubuntu@ec2-54-227-242-179.compute-1.amazonaws.com

Ancak şu hatayı alın:

Permission denied (publickey)

Ayrıca, dosya yüklemek / indirmek için filezilla ile nasıl bağlantı kurabilirim?


1
2. sorunuzla ilgili olarak, dosya yüklemek / indirmek için filezilla ile bağlantı kurun, adım adım talimatlar için bunu kontrol edin - y2u.be/e9BDvg42-JI
Yasitha Waduge

2
Emin kullanmak vermedi olan bu hataya neden ve ssh önce sudo'yu kullanmanız gerekir anlamına gelir "sudo 600 pem dosyasını chmod"
felbus

Ayrıca bazı Debian işletim sistemleri için kullanıcı adıdır admin. En az 6.5 ve 7.0 versiyonları için.
Geliştirici

2
Kullanıcı adınız ise ec2-user, kullanmadığınızdan emin olun ec2_user:)
grisaitis

2
Emin olun kullanıcıyı sen anahtar listeye aldı bağlanmaya çalıştığınız hangi onun / onu $HOME/.ssh/authorized_keys dosyası.
ILMostro_7

Yanıtlar:


589

Bu hata iletisi, kimlik doğrulaması yapılamadığınız anlamına gelir.

Bunlar buna neden olabilecek yaygın nedenlerdir:

  1. Yanlış anahtarla bağlanmaya çalışılıyor. Bu örneğin bu anahtar çiftini kullandığından emin misiniz?
  2. Yanlış kullanıcı adıyla bağlantı kurmaya çalışıyorum. ubuntuubuntu tabanlı AWS dağıtımı için kullanıcı adı, ancak bazı başkalarına o en ec2-user(veya adminbazı Debian'ın üzerine Bogdan Kulbida cevabı göre) (ayrıca olabilir root, fedoraaşağıya bakınız)
  3. Yanlış ana bilgisayarı bağlamaya çalışıyorum. Giriş yapmaya çalıştığınız doğru sunucu bu mu?

EC2 örneğinizdeki dosyayı 1.bozarsanız bunun olacağını unutmayın /home/<username>/.ssh/authorized_keys.

Hakkında 2., hangi kullanıcı adını kullanmanız gerektiği hakkında bilgi genellikle AMI Image açıklamasından yoksundur. Ancak AWS EC2 belgelerinde, madde işaretlerinde bazılarını bulabilirsiniz 4.: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

Örneğe bağlanmak için ssh komutunu kullanın. Özel anahtar (.pem) dosyasını ve kullanıcı_adı @ public_dns_name belirtirsiniz. Amazon Linux için kullanıcı adı ec2 kullanıcısıdır. RHEL5 için kullanıcı adı kök veya ec2 kullanıcısıdır . Ubuntu için kullanıcı adı ubuntu'dur . Fedora için, kullanıcı adı ya fedora ya da ec2 kullanıcısıdır . SUSE Linux için kullanıcı adı köküdür . Aksi takdirde, ec2 kullanıcısı ve kök çalışmazsa, AMI sağlayıcınıza danışın.

Son olarak , kimlik doğrulamasının başarısız olmasının başka birçok nedeni olduğunu unutmayın. SSH, -vbu soruya verilen diğer birçok cevapta açıklandığı gibi, SSH komutunuza seçeneği ekleyip çıktıyı okumanız durumunda neyin yanlış gittiğiyle ilgili oldukça açıktır .


2
Arayüzün çalışan bir örneğe bir anahtar eklemeyi önerdiğini düşünmüyorum, bu nedenle çalışan örneğinizin anahtarını kaybettiyseniz yeni bir tane başlatmanız gerekecek.
Thibault D.

81
# 2 sorunumu çözdü, teşekkürler!
rckehoe

4
Bu cevap benim için çözdü. Bu örnek için varsayılan kullanıcı adı, AWS kılavuzunda belirtildiği gibi ec2 kullanıcısı değil "ubuntu" dur. 'Ec2-user@_your_EC2_IP.amazonaws.com
emf

7
# 1 ile ilgili olarak, yanlış anahtar, ssh komut satırına -v (ayrıntılı) eklemek bana hangi anahtarları denediğini gösterdi ve bu da id_rsa dışında bir şey adlandırdığım için ürettiğim anahtarı denemediğimi fark etmemi sağladı veya id_dsa.
KC Baltz

3
"Ubuntu Ubuntu tabanlı AWS dağıtımının kullanıcı adı," Beni yakalayan şey bu. Ec2 kullanıcısı için kullanıldı, sadece her zaman kullanıcı adı olduğu varsayıldı.
Nate Reed

48

Bu durumda sorun kayıp Anahtar Çifti'nden kaynaklanır. Bunun hakkında:

  • Bir örnekte Anahtar Çiftini değiştirmenin bir yolu yoktur . Yeni bir Anahtar Çifti kullanan yeni bir örnek oluşturmanız gerekir.
  • Örneğin, Beanstalk örneğinde bir uygulama tarafından kullanılıyorsa, bu soruna geçici bir çözüm bulabilirsiniz .

Bu adımları takip edebilirsiniz:

  1. AWS Yönetim Konsoluna Erişim
  2. Açık Elastik Beanstalk Sekmesi
  3. Tüm Uygulamalar Sekmesinden uygulamanızı seçin
  4. Sol taraftaki menùù Yapılandırma'yı seçin
  5. Örnekler Vitesine tıklayın
  6. Gelen Sunucusu Formu kontrol EC2 Anahtar Çifti girişi ve yeni Anahtar Çifti seçin. Yeni oluşturduğunuz bir Anahtar Çiftini görmek için listeyi yenilemeniz gerekebilir .
  7. Kayıt etmek
  8. Elastik Beanstalk sizin için yeni anahtar çifti ile ilişkili yeni örnekler yaratacaktır.

Genel olarak, EC2 yönetim ortamınızın gelen SSH trafiğini kabul etmesine izin vermeniz gerektiğini unutmayın.

Bunu yapmak için, EC2 örneğinizin Güvenlik Grubu için belirli bir kural oluşturmanız gerekir. Bu adımları takip edebilirsiniz.

  1. AWS Yönetim Konsoluna Erişim
  2. EC2 Sekmesini
  3. Gönderen örnekler listesinde ilgilendiğiniz örneğini seçin
  4. Gelen Açıklama Sekme adını chek Güvenlik Grubu örneğiniz kullanıyor.
  5. Yine Açıklama Sekmesinde Kuralları görüntüle'ye tıklayın ve Güvenlik Grubunuzun 22 numaralı bağlantı noktasında gelen ssh trafiği için bir kuralı olup olmadığını kontrol edin
  6. Değilse, Ağ ve Güvenlik menülerinde Güvenlik Grubu'nu seçin.
  7. Örneğiniz tarafından kullanılan Güvenlik Grubunu seçin ve Gelen Sekmesine tıklayın
  8. Gelen Sekmesi'nin solunda, SSH gelen trafiği için bir kural oluşturabilirsiniz:
    • Yeni bir kural oluşturun : SSH
    • Kaynak : Örneğe erişmek istediğiniz IP adresi veya alt ağ
    • Not : Örneğinize sınırsız erişim vermek istiyorsanız 0.0.0.0/0 belirtebilirsiniz , ancak Amazon bu uygulamayı önermez
  9. Kural Ekle'yi tıklayın ve ardından Değişikliklerinizi Uygulayın
  10. Artık örneğinize SSH üzerinden bağlanıp bağlanamadığınızı kontrol edin.

Umarım bu bana yardım ettiği gibi yardımcı olabilir.


1
Cevabınızın ikinci kısmı yanlış. "İzin reddedildi (publickey)." güvenlik duvarı ayarlarını doğru şekilde ayarlamadıysanız (Güvenlik Grupları). "İzin verilmedi (publickey)." SSH'den gelen bir hata mesajıdır ve Güvenlik Grupları yapılandırmanızın doğru olduğunun kanıtıdır. Bunun yerine, "ssh: host xxxx port 22'ye bağlanın: Bağlantı reddedildi"
Thibault D.

Uzun lafın kısası: Hata iletisi, bu sorunun Güvenlik Grupları yapılandırmanızla ilgisi olmadığını bildirir.
Thibault D.

Haklısın. İkinci bölüm başka bir problemi ele alıyor. Gönderiyi düzelttim.
Matteo Ceserani

Anahtarı kaybettiyseniz, bunu çözmenin olası bir yolunun örneğin anlık görüntüsünü alıp yeni bir anahtarla yeni bir tane başlatmak olacağını düşünüyorum. Bu durumda Amazon, yeni ortak anahtarı .ssh / authority_keys içine ekler, bu nedenle eskisini kaldırdığınızdan emin olun. (ve yenisini kaldırmamaya dikkat edin veya ilk sayıya geri dönersiniz)
Thibault D.

43

Sorunu bu şekilde çözdüm

ssh -i <key> ec2-user@<ec2 ip>

1
Burada benim için anahtar ana bilgisayarın IP adresi vs IP adresi gibi görünüyordu. ec2-user @ <ip> benim için çalıştı.
Zack

1
Çözüm de.
Tpojka

26

Sorunu daha önce koyarak sudoçözdüm

sudo ssh -i mykey.pem myec2.amazonaws.com

Ancak uygun çözüm ilk olarak mülkiyeti değiştirmek ve ardından Janus Troelsen'in aşağıda belirttiği gibi normal bir kullanıcı olarak bağlantı kurmaktır. Benim durumumda:

chown wellington:wellington key.pem

Benim için çalıştı (yine de bazı paketleri güncellemek zorunda kaldı)!
user1429980

4
uygun çözüm ilk olarak mülkiyeti değiştirmek ve ardından normal bir kullanıcı olarak bağlantı kurmaktır. kullanın sudo chown wellington:wellington key.pem.
Janus Troelsen

sizin durumunuzda çalışıyor, çünkü Amazon'da root kullanıcısını destekleyen VM'ye giriş yapmaya çalışıyorsunuz
Taimoor Changaiz

Ben whoami sonra sudo chown yaptım user_name_given_by_whoami xxxx.pem
Chirag Purohit

23

Kullanmayı deneyin

sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>

VEYA

sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>

1
Bu bana yardımcı oldu. Bahşiş için teşekkürler! : D
jehzlau

22

Bu hatanın başka bir olası nedeni:

Kullanıcının giriş dizini grup yazılabilir olduğunda, kullanıcı oturum açamaz.

(Ubuntu örneğinde çoğaltılmıştır.)


1
+1 Bunu 4 saat önce okumuş olsaydım !!! Rsync -a 'nın ec2 kullanıcı klasörü izinlerinin üzerine yazdığı sorunum çözüldü.
Michael Hobbs

Giriş dizinimi mv'den sonra giriş yapamadım.
Robert Moon

Peki bu şekilde etkilenen bir makineye nasıl giriş yaparsınız ve hiç giriş yapamazsınız?
PKHunter

/ Home dizinindeki düzeltme izinleri benim için de çalışıyor, teşekkürler! @AlexPetralia, bağlantınız koptu = / ama bunun hakkında konuşan aws forumunda bir yazı var: forums.aws.amazon.com/message.jspa?messageID=334402
Liko

Alex Petralia veya @Michael Hobbs gibi biri bunu çözebilir mi (veya yeniden ifade edebilir)?
Jakub Langr

7

Ubuntu 12.04 lts mikro örneği için kullanıcı adını seçenek olarak ayarlamak zorunda kaldım

ssh -i pemfile.pem -l ubuntu dns

Bu benim için çalıştı, gerçekten gerekli olabilecek kullanıcıları tartışmak için aws belgelerinin bir parçası olmadığına şaşırdım.
Ben

7

Aşağıdaki adımları uygulamanız gerekir:

  1. Linux kullanıyorsanız ssh istemcinizi veya terminalinizi açın.
  2. Özel anahtar dosyanızı bulun ve dizininizi değiştirin.
    cd <path to your .pem file>
  3. Aşağıdaki komutları yürütün:
    chmod 400 <filename>.pem
    ssh -i <filename>.pem ubuntu@<ipaddress.com>

Eğer ubuntukullanıcı çalışmıyor daha sonra deneyin ec2-user.


5

Görünüşe göre aynı izin reddedildi hatası ile mücadele

key_parse_private2: missing begin marker 

Benim durumumun nedeni geçerli kullanıcının ssh yapılandırma dosyası (~ / .ssh / config) oldu.

Aşağıdakileri kullanarak:

ssh -i ~/myKey.pem ec2-user@<IP address> -v 'exit'

İlk çıktı şunu gösterdi:

debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config

... burada birçok hata ayıklama satırı kesiliyor ...

debug1: Next authentication method: publickey
debug1: Trying private key: /home/ec2-user/somekey.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.

Yukarıdaki üçüncü satır, asıl sorunun tespit edildiği yerdir; Ancak, hata ayıklama iletisine alttan dört satır (yukarıda) baktım ve yanılmış. Anahtarla ilgili bir sorun yok ama test ettim ve diğer yapılandırmaları karşılaştırdım.

Kullanıcı ssh yapılandırma dosyam, aşağıda gösterilen şekilde istenmeyen bir global ayar aracılığıyla ana bilgisayarı sıfırladı. İlk Ana Makine satırı bir yorum olmamalıdır.

$ cat config
StrictHostKeyChecking=no
#Host myAlias
        user ec2-user
        Hostname bitbucket.org
#        IdentityFile ~/.ssh/somekey
#        IdentitiesOnly yes

Host my2ndAlias
        user myOtherUser
        Hostname bitbucket.org
        IdentityFile ~/.ssh/my2ndKey
        IdentitiesOnly yes

Umarım başka biri bunu faydalı bulur.


4

Ubuntu örneğimi bağlarken kullanıcı adını (ubuntu) eklemeyi unuttum. Bu yüzden denedim:

ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com

ve doğru yol

ssh -i /path/my-key-pair.pem ubuntu@my-ec2-instance.amazonaws.com

Yasal başlangıç ​​hatası. Kullanıcı adını eklemeyi unutursanız, yerel bilgisayarınızda oturum açtığınız kullanıcının kullanıcı adını kullanır.
Thibault D.

3

Bu bana birçok kez oldu. Amazon Linux AMI 2013.09.2 ve Ubuntu Server 12.04.3 LTS'yi her ikisi de ücretsiz katmanda kullandım.

Ne zaman bir örnek başlatsam, izninin reddedildiğini gördüm. Bunu doğrulamamıştım, ancak teorim, sunucunun içine ssh denemeden önce tamamen kurulmamış olmasıdır. İzin verilmeyen birkaç denemeden sonra, birkaç dakika bekledim ve sonra bağlanabiliyorum. Bu sorunu yaşıyorsanız, beş dakika beklemenizi ve tekrar denemenizi öneririz.


5 dakika bekledim. ve işe yaradı. ben de ücretsiz katmandayım. teşekkürler
Emeka Mbah

2

İşte bu hatayı üreten sinir bozucu senaryolar:

Başka bir örnekten (örneğin xyz örneği) oluşturduğunuz bir AMI'den yeni bir örnek oluşturuyorsanız, yeni örnek yalnızca A örneğinin kullandığı aynı anahtarı kabul eder. Bu tamamen anlaşılabilir, ancak kafa karıştırıcı hale geliyor çünkü yeni örneği oluşturma adım adım sürecinde, çalışmayacak bir anahtar (en son adımda) seçmeniz veya oluşturmanız isteniyor.

Oluşturduğunuz veya seçtiğiniz anahtardan bağımsız olarak, yalnızca XYZ gibi kullandığınız anahtar yeni örnek tarafından kabul edilir.


Wow, bunu hiç düşünmedim. Eski anahtarı kullanmak benim için problemi çözdü. Teşekkürler.
tolgamorf

Genellikle yeni ortak anahtarı yetkili_anahtarlar dosyasına ekler, böylece her ikisini de kullanılabilir hale getirir. Yine de test ettiğimden beri bir süre geçti, ama olmasını beklediğim şey bu.
Thibault D.

2

Aşağıdakileri bulana kadar bir süre bununla mücadele ettim:

eb ssh

Bunu proje dizininden kullandığınızda, bingo-bango no muss no spuss,


2

Kendi durumumda, aşağıdakileri yaptım:

chmod 400 <key.pem>

ssh -i <key.pem> ec2-user@ec2_public_dns (for debian)

Başlangıçta root@parçası kullanıyordum ve bu istemi aldım:

Please login as the user "ec2-user" rather than the user "root".


2

bana da aynı şey oldu, ama olan tek şey özel anahtarın yerel makinemdeki anahtarlıktan kaybolması.

ssh-add -K

anahtarı yeniden ekledikten sonra bağlanmak için ssh komutu işe döndü.


Yeniden başlatmadan sonra her seferinde olur ve bunun için herhangi bir geçici çözüm yukarıdaki komutu yeniden çalıştırmanız gerekir.
silentsudo

1
bunu kendim doğrulamamıştık, ancak burada doğrulanan cevap yardımcı olabilir: apple.stackexchange.com/questions/254468/…
eiTan LaVi

1

Bu sorun aşağıdaki komut kullanılarak Ubuntu kutusuna giriş yapılarak çözülebilir:

ssh -i ec2key.pem ubuntu@ec2-public-IP

1
Lütfen bazı ayrıntılar verin.
Syeda Zunaira

1

İki kez anahtarları ve ssh komut satırı doğru (Ben çalışan bir Ubuntu 14.04 örneği çoğaltmak çünkü biliyorum) vardı, ama sadece Wade Anderson tarafından önerilen 5 dakika bekledikten sonra yeni bir örneğe ssh mümkün değil.

Makineyi yok etmek ve yeniden yaratmak zorunda kaldım. Bu iki ayrı olayda gerçekleşti. Başlangıçta giremediğim için neyin yanlış olduğunu göremiyorum.

Yani, bu sorunla karşılaşırsanız, deneyin.


1

bu birkaç şeyi kontrol etmelisiniz:

  1. IP adresinizin doğru olduğundan emin olun
  2. Doğru Anahtarı kullandığınızdan emin olun
  3. Doğru kullanıcı adını kullandığınızdan emin olun, deneyebilirsiniz: 3.1. yönetim 3.2. ec2 kullanıcısı 3.3. ubuntu

Aynı sorunu yaşadım ve kullanıcı adını ubuntu olarak değiştirdikten sonra çözüldü. AWS belgelerinde kullanıcı ec2 kullanıcısına bahsedildi, ancak bir şekilde benim için çalışmıyor.


1

Özel anahtarım izin olarak ayarlandı 400ve İzin'in '644' olarak ayarlanmasının bana yardımcı olmasına neden oldu.

key_load_private_type: İzin reddedildiğim belirli bir hata

Çözüm: Sudo chmod 644 <key.pem>

Not: 644'e ayarlanmalıdır, 400 ile çalışmıyordu


1

Yapmaya çalıştığınızda

ssh -i <.pem path> root@ec2-public-dns

Kullanmanızı öneren bir mesaj alırsınız ec2-user.

Please login as the user "ec2-user" rather than the user "root".

Öyleyse kullan

ssh -i <.pem path> ec2-user@ec2-public-dns


1

Aynı problemim vardı ve çok garip. Bunu yapmaktan daha iyisini yaptığınıza inanıyorsanız: EC2 örneği için bazen kullanıcı hakkında karışıklık var !! Bazı zamanlarda ec2-kullanıcı, ubuntu, centos vb olsun. Yani machie için kullanıcı adınızı kontrol edin !!

Kök kullanıcı ile giriş yapın ssh -i yourkey.pem (400 permission) root@<ip> Hata verir ve size mevcut kullanıcı adını verir . o kullanıcı ile giriş yapın.


1

Bu temel bir şeydir, ancak her zaman giriş yapmayı denediğiniz kullanıcıyı doğrulayın. Benim durumum sadece dikkat dağıtıcıydı . Bir kök kullanıcı kullanmaya çalışıyordum :

ssh -i ~/keys/<key_name> root@111.111.111.111

Ancak başka bir kullanıcıydı :

ssh -i ~/keys/<key_name> dedeco@111.111.111.111

1

aynı hatayla karşılaştım ama farklı bir durum vardı. benim için o uzak bilgisayarma başarıyla ssh olabilir çok zaman sonra mavi dışında oldu. benim sorunum çözüm arama bir sürü sonra dosya izinleri vardı. Tabii garip çünkü bilgisayarımda veya ssh'ın dosyalarına / dizinlerine ait uzaktaki izinleri değiştirmedim. iyi archlinux wiki burada:

Yerel makine için bunu yapın:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ecdsa

Uzak makine için şunları yapın:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

Bundan sonra benim ssh izin reddedildi (publickey) şey olmadan tekrar çalışmaya başladı.


0

Olası Başka Bir Sorun: Yanlış giriş kimliği

'Kullanım Talimatlarını' kontrol edin

Yukarıdaki tüm iyi öneriler, ancak karşılaştığım şey önceden yapılmış bir örnek seçmemdi. Örnek başladıktan sonra kullanım talimatlarına bakın. Talimatlarda 'bitnami' kullanmam gerektiğinde özel anahtarın giriş kimliğini yanlış kullandım (örn. Bitnami @ domain -i key.pem)


0

Benzer bir hatayla karşılaştım

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: xxxx.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Benim sorunum örneği nedeniyle gelen çalışma-on-start-up senaryo üzerinde hata düzgün başlamadı oldu Step 3: Configure instance detailunderAdvanced details:

Girdiğimi düşündüm:

#include
 https://xxxx/bootstrap.sh


Girilenler örnek kurulumunu bozar

#include

https://xxxx/bootstrap.sh

Dolayısıyla, örnek tarafındaki ortak anahtar oluşturulmadı


0

Büyük / küçük harfe duyarlıdır.

Yanlış: SSH EC2 kullanıcısı @ XXX.XX.XX.XX -i MyEC2KeyPair.pem

Doğru: SSH ec2 kullanıcısı @ XXX.XX.XX.XX -i MyEC2KeyPair.pem


-1

Bir makineden SSH yapabildim, ama başka bir makineden değil. Yanlış özel anahtar kullandığım anlaşılıyor.

Bunu anlamanın yolu, ortak anahtarı özel anahtarımdan şu şekilde almaktı:

ssh-keygen -y -f ./myprivatekey.pem

~/.ssh/authorized_keysOrtaya çıkan şey EC2 örneğindekilerle uyuşmuyor .


-1

Yukarıdaki en üst sıradaki cevapların hepsi doğrudur ve çoğu durumda çalışmalıdır. Benim durumumda olmadıkları takdirde, ~/.ssh/known_hostsssh çalıştığım makinedeki dosyamdan kurtuldum ve bu benim için sorunu çözdü. Daha sonra bağlanabildim.


Silerken known_hosts(yine kötü bir yaklaşım iken) kendi ev sahibi anahtarı değişti sunucuya bağlanırken bir sorunu çözebilir, ben çok emin çözemez değilim "İzin (publickey) engellendi" hatası.
Martin Prikryl
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.