Mengatasi Kesalahan Izin SSH di Dalam Aplikasi Anda
Pengguna SSH baru sering kali menemui jalan buntu. Mereka melihat kesalahan ini:
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.
Solusinya adalah perintah terminal sederhana: chmod 600 id_rsa.pem. Bagi para engineer, ini mudah. Namun bagi staf agensi atau operator IT yang tidak menggunakan terminal, ini adalah hambatan besar. Hal ini menyebabkan banyaknya tiket dukungan yang masuk secara terus-menerus.
Kami memutuskan untuk menyelesaikan masalah ini di dalam aplikasi kami. Kami membangun sistem untuk mendiagnosis dan memperbaiki izin secara otomatis.
Masalahnya
OpenSSH menolak untuk memuat kunci privat jika izinnya terlalu longgar. Jika orang lain dapat membaca kunci Anda, keamanan Anda hilang. Sebagian besar kunci secara default menggunakan 0644, yang dapat dibaca oleh siapa saja (world-readable). OpenSSH memerlukan 0600.
Solusi Kami
Kami menggunakan pendekatan dua fase untuk menangani hal ini.
Fase 1: Pemulihan pasca-kegagalan
Jika koneksi gagal karena masalah izin, UI akan menampilkan tombol Fix and retry. Mengekliknya akan menjalankan perbaikan dan mencoba kembali koneksi tersebut.
Fase 2: Pencegahan sebelum koneksi
Aplikasi memeriksa jalur kunci sebelum pengguna mengeklik koneksi. Jika izinnya salah, kami akan menampilkan peringatan. Pengguna dapat memilih untuk memperbaikinya atau tetap terhubung apa adanya.
Kami juga menangani Windows secara berbeda. Windows menggunakan ACL, bukan izin Unix. Kode kami mendeteksi platform tersebut dan menjalankan perintah yang benar, seperti icacls, untuk memperbaiki akses.
Mengapa kami tidak melakukan perbaikan otomatis secara diam-diam
Kami sempat mempertimbangkan untuk memperbaiki kunci secara otomatis saat startup. Namun, kami menolak ide ini. Beberapa alur kerja memerlukan izin khusus untuk kunci yang dibagikan. Jika kami mengubahnya tanpa bertanya, kami akan merusak alur kerja pengguna.
Aturan kami sederhana: Kami mendiagnosis segalanya, tetapi kami hanya memodifikasi file saat pengguna mengeklik sebuah tombol.
Hasilnya
Membangun UX yang menyerap hambatan teknis dapat mengurangi volume dukungan. Kami menunjukkan kepada pengguna apa yang salah dan menawarkan perbaikan satu klik. Hal ini menghilangkan hambatan psikologis dalam menggunakan terminal.