AWS ssh erişimi 'İzin reddedildi (publickey)' sorunu [kapalı]


284

AWS örneğine ssh ile nasıl bağlanır?

Sahibim:

  1. AWS'ye kaydoldunuz;
  2. AWS web sitesinde bir ortak anahtar ve bir sertifika oluşturdu ve bunları diske kaydetti;
  3. Konsoluma ve oluşturulan ortam değişkenlerine gittim:

    $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    
  4. Bu anahtar çiftini kullanmak için AWS API'sini söyledi ve anahtar çiftini dosyaya kaydetti:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. Bu anahtar çiftini kullanarak bir AWS Ubuntu 9 örneği başlattı:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. Örneğe bir ssh bağlantısı kurulmaya çalışıldı:

    $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
    OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
    debug1: Connection established.
    debug1: identity file ec2-keypair.pem type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
    debug1: Found key in /home/default/.ssh/known_hosts:11
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair.pem
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    Sorun ne olabilir ve nasıl işe yarayabilir?


2
Ironic, kullanıcı adı olarak "root" kullanıyorum ama "ubuntu" (bahsettiğiniz şey) AMI'm için doğru isim ve mesajınız için teşekkür ederim!
realjin

Yanıtlar:


512

Ubuntu örnekleri için:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

Diğer durumlarda, ec2-userbunun yerineubuntu .

Kullandığım çoğu EC2 Linux görüntüsü yalnızca varsayılan olarak kök kullanıcı oluşturuyor.

Ayrıca bkz: http://www.youtube.com/watch?v=WBro0TEAd7g


6
Harikasın! Çok basit!
Alex

50
Ssh-add ec2-keypair.pem komutunu da kullanabilirsiniz, böylece -i seçeneğini bırakabilirsiniz
AdamK

12
root'u denerseniz ve "Lütfen root kullanıcısı değil ec2 kullanıcısı olarak giriş yapın" ifadesini alırsanız, root yerine ec2 kullanıcısı kullanın .
Tony

8
Ve bazı Ubuntu görüntüleri sadece "ubuntu" kullanıcısına sahip gibi görünüyor. (Hangi kökten sudo olabilir.)
Prof. Falken sözleşmesi

1
Süper, süper kullanışlı.
NSCoder

93

Şimdi o:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]

Teşekkürler. Bunu bulmak beni yaşlandırdı - konsoldan bağlantı bilgilerinde bahsedilmedi! Kök kullanmaya çalıştığınızda size söyler, ancak ec2 kullanıcısının kullanıcı adımla ilgili bir referans olduğunu düşündüm. Doh!
Adrian Mouat

1
Ah adamım. Bulması kolay bir şey değil. Teşekkürler!
vroomfondel

teşekkürler, kolay değil ti bunu bulmak

Çok iyi! Teşekkür ederim!
viana

46

Canonical'in sürümleri, aynı sorunla ortaya çıkan ubuntu görüntüsü ile buraya inen herkes için varsayılan olarak 'ubuntu' kullanıcısını kullanır.


2
Bunu bulmak kolay değil.
Gustav

17

Bir Bitnami görüntüsü kullanıyorsanız, 'bitnami' olarak giriş yapın.

Açık görünüyor, ama göz ardı ettiğim bir şey.


Cevabınız günümü kurtardı!
Surya

2
Demek istediğin? Seems <sarcasm>obvious</sarcasm>
Bob Stein

Veritabanı parolalarını bulma da dahil olmak üzere Bitnami talimatları .
Bob Stein

8

Benim ubuntu görüntüler için, aslında ubuntu kullanıcı ve ec2 kullanıcı değil;)



5

Ayrıca pem dosyası izinlerinin çok açık olup olmadığından da şikayet edecektir. Bunu düzeltmek için dosyayı 600'e kopyalayın.


Bu ipucu için teşekkürler - bana çok yardımcı oldu
Billy Moon

4
chmod 600 your_file.pem
Acemiler

5

Ben de bu çalışıyordum - topluluk tarafından oluşturulan bir AMI kullanıyordum - ve varsayılan kullanıcı adı niehter kökü, ne de ect-user veya ubuntu. Aslında, ne olduğu hakkında hiçbir fikrim yoktu - ' root ' denene kadar ve sunucu bana xxx olarak giriş yapmamı istedi , burada xxx size ne söylerse söyler.

Şerefe!


4

Yerel makinenizde özel anahtarınızın olması gerekir

Uzak makinenizin veya sunucunuzun IP adresini veya DNS adını bilmeniz gerekir, bunu AWS konsolundan alabilirsiniz

Linux kullanıcısıysanız

  • Özel anahtardaki izinlerin 600 ( chmod 600 <path to private key file>) olduğundan emin olun
  • Ssh ( ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>) kullanarak makinenize bağlanın

Windows kullanıcısıysanız


Chmod 400 <pem key> kullanarak dosyanın iznini değiştirin
Vaibhav Jain

3

kullanmak ...

# chmod 400 ec2-keypair.pem

600 iznini kullanmayın, aksi takdirde yanlışlıkla anahtarınızın üzerine yazabilirsiniz.


2

bu benim için çalıştı:

ssh-keygen -R <server_IP>

iş istasyonunda depolanan eski anahtarları silmek yerine

sonra aynı ssh'ı tekrar çalıştı:

ssh -v -i <your_pem_file> ubuntu@<server_IP>

ubuntu örneklerinde kullanıcı adı: Amazon Linux AMI üzerinde ubuntu kullanıcı adı: ec2-user

Örneği bir görüntüden yeniden oluşturmak zorunda kalmadım.



2

Bağlanmak için 2 adım vardır:

Chmod 400 özel anahtarınızda, bunun gibi diğerleri anahtarınıza erişemez:

chmod 400 toto.pem

SSH'deki örneğinize bağlanmak için, örneğinizin genel IP adresini bilmeniz gerekir:

ssh -i toto.pem ec2-user@XX.XX.XX.XXX

Umarım yardımcı olur !


1

EBS kullanıyorsanız, EBS Birimi'ni çalışan bir örneğe de bağlamayı deneyebilirsiniz. Ardından bu çalışan örneğe monte edin ve evde / evde neler olduğunu görün. Kullanıcı ubuntu veya ec2 kullanıcısı gibi şeyleri görebilirsiniz? veya ~ / .ssh / yetkili_anahtarlar altında doğru ortak anahtarlara sahip mi?


1

İzni ec2-keypair.pemolmalıdır400

chmod 400 ec2-keypair.pem


1

Bitnami'den AWS görüntüsü çalıştırıyorsanız. Kullanıcı adı bitnami olur. Şerefe!

benim hata ayıklama görmek ve sonuncusu bakmak:

*

ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".

*


1

Benim durumumda (Mac OS X), sorun dosyanın kopma tipiydi. Bunu dene:

1. - .pem dosyasını TextWrangler ile açın

2.- Uygulamanın altında, Kesme Tipinin "Windows (CRLF)" olduğunu doğrulayın.


1

Amazon Linux AMI'ları için ec2 kullanıcısı ve Ubuntu görüntüleri için ubuntu. Ayrıca, RHEL 6.4 ve üstü ec2 kullanıcısı RHEL 6.3 ve önceki kök Fedora ec2 kullanıcısı Centos kökü


0

Sadece bu listeye ekliyorum. Bu sabah AWS EC2 örneğine eklenen yeni bir kullanıcıyla sorun yaşıyordum. Sadede için sorun oldu selinux oldu ( zorlama benim kullanıcı ana dir yeni EBS ekli hacmine olduğu gerçeği ile birlikte, mod). Bir şekilde sanırım selinux diğer ciltlerden hoşlanmıyor. Tüm diğer ssh sorunları (/ etc / ssh / sshd_config iyiydi, elbette şifre izin yok, izinler doğru, vb.) Baktı gibi anlamak için bir süre aldı.

Çözüm?

Şimdilik (bir kullanıcının farklı bir birime ssh vermesine izin verene kadar veya bir şekilde bu birimi iyi niyetli bir ev yön noktası haline getirene kadar):

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

Bu kadar. Şimdi yeni kullanıcım kendi id_rsa anahtarını kullanarak giriş yapabilir.


0

Aynı sorun vardı. 'Ec2-user' veya 'root' ile giriş yapmaya çalışırken izin reddedildi (publickey).

Makine görüntüsünün AMI numarasını aradı ve Debian wiki sayfasında SSH giriş bilgilerine sahipti.

Bu yardımcı olur umarım.

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.