Ini mungkin pertanyaan sederhana yang bodoh bagi sebagian orang :)
Saya telah membuat contoh linux baru di Amazon EC2, dan sebagai bagian dari itu mengunduh file .pem untuk memungkinkan saya masuk SSH.
Ketika saya mencoba ssh dengan:
ssh -i myfile.pem <public dns>
Saya mendapatkan:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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).
Setelah posting ini saya mencoba chmod +600 file pem, tapi sekarang ketika saya ssh saya baru saja mendapatkan:
Permission denied (publickey).
Kesalahan sekolah-anak apa yang saya buat di sini? File .pem ada di folder rumah saya (di osx). Izinnya terlihat seperti ini:
-rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Matt Roberts
sumber
sumber
chmod 400 myfile.pem
penggunaan yangmyfile.ppk
dihasilkan oleh PuTTYgen dari file pem.Jawaban:
Masalahnya adalah salah mod pada file.
Mudah dipecahkan dengan mengeksekusi -
chmod 400 mykey.pem
Diambil dari instruksi Amazon -
400 melindunginya dengan membuatnya hanya membaca dan hanya untuk pemilik.
sumber
ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IP
memperbaiki masalah. Mungkin ini seharusnya jawaban yang diterima ...Anda kemungkinan menggunakan nama pengguna yang salah untuk masuk:
ubuntu
ec2-user
root
atauadmin
Untuk masuk, Anda perlu menyesuaikan perintah ssh Anda:
HTH
sumber
Permission denied (publickey).
dan tidak ada yang lain ...chmod 500 <path_to_pem_file>
harus melakukannya.Saya tahu ini sangat terlambat untuk permainan ... tapi ini selalu berhasil untuk saya:
Langkah 1
langkah 2, cukup ssh :)
misalnya
Semoga ini bisa membantu seseorang.
sumber
ssh-agent -s
laporan eval SSH_AGENT_PID = 3409; ssh-add memberikan kesalahan yang sama seperti di atas ......... Setiap bantuan di sini plzOk man, satu-satunya hal yang berhasil untuk saya adalah:
Ubah izin kunci
Pastikan untuk masuk menggunakan ec2-user , dan alamat ec2-99 ... yang benar. Alamat ec2-99 ada di bagian bawah konsol aws ketika Anda masuk dan melihat instance Anda terdaftar
sumber
Lihatlah artikel ini . Anda tidak menggunakan DNS publik melainkan formulir
di mana nama tersebut terlihat di panel AMI Anda
sumber
Ubah izin untuk file kunci dengan:
Lihat dokumentasi AWS untuk menghubungkan ke instance:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
sumber
Di windows Anda dapat pergi ke properti file pem, dan pergi ke tab keamanan, lalu untuk memajukan tombol.
hapus warisan dan semua izin. kemudian berikan diri Anda kendali penuh. setelah semua SSL tidak akan memberikan Anda kesalahan yang sama lagi.
sumber
Saya tahu pertanyaan ini sudah dijawab tetapi bagi mereka yang telah mencoba semuanya dan Anda masih mendapatkan "Izin ditolak (publickey)" yang mengganggu. Coba jalankan perintah Anda dengan SUDO. Tentu saja ini adalah solusi sementara dan Anda harus menetapkan izin dengan benar tetapi setidaknya itu akan memungkinkan Anda mengidentifikasi bahwa pengguna Anda saat ini tidak berjalan dengan hak istimewa yang Anda butuhkan (seperti yang Anda asumsikan)
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Setelah Anda melakukan ini, Anda akan mendapatkan pesan seperti ini:
Please login as the user "ec2-user" rather than the user "root"
Yang juga jarang didokumentasikan. Dalam hal ini lakukan saja ini:
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user
Dan Anda akan mendapatkan yang mulia:
sumber
Di terminal Mac, melakukan "chmod 400 xyz.pem" tidak membantu saya, itu terus mengatakan izin ditolak. Untuk pengguna ubuntu saya sarankan
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(perhatikan pengguna adalah ubuntu)sumber
Praktik terbaik izin kunci dan file SSH:
kunci publik / .pub file - 0600 (baca & tulis hanya oleh pemilik)
chmod XXXX file/directory
sumber
ssh -i /.pem user @ host-machine-IP
Saya pikir itu karena Anda salah memasukkan kredensial atau, Anda menggunakan kunci publik daripada kunci pribadi atau, izin port Anda terbuka untuk SEMUA untuk ssh. Ini buruk untuk Amazon.
sumber
Alternatif masuk menggunakan Putty. Bagus tapi butuh beberapa langkah.
Saya menggunakan Putty 0,66 di Windows.
sumber
Selain jawaban lain, berikut adalah apa yang saya lakukan agar ini berfungsi:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Sekarang Anda harus dapat ssh EC2 (:
sumber
Lakukan chmod 400 yourkeyfile.pem Jika instance Anda adalah Amazon linux maka gunakan ssh -i yourkeyfile.pem ec2-user @ ip untuk ubuntu ssh -i yourkeyfile.pem ubuntu @ ip untuk centos ssh -i yourkeyfile.pem centos @ ip
sumber
Ada tiga alasan di balik kesalahan ini.
sumber
Masalahnya bagi saya adalah bahwa file .pem saya ada di salah satu partisi NTFS saya. Saya memindahkannya ke partisi linux saya (ext4).
Memberi izin yang diperlukan dengan menjalankan:
chmod 400 my_file.pem
Dan itu berhasil.
sumber
Nah, melihat deskripsi posting Anda, saya merasa ada 2 kesalahan yang dilakukan oleh Anda: -
Tetapkan izin yang benar untuk kunci pribadi . Perintah di bawah ini akan membantu Anda untuk mengatur izin file yang benar.
chmod 0600 mykey.pem
Pengguna ec2 salah yang Anda coba masuki .
Melihat log debug Anda, saya pikir Anda telah menelurkan instance Amazon linux. Pengguna default untuk tipe instance itu adalah
ec2-user
. Jika instansinya adalah ubuntu maka pengguna default Anda adalah ubuntuubuntu
.ssh -i privatekey.pem default_ssh_user@server_ip
sumber: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInancesLinux.html
sumber
Daftar periksa:
Apakah Anda menggunakan file .pem kunci pribadi yang tepat?
Apakah izinnya diatur dengan benar? (AMI merek Amazon saya bekerja dengan 644, tetapi Red hat harus setidaknya 600 atau 400. Tidak tahu tentang Ubuntu.)
Apakah Anda menggunakan nama pengguna yang tepat di ssh line Anda? Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = "ubuntu". Pengguna dapat ditentukan sebagai "ssh -i pem usename @ hostname" OR "ssh -l nama pengguna -i pem hostname"
sumber
Cukup ubah izin file pem ke 0600 yang memungkinkan hanya untuk pengguna yang diizinkan dan itu akan berfungsi seperti pesona.
Dan kemudian coba ssh itu akan bekerja dengan sempurna.
sumber
DENGAN izin default tidak mengizinkan kunci pem. Anda hanya perlu mengubah izin:
chmod 400 xyz.pem
dan jika ubuntu instance kemudian terhubung menggunakan:
ssh -i xyz.pem [email protected]
sumber
File kunci tidak boleh dapat dilihat oleh umum, jadi gunakan izin 400
Jika perintah di atas menunjukkan kesalahan penggunaan izin
Sekarang ssh ke mesin EC2, jika Anda masih menghadapi masalah, gunakan EC2-pengguna
ssh -i keyfile.pem [email protected]
sumber
0,400 melindunginya dengan membuatnya hanya membaca dan hanya untuk pemilik.
Anda dapat menemukan jawabannya dari panduan ASW.
sumber
Berikut ini adalah langkah-langkah sederhana bagi pengguna Linux untuk terhubung dengan server menggunakan file .pem:
Langkah1: Ke ke lokasi file pem dan salin ke lokasi .ssh rumah.
Langkah2: Ubah izin
Langkah 3: Jalankan perintah berikut
Karena perintah ini terlalu panjang sehingga Anda dapat membuat alias dari ini menggunakan perintah berikut:
Tuliskan perintah yang sama dengan cara berikut pada akhirnya.
Sekarang restart sistem Anda dan gunakan
sshConnect
untuk terhubung dengan server Anda.sumber
Ini hanya masalah izin dengan kunci aws pem Anda.
Cukup ubah izin tombol pem ke 400 menggunakan perintah di bawah ini.
Jika Anda tidak memiliki izin untuk mengubah izin file, Anda dapat menggunakan sudo seperti perintah di bawah ini.
Saya harap ini bekerja dengan baik.
sumber
Saya telah melihat dua alasan di balik masalah ini
1) kunci akses tidak memiliki izin yang tepat. kunci pem dengan izin default tidak diizinkan untuk membuat koneksi yang aman. Anda hanya perlu mengubah izin:
chmod 400 xyz.pem
2) Juga periksa apakah Anda telah masuk dengan kredensial pengguna yang tepat. Kalau tidak, gunakan sudo saat menghubungkan
sudo ssh -i {keyfile} ec2-user @ {alamat ip host jarak jauh}
sumber
Kunci Anda tidak boleh dapat dilihat oleh publik agar SSH berfungsi. Gunakan perintah ini jika perlu:
Contoh:
sumber
Harap abaikan jawaban ini jika tidak relevan untuk Anda, tetapi dari pengalaman saya, saya telah melihat orang-orang mengalami masalah
Permission denied (publickey)
karena mereka hanya menempelkan kunci publik mereka (pada mesin target) tanpa huruf pertama !Ini terjadi ketika menggunakan vim untuk mengedit (menempel) kunci. Karena vim secara default terbuka dalam mode perintah (bukan dalam mode insert ), menempelkan tombol tanpa beralih ke mode insert (yaitu
i
) akan mengakibatkan melewatkans
huruf pertama , misalnya alih-alihAnda akhirnya menempelkan
Jadi sebelum mencoba solusi lain, lihat apakah Anda telah menempelkan kunci Anda dengan benar ! yaitu
Hanya jika Anda yakin, lakukan langkah selanjutnya; mencoba ssh dalam mode verbose (yaitu flag
-v
) mungkin mengarahkan Anda ke masalah aktual:Sebagai catatan tambahan, seperti yang telah disebutkan di sini oleh orang lain, dalam sebagian besar kasus, memulai agen ssh kosong (program yang menyimpan kunci Anda di memori) dan menambahkan kunci Anda harus menyelesaikan masalah:
sumber
Apa yang diperbaiki bagi saya adalah memindahkan file .pem di dalam direktori apps. Soo say fooapp adalah nama aplikasi saya. Saya menempatkannya langsung di sana.
sumber
Terkadang mungkin ada kesalahan dalam folder. Saya tidak tahu kenapa...
Anda dapat mengubah folder dan coba lagi. Misalnya, Anda dapat melakukan percobaan di folder biasa (Desktop, Unduhan, dll.).
Saya mencoba metode ini dan berhasil
sumber
Kesalahan ini hanya karena izin.
Berikan saja 400 izin
#chmod 400 pemfilepath
sumber