Amazon Ec2 örneğine SSH denemeye çalışılıyor - izin hatası


745

Bu muhtemelen bazılarına aptalca basit bir soru :)

Amazon EC2'de yeni bir linux örneği oluşturdum ve bunun bir parçası olarak SSH'ye izin vermem için .pem dosyasını indirdim.

Ben ssh ile çalıştığımda:

ssh -i myfile.pem <public dns>

Bende var:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

Bu yazıyı takiben pem dosyasını +600 chmod yapmaya çalıştım, ama şimdi ssh aldığımda sadece şunu elde ediyorum:

Permission denied (publickey).

Burada hangi okul çocuğu hatasını yapıyorum? .Pem dosyası ana klasörümde (osx'ta). İzinleri şöyle görünür:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem

2
Bu hata, yanlış pem dosyası kullandığınızda da gelir.
Rahul Prasad

Ayrıca, anahtar çiftini kullanılacak anahtar anahtarını oluşturduktan ve seçtikten SONRA oluşturduğunuzdan emin olun. Bunu tam tersine yaptım.
Gary

WinSCP ile Windows'dayım. Orada ilgisi ile chmod 400 myfile.pemonu kullanır olarak myfile.ppkpem dosyadan PuTTYgen tarafından oluşturulan.
Chetabahana

Bu hata, doğru kullanıcı ile giriş yapmadığınızda da olabilir;)
andrea06590

Yanıtlar:


1461

Sorun dosyada yanlış mod yaşıyor.

Yürüterek kolayca çözülebilir -

chmod 400 mykey.pem

Amazon'un talimatlarından alınmıştır -

SSH'nin çalışması için anahtar dosyanız herkes tarafından görüntülenemez olmalıdır. Gerekirse bu komutu kullanın: chmod 400 mykey.pem

400 onu sadece sahibi için sadece okuyarak korur.


3
Çok teşekkürler! Chmod 400 ne yapıyor? mykey.pem adresine?
Costa

19
400 onu sadece sahibi için sadece okuyarak korur.
Kof

1
Bundan sonra ssh -l USERNAME_HERE -i .ssh / yourkey.pem public-ec2-host yaptığımda "Uyarı: blabla.pem kimlik dosyası erişilebilir değil: Böyle bir dosya veya dizin yok" alıyorum.
coolcool1994

3
Bu komut + ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IPsorunu çözdü. Belki de bu kabul edilen cevap olmalıdır ...
c4k

1
Aynı şeyi Windows için nasıl çalıştırabilirim?
Ahsan Mukhtar

262

Giriş yapmak için büyük olasılıkla yanlış kullanıcı adı kullanıyorsunuz:

  • çoğu Ubuntu resminin bir kullanıcısı var ubuntu
  • Amazon'un AMI'si ec2-user
  • En Debian görüntüleri var ya rootveyaadmin

Giriş yapmak için ssh komutunuzu ayarlamanız gerekir:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

HTH


30
veya ssh -i key.pem ubuntu @ sunucuadı
jsh

43
Hata iletisi her şeyi söylüyor: .pem cert dosyası yeterince korunmuyor. Chmod 400 xyz.pem'i aşağıda önerildiği gibi yapın.
allprog

1
@ allprog benim için bu sadece söylemek Permission denied (publickey).ve başka bir şey neden olur ...
Aram Kocharyan

1
Sorunu buldum
Örneği

12
Bu çözüm değildir - indirilen anahtar dosyasındaki dosya izinleri varsayılan olarak 844'tür. 400 chmod 500 <path_to_pem_file>olmalı, yapmalı.
Elad Meidar

62

Bunun oyuna çok geç olduğunu biliyorum ... ama bu her zaman benim için çalışıyor:

Aşama 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

adım 2, sadece ssh in :)

ssh user_name@<instance public dns/ip>

Örneğin

ssh ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

umarım bu birisine yardım eder.


ssh-add "* .pem dosyasını ~ / .ssh klasörüne kopyalamakla aynıdır?
ス レ ッ ク

1
>> sadece * .pem dosyasını ~ / .ssh klasörüne kopyalamak aynı değildir, klasöre eklemeniz ve ssh-add komutunu çalıştırmanız gerekir.
super_p

Oyuna çok geç, ama biraz açıklama eklemek için ... 1. ~ / .ssh dizinine .pem dosyasını ekleyin (gerekirse oluşturun), 2. kimlik doğrulamasına kimlik eklemek için ssh-add komutunu kullanın madde; Bu, ssh kullanırken asla .pem dosyasını belirtmek zorunda kalmayacağınız anlamına gelir
Ian Atkin

2
Ssh-add sonra ¬ / .ssh / key.pem; Hata alma Kimlik doğrulama aracınızla bağlantı açılamadı. değerlendirme ssh-agent -sraporları SSH_AGENT_PID = 3409; ssh-add yukarıdaki ile aynı hatayı veriyor ......... Burada herhangi bir yardım plz
Tariq

Vay canına bu benim VPS benim gelecekteki tüm bağlantılar için çok uygun olurdu. Teşekkürler dostum :)
Ahmad Mushtaq

36

Tamam dostum, benim için çalışan tek şey:

  1. Anahtarın izinlerini değiştirme

    chmod 400 mykey.pem

  2. Ec2 kullanıcısı ve doğru ec2-99 ... adresini kullanarak giriş yaptığınızdan emin olun . Ec2-99 adresi, oturum açtığınızda ve örneğinizin listelendiğini gördüğünüzde aws konsolunun altındadır

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com


Ec2-99 adresini bulamıyorum. Lütfen bana yardım edebilir misin?
Adil Malik

1
chmod 400 mykey.pem ubuntu ile giriş aşağıdaki gibi: ssh -i mykey.pem ubuntu@SERVER.amazonaws.com
Gal Bracha

27

Bu makaleye bir göz atın . Genel DNS'yi değil, formu kullanıyorsunuz

ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com

AMI panelinizde adın göründüğü yer


Makale için alkış, çok yararlı!
Matt Roberts

küçük gelişme: root aws olarak giriş yapmaya çalışırken aşağıdakileri ister: "Lütfen root kullanıcısı değil ec2 kullanıcısı olarak giriş yapın."
Andre Schweighofer

ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com'un nasıl olduğunu nasıl öğrenebilirim?
ス レ ッ ク

Yönetim konsolu> EC2> Örnekler'i seçin ve örneğinizi seçin.
renick

'Root @' bu cevapta herkesin eksik olduğu şeydir. Senin yardım etti! Bu ve chmod.
lordB8r


13

Pencerelerde pem dosyasının özelliklerine gidebilir ve güvenlik sekmesine gidebilir, ardından ilerlemek için düğmeye basabilirsiniz.

kalıtım ve tüm izinleri kaldırın. sonra kendinize tam kontrol verin. Sonuçta, SSL size aynı hatayı tekrar vermeyecektir.


7

Bu sorunun zaten cevaplandığını biliyorum ama hepsini deneyenler için ve hala can sıkıcı "İzin reddedildi (publickey)" alıyorsunuz. Komutunuzu SUDO ile çalıştırmayı deneyin. Tabii ki bu geçici bir çözümdür ve izinleri doğru bir şekilde ayarlamanız gerekir, ancak en azından mevcut kullanıcınızın ihtiyacınız olan ayrıcalıklarla çalışmadığını (varsaydığınız gibi) tanımlamanıza izin verecektir.

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

Bunu yaptıktan sonra böyle bir mesaj alacaksınız:

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

Bu da nadiren belgelenmiştir. Bu durumda sadece şunu yapın:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

Ve görkemli olacaksınız:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

2
Teşekkürler .. Yukarıda belirtilen tüm seçenekleri denedikten sonra hala hata alıyordum. Sudo ile ssh koşmak benim için çalıştı.
Gursharan Singh

Bunu neden sudo'da çalıştırmam gerektiğini bilmek istiyorum. Ben chmod 400 xyz.pem denedim, ama yardımcı olmadı.
Samuel Dominguez

6

Mac terminalinde "chmod 400 xyz.pem" yapmak bana yardımcı olmadı, izninin reddedildiğini söyledi. Ubuntu kullanıcıları için önerebilirim

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem ubuntu@ec2-54-69-172-118.us-west-2.compute.amazonaws.com (kullanıcının ubuntu olduğuna dikkat edin)

4

SSH anahtarları ve dosya izni en iyi uygulamaları:

  • .ssh dizini - 0700 (yalnızca sahip tarafından)
  • özel anahtar / .pem dosyası - 0400 (yalnızca sahibi tarafından okunur)
  • genel anahtar / .pub dosyası - 0600 (yalnızca sahibi tarafından okunur ve yazılır)

    chmod XXXX file/directory


3

ssh -i /.pem kullanıcısı @ host-machine-IP

Sanırım bunun nedeni ya yanlış kimlik bilgileri girmiş olmanız ya da özel anahtar yerine ortak bir anahtar kullanmanız ya da bağlantı noktası izinlerinizin ALL'dan ssh'a açık olmasıdır. Bu Amazon için kötü.


3

PuTTY kullanarak alternatif giriş. İyi ama birkaç adım gerekiyor.

  1. EC2 örneğini ilk oluşturduğunuzda oluşturulan .pem'nizi alın.
  2. PuTTY .pem okumadığından, .pem dosyasını .ppk'yi PuttyGen kullanarak dönüştürün .
  3. PuTTY'yi açın ve örnek kullanıcı adınız + Genel DNS olan Ana Bilgisayar Adınızı girin (Örn. Ubuntu@ec2-xxx-xxx-xxx-xxx.region.compute.amazonaws.com). AWS hesabı kullanıcı adınız değil.
  4. Ardından Bağlantı> SSH> Kimlik Doğrulama'ya gidin . Ardından .ppk dosyanızı ekleyin . "Kimlik doğrulama için özel anahtar dosyası" yazan yere gözat'ı tıklayın .
  5. Aç'ı tıkladığınızda hemen bağlantı kurabilmeniz gerekir.

Windows'da PuTTY 0.66 kullanıyorum.


Bu çalışır, ancak ssh bağlantısını doğrudan komut satırından çalıştırmanın bir yolu var mı?
Ariel

3

Diğer cevaplara ek olarak, bunun çalışması için yaptığım şey:

  • Hala yapmadıysanız, anahtarı .ssh klasörüne kopyalayın:

cp key.pem ~/.ssh/key.pem

  • Anahtara uygun izinleri verin

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Ardından, anahtarı ekleyin

ssh-add ~/.ssh/key.pem

Şimdi ssh EC2 (:


2

Chmod 400 yourkeyfile.pem yapın Örneğiniz Amazon linux ise ubuntu için ssh -i yourkeyfile.pem ec2-user @ ip kullanın ssh -i yourkeyfile.pem ubuntu @ ip için centos ssh-i yourkeyfile.pem centos @ ip


2

Bu hatanın arkasında üç neden olabilir.

  1. Yanlış bir anahtar kullanıyorsunuz.
  2. Anahtarınız doğru izinlere sahip değil. 400'e ayarlamanız gerekiyor.
  3. Yanlış kullanıcıyı kullanıyorsunuz. Ubuntu görüntülerinin bir kullanıcı ubuntu , Amazon'un AMI ec2 kullanıcısı ve debian görüntülerinin kök veya yönetici var

2

Sorun benim .pem dosyamın NTFS bölümlerimden birinde olmasıydı. Linux bölümüme (ext4) taşıdım.

Çalıştırarak gerekli izinleri verin:

chmod 400 my_file.pem

Ve işe yaradı.


2

Gönderim açıklamanıza baktığınızda, sizin tarafınızdan yapılmış 2 hata olduğunu hissediyorum: -

  1. Özel anahtar için doğru izinleri ayarlayın . Aşağıdaki komut, doğru dosya iznini ayarlamanıza yardımcı olacaktır.

    chmod 0600 mykey.pem

  2. Giriş yapmaya çalıştığınız yanlış ec2 kullanıcısı .

    Hata ayıklama günlüğünüze bakarak bir Amazon linux örneği oluşturduğunuzu düşünüyorum. Bu örnek türü için varsayılan kullanıcı ec2-user. Örnek ubuntu olsaydı, varsayılan kullanıcınız olurdu ubuntu.

    ssh -i privatekey.pem default_ssh_user@server_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

kaynak: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html


1

Kontrol Listesi:

  1. Doğru özel anahtar .pem dosyasını mı kullanıyorsunuz?

  2. İzinleri doğru ayarlanmış mı? (Amazon markalı AMI'lerim 644 ile çalışıyor, ancak Kırmızı şapka en az 600 veya 400 olmalı. Ubuntu hakkında bilmiyorum.)

  3. SSH hattınızda doğru kullanıcı adını mı kullanıyorsunuz? Amazon markalı = "ec2 kullanıcısı", Red Hat = "kök", Ubuntu = "ubuntu". Kullanıcı "ssh -i pem usename @ hostname" VEYA "ssh -l username -i pem hostname" olarak belirtilebilir.


1

Sadece izin verilen kullanıcı için izin pem dosyasının iznini 0600 olarak değiştirin ve çekicilik gibi çalışacaktır.

sudo chmod 0600 myfile.pem

Ve sonra ssh deneyin mükemmel çalışacaktır.

ssh -i myfile.pem <<ssh_user>>@<<server>>

1

BY tarafından varsayılan izin pem anahtarına izin vermiyor. İzni değiştirmeniz yeterlidir:

chmod 400 xyz.pem

ve ubuntu örneği varsa şunu kullanarak bağlanın:

ssh -i xyz.pem ubuntu@ec2-youraws.amazonaws.com


1

Anahtar dosyası herkes tarafından görüntülenememelidir, bu nedenle izin 400'ü kullanın

chmod 400 keyfile.pem

Yukarıdaki komut izin hatası kullanımını gösteriyorsa

sudo chmod 400 keyfile.pem

Şimdi ec2 makinesine ssh, hala sorunla karşı karşıyaysanız, ec2 kullanıcısı kullanın

ssh -i keyfile.pem ec2-user@ec2-12-34-56-78.compute-1.amazonaws.com


1

.400 sadece sahibi için sadece okuyarak korur.
Cevabı ASW kılavuzundan bulabilirsiniz.

chmod 400 yourPrivateKey.pem

resim açıklamasını buraya girin


0

Linux kullanıcısının .pem dosyasını kullanarak sunucuya bağlanması için basit adımlar şunlardır:

Adım 1: pem dosyasının konumuna ve ana .ssh konumuna kopyalayın.

cp example.pem ~/.ssh/example.pem

2. Adım: İzni değiştirme

chmod 400 ~/.ssh/example.pem

Adım3: Aşağıdaki komutu çalıştırın

ssh -i ~/.ssh/example.pem ec2-user@host.com

Bu komut çok uzun olduğundan, aşağıdaki komutları kullanarak bunun diğer adını oluşturabilirsiniz:

 vim ~/.bashrc

Sonunda aynı komutu aşağıdaki şekilde yazın.

alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'

Şimdi sisteminizi yeniden başlatın ve sshConnectsunucunuza bağlanmak için kullanın .


0

Sadece aws pem anahtarınızla ilgili bir izin sorunudur.

Aşağıdaki komutu kullanarak pem anahtarının iznini 400 olarak değiştirin.

chmod 400 pemkeyname.pem

Bir dosyanın iznini değiştirme izniniz yoksa sudo aşağıdaki komutu kullanabilirsiniz.

sudo chmod 400 pemkeyname.pem

Umarım bu iyi çalışır.


0

Bu sorunun arkasında iki neden gördüm

1) erişim anahtarı doğru izne sahip değil. varsayılan izinli pem anahtarlarının güvenli bağlantı kurmasına izin verilmez. İzni değiştirmeniz yeterlidir:

chmod 400 xyz.pem

2) Ayrıca uygun kullanıcı kimlik bilgileriyle oturum açıp açmadığınızı da kontrol edin. Aksi takdirde, bağlarken sudo kullanın

sudo ssh -i {keyfile} ec2-user @ {uzak ana bilgisayarın ip adresi}


0

SSH'nin çalışması için anahtarınızın herkes tarafından görüntülenebilir olmaması gerekir. Gerekirse bu komutu kullanın:

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

Misal:

ssh -i "Interview-apps.pem" ec2-user@ec2-**-***-***-***.us-west-2.compute.amazonaws.com

0

Lütfen bu cevabı sizin için alakasızsa görmezden gelin, ancak deneyimlerime göre, insanların bir sorun yaşadığını gördüm Permission denied (publickey)çünkü ilk anahtarı olmadan genel anahtarlarını (bir hedef makineye) yapıştırdılar !

Bu , anahtarı düzenlemek (yapıştırmak) için vim kullanırken olur . Yana vim varsayılan olarak açılır komut modu (değil bir in ekleme modunda bir geçiş yapmadan anahtarı yapıştırarak,) ekleme modunda (yani i) ilk atlama neden olacaktır syerine örneğin mektup

ssh-rsa <key>

sonunda yapıştıracaksın

sh-rsa <key>

Diğer çözümleri denemeden önce , anahtarınızı doğru bir şekilde yapıştırıp yapıştırdığınızı görün ! yani

cat ~/.ssh/id_rsa.pub

Sadece eminseniz, sonraki adımları uygulayın; ayrıntılı modda (yani bayrak -v) ssh yapmaya çalışmak sizi asıl konuya yönlendirebilir:

ssh -v -i <private_key> <name>@<ip> -p <port>

Yan not olarak, burada başkaları tarafından daha önce de belirtildiği gibi, çoğu durumda boş bir ssh aracısı (anahtarlarınızı bellekte tutan program) başlatmak ve anahtarınızı eklemek sorunu çözmelidir:

ssh-agent bash
ssh-add <private_key>

-1

Bunu benim için düzelten, .pem dosyasını uygulamalar dizinine taşımaktı. Soo, fooapp uygulamamın adı diyor. Doğrudan oraya yerleştirdim.


-2

Bazen klasörde bir hata olabilir. Sebebini bilmiyorum...

Klasörü değiştirip tekrar deneyebilirsiniz. Örneğin, normal (Masaüstü, İndirilenler vb.) Klasörlerde deneme yapabilirsiniz.

Bu yöntemi denedim ve çalıştım


-2

Bu hata sadece izin nedeniyle.

Sadece izin ver 400

#chmod 400 Instagram Hesabındaki Resim ve Videoları pemfilepath


izin çok açık. kötü!!
19'da
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.