Saya memiliki instance aplikasi yang berjalan di cloud pada instance Amazon EC2, dan saya harus menghubungkannya dari Ubuntu lokal saya. Ini berfungsi dengan baik di salah satu ubuntu lokal dan juga laptop. Saya mendapat pesan "Izin ditolak (publickey)" ketika mencoba mengakses SSH ke EC2 di Ubuntu lokal lain. Sangat aneh bagi saya.
Saya sedang memikirkan beberapa masalah dengan pengaturan keamanan di Amazon EC2 yang memiliki akses IP terbatas ke satu contoh atau sertifikat mungkin perlu dibuat ulang.
Adakah yang tahu solusi?
linux
ssh
amazon-ec2
Vorleak Chy
sumber
sumber
Jawaban:
Hal pertama yang harus dilakukan dalam situasi ini adalah menggunakan
-v
opsi untukssh
, sehingga Anda dapat melihat jenis otentikasi apa yang dicoba dan apa hasilnya. Apakah itu membantu mencerahkan situasi?Dalam pembaruan Anda untuk pertanyaan Anda, Anda menyebutkan "di Ubuntu lokal lain". Sudahkah Anda menyalin kunci pribadi ssh ke mesin lain?
sumber
ssh -i <keyfile> bitname@<ec2-address>
. Sayangnya-v
opsi ini tidak membantu saya menemukan ini, tetapi masih sangat berguna untuk memeriksa!/var/log/auth.log
, kadang-kadang Anda akan melihat pesan-pesan berikut:Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys
atau sesuatu yang lainSeperti yang belum disebutkan secara eksplisit, sshd secara default sangat ketat pada izin untuk
authorized_keys
file. Jadi, jikaauthorized_keys
ini ditulis bagi siapa pun selain pengguna atau dapat dibuat dapat ditulis oleh siapa pun selain pengguna, itu akan menolak untuk mengotentikasi (kecuali sshd dikonfigurasi denganStrictModes no
)Apa yang saya maksud dengan "dapat dibuat dapat ditulis" adalah bahwa jika salah satu direktori induk dapat ditulisi untuk siapa pun selain pengguna, pengguna yang diizinkan untuk mengubah direktori tersebut dapat mulai memodifikasi izin sedemikian rupa sehingga mereka dapat memodifikasi / mengganti otor_keys.
Lebih jauh, jika
/home/username/.ssh
direktori tidak dimiliki oleh pengguna, dan dengan demikian pengguna tidak memiliki izin untuk membaca kunci Anda dapat mengalami masalah:Perhatikan bahwa jane tidak memiliki
.ssh
file. Perbaiki ini melaluiMasalah izin sistem file semacam ini tidak akan muncul
ssh -v
, dan mereka bahkan tidak akan muncul di sshd log (!) Sampai Anda mengatur level log ke DEBUG./etc/ssh/sshd_config
. Anda ingin baris yang berbunyiLogLevel DEBUG
di sana di suatu tempat. Muat ulang server SSH menggunakan mekanisme yang disediakan oleh distro. (service sshd reload
di RHEL / CentOS / Scientific.) Muat ulang dengan anggun tidak akan membatalkan sesi yang ada./var/log/auth.log
pada distro berbasis Debian;/var/log/secure
pada RHEL / CentOS / Scientific.)Jauh lebih mudah untuk mengetahui apa yang salah dengan output debug yang mencakup kesalahan izin sistem file. Ingatlah untuk mengembalikan perubahan ke
/etc/ssh/sshd_config
saat selesai!sumber
Authentication refused: bad ownership or modes for directory
Saya menerima kesalahan ini, karena saya lupa menambahkan
-l
opsi. Nama pengguna lokal saya tidak sama dengan pada sistem jarak jauh.Ini tidak menjawab pertanyaan Anda, tetapi saya sampai di sini mencari jawaban untuk masalah saya.
sumber
ssh host -l user
sama denganssh user@host
, kan?Saya mendapat pesan ini pada instance baru yang didasarkan pada AMI Ubuntu. Saya menggunakan opsi -i untuk menyediakan PEM tetapi masih menunjukkan "Izin ditolak (publickey)".
Masalah saya adalah saya tidak menggunakan pengguna yang benar. Dengan menjalankan ssh dengan ubuntu @ ec2 ... itu berfungsi seperti biasa.
sumber
sudo
, itulah sebabnya itu tidak berhasil.Sesuatu yang lebih mudah dibaca daripada
ssh -v
(menurut saya tentu saja), adalahtail -f /var/log/auth.log
. Itu harus dijalankan di server yang Anda coba sambungkan, saat mencoba menyambung. Ini akan menampilkan kesalahan dalam teks biasa.Ini membantu saya memecahkan masalah saya:
sumber
tail -f /var/log/secure
Periksa file / etc / ssh / sshd_config Anda . Di sana, temukan garis yang mengatakan
Baris itu perlu dimodifikasi untuk mengatakan ya alih-alih tidak. Juga, restart server sshd sesudahnya.
sumber
/etc/ssh/sshd_config
- jika kita bahkan tidak bisa masuk ke server?sudo service sshd reload
Mungkin tidak relevan dengan poster saat ini, tetapi mungkin membantu orang lain yang menemukan ini ketika mencari jawaban untuk situasi yang sama. Alih-alih membiarkan Amazon menghasilkan ssh keypair, saya sarankan mengunggah kunci ssh publik standar Anda sendiri ke Amazon dan menetapkannya saat Anda menjalankan instance EC2.
Ini memungkinkan Anda menjatuhkan sintaks tipe "-i" di ssh, menggunakan rsync dengan opsi standar, dan juga memungkinkan Anda menggunakan kunci ssh yang sama di semua wilayah EC2.
Saya menulis artikel tentang proses ini di sini:
sumber
Anehnya, masalah saya ternyata server telah dihidupkan ulang dan dikeluarkan nama DNS baru. Saya menggunakan nama DNS lama. Saya tahu ini kedengarannya bodoh tetapi butuh beberapa saat untuk mencari tahu.
sumber
Jika Anda mencoba menyambungkan ke telepon CyanogenMod yang menjalankan Dropbear, Anda harus menjalankan baris berikut untuk memastikan semuanya baik-baik saja:
atau
dan
Ini memperbaikinya bagi saya, jika tidak, tidak ada yang dapat terhubung.
sumber
Jika Anda menggunakan CentOS 5, Anda mungkin ingin mengatur
StrictModes no
di/etc/ssh/sshd_config
. Saya berbagi / direktori home menggunakan NIS / NFS, dan saya mengatur semua izin dengan benar, tetapi selalu meminta saya dengan kata sandi. Setelah saya aturStrictModes no
, masalahnya hilang!sumber
Jawaban Greg menjelaskan cara mengatasi masalah dengan lebih baik, namun masalah sebenarnya adalah Anda memiliki kunci ssh yang ditetapkan di satu sisi transaksi (klien), yang mencoba otentikasi kunci publik daripada otentikasi berbasis kata sandi. Karena Anda tidak memiliki kunci publik yang sesuai pada instance EC2, ini tidak akan berfungsi.
sumber
Saya memiliki masalah yang sama, dan setelah mencoba banyak solusi yang gagal, saya membuka port SSH di firewall router saya (panel kontrol firewall router saya berantakan, jadi sulit untuk mengatakan apa yang terjadi). Bagaimanapun, itu memperbaikinya :)
Sangat berdarah menjengkelkan bahwa kesalahan yang Anda dapatkan adalah Izin Ditolak, menyiratkan bahwa ada semacam koneksi, grr.
sumber
Saya mengalami masalah yang sama meskipun saya seharusnya mengikuti semua langkah termasuk
Namun, saya telah memulai contoh saya di wilayah kami-barat-1. Jadi perintah di atas juga harus menentukan itu.
Setelah perintah ini saya bisa ssh ke instance. Saya menghabiskan sedikit waktu sebelum saya menyadari masalah ini dan berharap posting ini membantu orang lain.
sumber
Ini adalah kasus yang jarang terjadi, tetapi jika Anda memiliki selinux diaktifkan dan Anda menggunakan nfs untuk direktori dengan otor_keys (misalnya direktori home yang dibagikan), Anda harus menonaktifkan selinux (tidak disarankan karena alasan keamanan, tetapi Anda dapat menonaktifkannya untuk sementara) untuk melihat apakah ini yang menyebabkan masalah) atau izinkan selinux untuk menggunakan direktori home nfs. Saya tidak jelas detailnya, tetapi ini berhasil untuk saya
setsebool -P use_nfs_home_dirs 1
sumber
Saya baru saja mengalami masalah yang sama setelah secara tidak sengaja menambahkan izin menulis grup ke direktori home pengguna.
Saya menemukan ini adalah penyebabnya dengan menjalankan
tail -f /var/log/secure
mesin dan melihat kesalahannyaAuthentication refused: bad ownership or modes for directory /home/<username>
.sumber