AWS ssh akses 'Izin ditolak (publickey)' masalah [ditutup]

284

Bagaimana menghubungkan ke instance AWS melalui ssh?

Saya sudah:

  1. Mendaftar di AWS;
  2. Membuat kunci publik dan sertifikat di situs web AWS dan menyimpannya ke disk;
  3. Pergi ke konsol saya dan membuat variabel lingkungan:

    $ 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. Beri tahu AWS API untuk menggunakan keypair ini dan menyimpan keypair ke file:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. Memulai instance AWS Ubuntu 9 menggunakan keypair ini:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. Mencoba membuat koneksi ssh ke instance:

    $ ssh -v -i ec2-keypair.pem [email protected]
    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).
    

    Apa yang bisa menjadi masalah dan bagaimana membuatnya bekerja?

Alex
sumber
2
Ironisnya saya menggunakan "root" sebagai nama pengguna tetapi "ubuntu" (apa yang Anda sebutkan) adalah nama yang tepat untuk AMI saya, dan terima kasih atas kiriman Anda!
realjin

Jawaban:

512

Untuk instance Ubuntu:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem [email protected]

Untuk contoh lain, Anda mungkin harus menggunakan ec2-userbukan ubuntu.

Sebagian besar gambar Linux EC2 yang saya gunakan hanya memiliki pengguna root dibuat secara default.

Lihat juga: http://www.youtube.com/watch?v=WBro0TEAd7g

sipwiz
sumber
6
Kamu keren! Sangat sederhana!
Alex
50
Anda juga dapat menggunakan ssh-add ec2-keypair.pem sehingga Anda dapat menjatuhkan opsi -i
AdamK
12
jika Anda mencoba root dan Anda mendapatkan "Silakan masuk sebagai pengguna pengguna ec2 daripada pengguna root. '" gunakan pengguna ec2 sebagai pengganti root.
Tony
8
Dan beberapa gambar Ubuntu tampaknya hanya memiliki pengguna "ubuntu". (Yang bisa di-sudo untuk di-root.)
Kontrak Prof. Falken dilanggar
1
Super, sangat berguna.
NSCoder
93

Sekarang ini:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]
SSH
sumber
Terima kasih. Butuh waktu lama bagi saya untuk mengetahui hal ini - tidak disebutkan dalam info koneksi dari konsol! Itu memberi tahu Anda ketika Anda mencoba menggunakan root, tapi saya pikir pengguna ec2 adalah referensi ke nama pengguna saya. Doh!
Adrian Mouat
1
Oh man. Bukan berita gembira yang mudah ditemukan. Terima kasih!
vroomfondel
terima kasih, tidak mudah untuk menemukan yang satu ini
Baik sekali! Terima kasih!
viana
46

Rilis Canonical menggunakan 'ubuntu' pengguna secara default untuk siapa saja yang mendarat di sini dengan gambar ubuntu yang muncul dengan masalah yang sama.

bryon
sumber
2
Tidak mudah untuk menemukan ini.
Gustav
17

Jika Anda menggunakan gambar Bitnami, masuk sebagai 'bitnami'.

Tampak jelas, tetapi sesuatu yang saya abaikan.

akim
sumber
Jawaban Anda menyelamatkan hari saya!
Surya
2
Apakah yang kamu maksud? Seems <sarcasm>obvious</sarcasm>
Bob Stein
Instruksi Bitnami , termasuk cara menemukan kata sandi basis data.
Bob Stein
8

Untuk gambar ubuntu saya, sebenarnya itu adalah pengguna ubuntu dan BUKAN pengguna ec2;)

Dean Hiller
sumber
5

Ubuntu 10,04 dengan openSSH

ini adalah penggunaan yang tepat:

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

sebagai contoh:

ssh -v -i GSG_Keypair.pem [email protected]

contoh di atas diambil langsung dari tutorial AWS untuk menghubungkan ke mesin Linux / UNIX di: http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/

carl crott
sumber
Dengan ssh-i switch kita dapat menggunakan file .pem saja.
ABHAY JOHRI
5

Ini juga akan mengeluh jika izin file pem terlalu terbuka. chmod file ke 600 untuk memperbaikinya.

Allan Bogh
sumber
Terima kasih atas tip ini - banyak membantu saya
Billy Moon
4
Untuk pemula .. perintah untuk melakukan ini adalah:chmod 600 your_file.pem
dano
5

Saya juga mengalami ini - ternyata saya menggunakan AMI yang dibuat komunitas - dan nama pengguna default adalah niehter root, juga bukan ect-user atau ubuntu. Bahkan, saya tidak tahu apa itu - sampai saya mencoba ' root ' dan server dengan ramah meminta saya untuk masuk sebagai xxx di mana xxx adalah apa pun yang dikatakannya kepada Anda.

-Bersulang!

kevinfoundananwwer
sumber
4

Anda perlu memiliki kunci pribadi di mesin lokal Anda

Anda perlu mengetahui alamat IP atau nama DNS mesin atau server jarak jauh Anda, Anda bisa mendapatkannya dari konsol AWS

Jika Anda pengguna linux

  • Pastikan izin pada kunci pribadi 600 ( chmod 600 <path to private key file>)
  • Hubungkan ke mesin Anda menggunakan ssh ( ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)

Jika Anda pengguna windows

Vineeth Guna
sumber
Mengubah izin dari file menggunakan chmod 400 <key pem>
Vaibhav Jain
3

menggunakan...

# chmod 400 ec2-keypair.pem

jangan gunakan izin 600 jika tidak, Anda mungkin menimpa kunci Anda secara tidak sengaja.

x1b2j
sumber
2

ini bekerja untuk saya:

ssh-keygen -R <server_IP>

untuk menghapus kunci lama yang tersimpan di workstation juga berfungsi dengan bukan

kemudian melakukan ssh yang sama lagi itu berhasil:

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

pada contoh-contoh ubuntu, nama penggunanya adalah: ubuntu di Amazon Linux

Saya tidak perlu membuat ulang instance dari gambar.

Cris
sumber
2

Untuk instance Debian EC2, pengguna adalah admin.

Alastair Irvine
sumber
2

Ada 2 langkah yang harus dihubungkan:

Chmod 400 pada kunci pribadi Anda, seperti ini yang lain tidak dapat mengakses ke kunci Anda:

chmod 400 toto.pem

Untuk terhubung ke instance Anda di SSH, Anda perlu mengetahui alamat IP publik dari instance Anda:

ssh -i toto.pem [email protected]

Semoga ini bisa membantu!

GuillaumeAgis
sumber
1

Jika Anda menggunakan EBS, Anda juga dapat mencoba memasang Volume EBS pada instance yang sedang berjalan. Kemudian pasang pada instance yang berjalan dan lihat apa yang terjadi di / home. Anda dapat melihat hal-hal seperti apakah pengguna ubuntu atau pengguna ec2? atau apakah itu memiliki kunci publik yang tepat di bawah ~ / .ssh / otor_keys

Rico
sumber
1

Izin untuk ec2-keypair.pem seharusnya400

chmod 400 ec2-keypair.pem

Yogi
sumber
1

Jika Anda menjalankan gambar AWS dari Bitnami. Nama pengguna akan bitnami. Bersulang!

lihat debug saya dan lihat yang terakhir:

*

ssh -v -i awsliferaysrta.pem.txt [email protected].***
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 [email protected]
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".

*

Hung Do
sumber
1

Dalam kasus saya (Mac OS X), masalahnya adalah jenis istirahat file. Coba ini:

1.- Buka file .pem dengan TextWrangler

2.- Di bagian bawah aplikasi, verifikasi apakah Tipe Pemutus adalah "Windows (CRLF)".

pmartinezd
sumber
1

Pengguna ec2 untuk Amazon Linux AMI dan ubuntu untuk gambar Ubuntu. Juga, RHEL 6.4 dan yang lebih baru ec2-user RHEL 6.3 dan root sebelumnya Fedora ec2-user Centos root

Amith Ajith
sumber
0

Tambahkan saja ke daftar ini. Saya mengalami masalah pagi ini dengan pengguna baru saja ditambahkan ke contoh AWS EC2. Untuk memotong ke pengejaran, masalahnya adalah selinux (yang dalam mode menegakkan ), bersama dengan fakta bahwa dir home user saya berada pada volume terlampir EBS baru. Entah bagaimana saya kira selinux tidak suka volume lainnya. Butuh beberapa saat untuk mencari tahu, karena saya melihat semua masalah ssh biasa lainnya (/ etc / ssh / sshd_config baik-baik saja, tentu saja tidak ada kata sandi yang diizinkan, izin benar, dll.)

Memperbaiki?

Untuk saat ini (sampai saya mengerti bagaimana mengizinkan pengguna untuk ssh ke volume yang berbeda, atau entah bagaimana menjadikan volume itu sebagai titik dir home yang bonafid):

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

Itu dia. Sekarang pengguna baru saya dapat login, menggunakan kunci id_rsa sendiri.

Pierre D
sumber
0

Punya masalah yang sama. Izin ditolak (publickey) ketika mencoba masuk dengan 'ec2-user' atau dengan 'root'.

Menelusuri nomor AMI dari gambar mesin dan memiliki informasi masuk SSH langsung di halaman wiki Debian.

Semoga ini membantu.

Lionel Morrison
sumber