Solusi 1:
Hal pertama yang harus dilakukan dalam situasi ini adalah menggunakan -v
opsi untuk ssh
, sehingga Anda dapat melihat jenis autentikasi apa yang dicoba dan 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 komputer lain?
Solusi 2:
Karena belum disebutkan secara eksplisit, sshd secara default sangat ketat pada izin untuk authorized_keys
file. Jadi, jika authorized_keys
dapat ditulis untuk siapa pun selain pengguna atau dapat dibuat dapat ditulisi oleh siapa pun selain pengguna, itu akan menolak untuk mengotentikasi (kecuali jika sshd dikonfigurasi dengan StrictModes no
)
Yang saya maksud dengan "dapat dibuat dapat ditulisi" adalah bahwa jika salah satu direktori induk dapat ditulisi untuk siapa pun selain pengguna, pengguna yang diizinkan untuk memodifikasi direktori tersebut dapat mulai mengubah izin sedemikian rupa sehingga mereka dapat memodifikasi/mengganti kunci_otorisasi.
Selanjutnya jika /home/username/.ssh
direktori tidak dimiliki oleh pengguna, sehingga pengguna tidak memiliki izin untuk membaca kunci yang dapat Anda alami masalah:
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
Perhatikan bahwa jane tidak memiliki .ssh
mengajukan. Perbaiki ini melalui
chown -R jane:jane /home/jane/.ssh
Masalah izin sistem file semacam ini tidak akan muncul dengan ssh -v
, dan mereka bahkan tidak akan muncul di log sshd (!) sampai Anda menyetel level log ke DEBUG.
- Edit
/etc/ssh/sshd_config
. Anda menginginkan baris yang bertuliskanLogLevel 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 yang lancar tidak akan membatalkan sesi yang ada. - Coba mengautentikasi lagi.
- Cari tahu ke mana log fasilitas autentikasi Anda pergi dan bacalah. (IIRC,
/var/log/auth.log
pada distro berbasis Debian;/var/log/secure
di RHEL/CentOS/Ilmiah.)
Jauh lebih mudah untuk mencari tahu apa yang salah dengan output debug yang menyertakan kesalahan izin sistem file. Ingatlah untuk mengembalikan perubahan ke /etc/ssh/sshd_config
setelah selesai!
Solusi 3:
Saya menerima kesalahan ini, karena saya lupa menambahkan -l
pilihan. Nama pengguna lokal saya tidak sama dengan di sistem jarak jauh.
Ini tidak menjawab pertanyaan Anda, tetapi saya datang ke sini untuk mencari jawaban atas masalah saya.
Solusi 4:
Saya mendapat pesan ini pada contoh baru berdasarkan Ubuntu AMI. Saya menggunakan opsi -i untuk menyediakan PEM tetapi masih menampilkan "Izin ditolak (publickey)".
Masalah saya adalah saya tidak menggunakan pengguna yang benar. Dengan menjalankan ssh dengan [email protected] berfungsi seperti biasa.
Solusi 5:
Sesuatu yang lebih mudah dibaca daripada ssh -v
(menurut saya tentunya), adalah tail -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 menyelesaikan masalah saya:
Pengguna [nama pengguna] dari xx.yy.com tidak diizinkan karena tidak ada grup pengguna yang terdaftar di AllowGroups