Langsung ke konten utama

Login SSH tanpa Password | SSH Key Pair Authentication



Jika anda seorang sysadmin, pasti nggak asing dengan SSH. Ya, SSH adalah sebuah remote shell yang mempunyai jalur koneksi aman. Sebagaimana pada umumnya, setiap akses shell pastilah memerlukan kredensial (e.g username & password ) agar kontrol terhadap mesin bisa aman.

Memang keamanan sangat sering berbanding terbalik dengan kenyamanan. Kalo pengen amat ya agak ribet dikit. Nah, jika setiap hari anda diharuskan melakukan login SSH, males juga kan ngetik username & password mulu? Belum lagi jika username & password yang digunakan alay banget (e.g: 4kU c1Nt4 q4mu c3laLu). Ribet kan?

Sebenarnya anda dapat menggunakan cara ini jika anda menggunakan sistem operasi Windows (Linux juga bisa, karena putty dapat berjalan pada Linux). Nah, gimana kalo yang tanpa aplikasi tambahan atau langsung dari terminal?

Kita dapat menggunakan metode yang berbeda yaitu SSH key pair authentication. Selain untuk alasan praktis, tujuan utama dari metode ini adalah menghindari penggunaan teknik login username & password yang notabene sangat sederhana. Model login menggunakan username & password akan mempengaruhi isu keamanan. Akses remote itu kan terbuka secara global sehingga pengamanan ekstra mulai dari sisi jaringan sampai ke layer aplikasi juga diperlukan.

Akan sangat panjang jika dijelaskan secara detail bagaimana cara kerja metode SSH key pair authentication, namun saya akan tetap bahas secara sederhana saja. Singkatnya, pada metode ini akan terdapat dua file yang disebut sebagai key. Dua key ini saling berpasangan dan tidak dapat digunakan satu dengan yang lain. Ketika salah satu key hilang atau anda tidak memilikinya, maka anda harus membuat key baru dan meng-install-nya pada sistem yang bersangkutan.

Key yang pertama adalah public key. Public key ini adalah file yang boleh disimpan oleh siapapun, karena fungsinya hanya untuk mengenali pasangannya saja (private key). Biasanya public key disimpan pada mesin SSH server dan berperan sebagai gembok.

Private key adalah kebalikan dari public key. Private key harus dimiliki oleh orang yang memiliki otoritas terhadap mesin yang bersangkutan. Private key berperan sebagai kunci dari gembok.


How's it work?
Setiap terjadi aktifitas login SSH pada remote host, private key akan men-generate sebuah signature. Signature ini hampir mustahil untuk dibuat ulang/ditiru oleh mesin lain yang tidak memiliki private key. Selain itu, signature ini hanya dapat dikenali oleh public key pasangannya. Setelah mesin mengenali signature dan memastikannya menggunakan public key, login session akan dibuat dan akses diizinkan.

Sayang sekali, private key tidak bisa disimpan dengan sembarangan. Karena begitu seseorang mendapatkan file ini, mereka dapat mengakses mesin yang memiliki public key pasangannya. Namun kita tidak perlu khawatir karena private key dapat dilindungi dengan menambahkan parameter passphrase.


Prerequisite
1. Komputer/server dengan sistem operasi Linux Debian 8 yang telah terpasang OpenSSH
2. Pembuatan key dilakukan oleh komputer server/remote


Let's do it
1. MEMBUAT SSH KEYPAIR
Kita harus membuat key pair terlebih dahulu. Secara default paket OpenSSH telah menyediakan ssh-keygen untuk membuat private key dan public key. Sintaks yang digunakan untuk generate keypair adalah:
ssh-keygen -t rsa -b 1024 -E sha256


Penjelasan:
ssh-keygen: perintah utama
-t rsa: opsi -t digunakan untuk menspesifikasi jenis kunci. Umumnya menggunakan RSA
-b 1024: jumlah bit pada kunci (untuk RSA). minimal 1024, default 2048
-E sha256: tampilkan fingerprint dari public key.

Setelah menjalakan perintah tersebut, komputer akan menanyakan beberapa hal, diantaranya:
1. Enter file in which to save the key: lokasi penyimpanan kunci (default disimpan di /home/user/.ssh/id_rsa). Tekan enter dan biarkan default
2. Enter passphrase: masukkan password untuk key (jika kosong, maka tidak menggunakan password). Silahkan masukkan password jika ingin mengamankan kunci tersebut. Jika anda ingin simpel biarkan saja kosong.
3. Enter same passphrase again: masukkan password lagi untuk konfirmasi

Public key dan private key disimpan pada direktory /home/user/.ssh/. Private key akan disimpan dengan nama id_rsa sedangkan public key disimpan dengan id_rsa.pub. Selain itu, anda juga akan mengetahui fingerprint dari public key yang akan bermanfaat nantinya (silahkan baca kenapa kita harus mengetahui fingerprint dari public key DISINI)


2. MEMINDAHKAN KEY
Key yang telah dibuat harus dipindahkan dan memiliki permission yang tepat. Untuk memudahkan, kita pindah direktori terlebih dahulu.
cd $HOME/.ssh

Secara default, OpenSSH mengenali public key dengan melihat file bernama authorized_keys. Kita juga bisa menginstruksikan OpenSSH untuk membaca file lain (untuk sementara tidak perlu). File ini memuat lebih dari 1 public key. Oleh karena itu, kita harus memastikan dulu apakah file authorized_keys sudah ada atau belum dengan perintah:
ls -l

Jika file authorized_keys belum ada, kita bisa membuat file baru dan mengarahkan public key (id_rsa.pub) ke dalamnya dengan perintah:
cat id_rsa.pub > authorized_keys

Apabila file authorized_keys sudah ada dan kemungkinan sudah terdapat key didalamnya, maka kita harus menambahkan public key yang sebelumnya kita buat:
cat id_rsa.pub >> authorized_keys

note:
itu bukan typo ya, tanda > memang ada dua.

Jangan lupa, pastikan permission dari authorized_keys adalah -rw-r--r-- atau 644
chmod 644 authorized_keys


Sedangkan private key harus anda simpan baik-baik. Anda bisa memindahkan private key (id_rsa) ke penyimpanan eksternal atau komputer pribadi anda dengan menggunakan utility scp atau bisa juga membaca file tersebut dan meng-copy secara manual. Permission pada private key adalah -rw------- atau 600. Apabila komputer pribadi anda menggunakan Linux, anda bisa menggunakan perintah:
chmod 600 id_rsa

Untuk komputer dengan sistem operasi Windows, saya kurang tau karena begitu saya copy-paste dan saya tidak perlu lagi merubah permission dari private key.


3. KONFIGURASI DAEMON (SSHD_CONFIG)
Note:
Perintah berikut harus dalam mode root
Untuk bisa menggunakan key pair, OpenSSH harus dikonfigurasi agar bersedia menerima metode login  Public key authentication. Seluruh konfigurasi OpenSSH (daemon) terletak di file /etc/ssh/sshd_config. Anda bisa menggunakan perintah:
nano /etc/ssh/sshd_config

Setelah file terbuka, cari baris PubkeyAuthentication dan baris AuthorizedKeysFile. Apabila baris tersebut dalam kondisi comment, maka hilangkan tanda comment (tanda pagar diawal baris) dan pastikan nilai dari PubkeyAuthentication adalah yes sedangkan nilai dari AuthorizedKeysFile adalah .ssh/authorized_keys

FYI:
Untuk keamanan ekstra, anda juga bisa menonaktifkan root login dan mengganti port  dengan menghilangkan tanda comment pada baris PermitRootLogin dan Port kemudian merubah nilai dari PermitRootLogin  menjadi no dan Port dengan port yang anda inginkan.

Simpan file /etc/ssh/sshd_config. Selanjutnya restart daemon dengan perintah:
systemctl restart ssh


4. AKSES SERVER
4.1 AKSES SERVER MENGGUNAKAN LINUX TERMINAL
Untuk mengakses server menggunakan private key anda tinggal menyematkan key dengan perintah:
ssh user@ip_server -i id_rsa

Masukkan password jika anda menggunakan passphrase

4.2 AKSES SERVER PUTTY WINDOWS
Kita tidak bisa langsung menggunakan private key sebelum karena putty memiliki format tersendiri untuk menyimpan private key yaitu .ppk . Kita membutuhkan aplikasi bernama puttygen untuk melakukan koversi.

Setelah anda mendapatkan aplikasi tersebut, buka puttygen. Pada menu Conversions, pilih Import key, arahkan ke lokasi dimana anda menyimpan file private key (id_rsa). Apabila sudah ditemukan, klik Open. Masukkan password jika anda menggunakan passphrase. Tekan tombol Save private key yang ada dibagian bawah, kemudian beri nama private key yang baru (misalkan id_rsa.ppk) serta arahkan ke folder yang anda inginkan.

Selanjutnya adalah akses server menggunakan putty. Demi kemudahan anda bisa menggunakan menggunakan putty sebagai shortcut. Silahkan melihat referensi pada tulisan saya sebelumnya (Cara Menyimpan Username dan Password pada Putty). Kemudian anda bisa menggunakan argumen berikut ini:
lokasi_putty\putty.exe -ssh user@ip_server -i lokasi_private_key/id_rsa.ppk -P port_ssh_server


Dan selesai. Semoga artikel ini bisa membantu.






P.S
Setiap konten (kutipan teks, gambar, suara, video) terpublikasi di internet dan dapat diakses secara terbuka tanpa catatan copyright. Saya telah mencantumkan sumber setiap konten. Jika memang konten anda bermuatan nilai hak cipta, silahkan inbox saya di blackhiden@gmail.com

Komentar

Postingan populer dari blog ini

Hubungan Manis antara Conan Edogawa dan Haibara Ai.

( Hubungan Manis antara Conan Edogawa dan Haibara Ai)  Halo para Conaners, tahu kenyataan unik nggak. Ternyata Haibara Ai tuh demen lho sama Conan Edogawa. Tapi dia berusaha menyembunyikannya lantaran dia udah tau kalo Conan (Shinichi) tuh suka dan cinta sama Ran. Haibara yang kita ketahui mempunyai kepribadian dingin ini, tak gampang putus asa nih buat nunjukin kegigihannya untuk mendapatkan perhatian dari Conan. Yuk kita lihat, usaha apa saja yang dilakukan Haibara untuk menaklukan Conan :

Live Streaming ke Banyak Media Sosial

Beberapa dekade terakhir, banyak sekali para gamer yang "nyambi" cari uang dengan melakukan live stream di media sosial terutama Facebook. Sebenarnya saya juga mulai kesel karena para fans live streamer sering membagikan live streaming-nya ke grup Facebook. Sehingga grup Facebook yang awalnya diperuntukkan sebagai media diskusi malah jadi ajang pencarian views. Spam dan annoying banget.

Instalasi FreeRADIUS ft. daloRADIUS | [UPDATE - Study case pada Debian Buster]

NOTE: Artikel ini telah mengalami perubahan. Sebelumnya, versi sistem operasi yang saya gunakan adalah Debian Wheezy. Dengan menggunakan Debian Buster beberapa versi package  juga ikut berubah. Update package akan saya beri warna font merah Remote Authentication Dial-In User Service atau sering disebut dengan RADIUS adalah sebuah protokol jaringan yang melayani administrasi pengguna dalam penggunaan jaringan secara terpusat. Aspek pelayanan yang diberikan meliputi  Authetication, Authorization dan Accounting  yang kemudian disingkat AAA atau triple A . RADIUS akan sangat dibutuhkan oleh provider skala besar, misalkan  Internet Service Provider (ISP) . Untuk platform MikroTik, RADIUS sering dikenal dengan userman ( user manager ) karena tugasnya memang manajemen pengguna.