Tutorial singkat ini menunjukkan kepada Anda cara memperbaiki kesalahan ssh “sign_and_send_pubkey:penandatanganan gagal:agen menolak operasi Izin ditolak (kunci publik)” di Linux.
Jika Anda mencoba menyambung ke server jauh melalui SSH, Anda mungkin mengalami kesalahan izin ditolak. Kesalahan ini dapat terjadi karena beberapa alasan. Dan perbaikan untuk masalah ini bergantung pada alasan pasti di balik kesalahan tersebut.
Dalam kasus saya, saya memiliki kunci publik dan pribadi yang disimpan di desktop Ubuntu 16.04 saya. Setelah rilis Ubuntu 18.04, saya memutuskan untuk memutakhirkan ke versi yang lebih baru ini. Saya lebih memilih penginstalan baru daripada peningkatan distribusi.
Jadi, saya membuat cadangan folder utama direktori Home saya termasuk folder .ssh yang memiliki kunci publik dan pribadi pada disk eksternal.
Setelah diinstal, saya mengaktifkan SSH di Ubuntu 18.04 dan memulihkan semuanya termasuk kunci SSH.
Sekarang ketika saya mencoba menyambung ke server jarak jauh menggunakan ssh, saya pikir itu akan langsung berfungsi karena saya memiliki kunci publik dan pribadi yang sama.
Tapi itu tidak berhasil. SSH memberi saya kesalahan ini:
sign_and_send_pubkey: signing failed: agent refused operation
[email protected]: Permission denied (publickey).
Jika Anda berada dalam situasi yang sama saat menyalin kunci SSH dari sumber lain, izinkan saya menunjukkan cara memperbaiki kesalahan SSH ini.
Perbaiki izin file pada folder ~/.ssh dan isinya
Sebagai aturan praktis, Anda dapat mengatur izin berikut pada direktori ssh dan file-filenya (kunci pribadi, kunci publik, known_hosts, file konfigurasi ssh, dll.)
Elemen | Izin |
---|---|
direktori .ssh | 700 ((drwx------) |
kunci publik | 644 (-rw-r--r--) |
kunci pribadi | 600 (-rw-------) |
authorized_keys | 600 (-rw-------) |
known_hosts | 600 (-rw-------) |
konfigurasi | 600 (-rw-------) |
Anda mungkin tidak memiliki semua file tetapi Anda harus memiliki kunci publik dan pribadi di sini.
Sekarang mari kita lihat cara mengubah izin file pada kunci ssh dan file lainnya.
Memperbaiki kesalahan Izin ditolak (kunci publik)
Jadi masalahnya terletak pada izin file di sini. Anda lihat, ketika saya menyalin file, USB dalam format file FAT Microsoft. File ini tidak mendukung izin file UNIX/Linux.
Dan karenanya izin pada kunci ssh yang disalin diubah menjadi 777.
Untuk SSH, izin file terlalu terbuka. Tidak diperbolehkan memiliki 777 izin pada kunci publik atau pribadi. Dan inilah mengapa SSH menolak koneksi di sini.
ls -l .ssh
-rwxrwxrwx 1 abhishek abhishek 1766 Nov 12 2017 id_rsa
-rwxrwxrwx 1 abhishek abhishek 398 Nov 12 2017 id_rsa.pub
-rwxrwxrwx 1 abhishek abhishek 4214 Sep 21 21:39 known_hosts
Kunci pribadi harus memiliki izin baca dan tulis hanya untuk pengguna dan tidak ada izin lain untuk grup dan lainnya.
Anda harus mengubah izin menggunakan perintah chmod:
chmod 600 ~/.ssh/id_rsa
Demikian pula, kunci publik tidak boleh memiliki izin menulis dan mengeksekusi untuk grup dan lainnya.
chmod 644 ~/.ssh/id_rsa.pub
Sekarang setelah Anda memberikan izin yang benar, Anda dapat terhubung ke ssh lagi. Saat ini, ini akan meminta sandi admin Anda untuk membuka kunci. Masukkan kata sandi admin Anda dan Anda akan siap melakukannya.
Ini juga mengajari saya pelajaran bahwa menyalin-menempelkan file adalah ide yang buruk dan cadangan yang tepat harus dibuat jika tidak, semua file akan memiliki izin 777 yang berbahaya. Saya harus mengubah izin file secara rekursif di seluruh direktori Home dan percayalah, itu bukan hal yang baik untuk dilakukan.
Seperti yang saya katakan sebelumnya, ada berbagai alasan untuk kesalahan ini. Untuk masalah yang terkait dengan izin file terbuka, perbaikan ini akan membantu Anda memperbaiki kesalahan Izin ditolak (kunci publik) dengan SSH. Jika Anda tertarik, Anda dapat membaca lebih lanjut tentang dasar-dasar SSH.
Beri tahu saya di bagian komentar jika perbaikan berhasil untuk Anda atau tidak. Sarankan juga pendapat Anda tentang menyalin kunci ssh di komputer lain.