SSH merupakan protokol remote connection yang bisa dikatakan wajib digunakan apabila kita ingin meremot server yang berada di luar lokasi kita. Jika dibandingkan dengan telnet, menggunakan ssh akan lebih baik karena adanya enkripsi terhadap koneksi yang berlangsung.
Akan tetapi, meskipun dirasa sudah cukup aman, melakukan remote ssh dengan metode autentikasi username dan password masih memeiliki kelemahan/celah. Yakni adanya kemungkinan untuk dibobol menggunakan serangan brute force.
Belum lagi kalau kita lupa dengan password usernya. Kalau kita hanya meremot satu server saja mungkin kita masih bisa mengingat passwordnya. Namun jika kita harus melakukan remot di beberapa server yang passwordnya mungkin berbeda-beda, bukan tidak mungkin kita bisa lupa dengan salah satu passwordnya.
Untuk mengatasi permasalahan di atas, kita bisa menggunakan metode autentikasi key untuk remot ssh. Dengan menggunakan autentikasi key, kita tidak perlu memasukkan password milik user. Client cukup melakukan initial connection dengan menggunakan key yang sudah di-generate oleh server atau client itu sendiri.
Metode autentikasi key menggunakan dua buah key yakni public key dan privat key. Public key akan diletakkan di server, sementara privat key diletakkan di client yang akan meremote server.
Dari dua buah kunci tersebut. Yang sangat penting adalah privat key. Sebab privat key ini menjadi kunci untuk membuka public key yang sudah tersimpan di server. Oleh karena itu, penting untuk selalu menjaga privat key ini. Apabila sampai diketahui oleh pihak yang tidak bertanggung jawab maka ia dapat memanfaatkan privat key tersebut untuk mengakses server.
Untuk membuat (generate) key baik public maupun privat key, dapat dilakukan di sisi server maupun di sisi client. Apabila proses generate key dilakukan di sisi server, maka client harus mengunduh private key yang sudah dibuat oleh server tadi.
Sedangkan jika proses generate key dilakukan di sisi client, maka public key harus diupload ke server.
Catatan : untuk melakukan tutorial ini, pastikan kalian sudah mengaktifkan service ssh server dan juga sudah mengkonfigurasinya. Apabila belum silahkan lihat postingan tentang konfigurasi SSH Server.
Membuat (Generate) Key
Pada tutorial ini, server yang digunakan adalah Ubuntu 16.04. Proses generate key akan dilakukan pada server. Sehingga untuk bisa mengakses server, client perlu memiliki private key-nya.
Perintah untuk membuat key adalah :
ssh-keygen -t rsa
Kemudian tentukan lokasi untuk menyimpan key nanti. Secara default, lokasi untuk menyimpan key berada di direktori /home/nama_user/.ssh dengan nama key-nya adalah id.rsa.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xenial/.ssh/id_rsa):
/home/xenial/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Apabila direktori belum ada, maka sistem akan membuatnya terlebih dahulu, Namun jika direktori sudah pernah dibuat sebelumnya, akan muncul peringatan untuk melakukan overwrite.
Selanjutnya adalah memasukkan passphrase. Passphrase ini digunakan untuk autentikasi ketika kita akan membuka publick key menggunakan private key nanti. Apabila tidak ingin menggunakan passphrase, maka skip langkah tersebut dengan menekan tombol Enter.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Setelah proses generate selesai, sistem akan memberitahukan letak public key dan privat key (id_rsa).
Your identification has been saved in /home/xenial/.ssh/id_rsa.
Your public key has been saved in /home/xenial/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8/JWl7tcXvBpcT3cy76AJCNA+ODvwqL7V/6YaC3gx3Q xenial@ubuntuserv
The key's randomart image is:
+---[RSA 2048]----+
| .. |
| o. |
| . o. |
| . .. . o|
| . .So . .=+|
| . ..E .o+ o +o*|
| ..+.= . .o o *+|
| ..o*ooo o. .=o.|
|+oo+o.o.... o+o|
+----[SHA256]-----+
xenial@ubuntuserv:~$
Selanjutnya kita cek isi direktori
.ssh.
xenial@ubuntuserv:~$ ls .ssh/
id_rsa id_rsa.pub
Lalu ubah nama file
id.rsa.pub menjadi
authorized_keys.
xenial@ubuntuserv:~$ cd .ssh/
xenial@ubuntuserv:~/.ssh$ mv id_rsa.pub authorized_keys
Sampai di sini proses generate key di server sudah selesai. Cek kembali isi direktori .ssh.
xenial@ubuntuserv:~/.ssh$ ls
authorized_keys id_rsa
Pengujian Akses SSH
Pada LinuxSebelum bisa mengakses ssh menggunakan key, client harus mengunduh file id_rsa yang ada pada server dan meletakkannya ke dalam direktori .ssh pada komputer client.
Buat dahulu direktori untuk menyimpan file private key yakni direktori .ssh :
mkdir ~/.ssh
Ubah permission agar hanya user tersebut yang bisa membacanya :
chmod 600 ~/.ssh
Untuk mengunduh private key, kita bisa menggunakan perintah
scp
seperti berikut :
scp username@hostname_server:lokasi_file lokasi_tujuan
Contoh :
scp -P 2212 xenial@192.168.43.232:~/.ssh/id_rsa ~/.ssh
-P
di sini digunakan untuk mendefinisikan port ssh. Apabila port ssh yang digunakan adalah default (22) maka tidak perlu menggunakan opsi ini.xenial@192.168.43.232
merupakan username dan hostname atau ip address dari server:~/.ssh/id_rsa
maksudnya adalah lokasi file id_rsa berada, simbol ~ melambangkan home direktori dari user xenial~/.ssh
merupakan direktori tujuan, yakni /home/namauser/.ssh
Selanjutnya masukkan password dari user xenial (username yang ada di server) untuk menfkonfirmasi proses transfer file dari server.
Setelah itu client dapat melakukan remote ssh ke server dengan perintah
ssh user@hostname_server
. Jika service ssh menggunakan port selain 22, maka tambahkan opsi
-p [nomor_port]
.
Pada WindowsUntuk client windows, kita bisa menggunakan aplikasi PuTTY untuk melakukan remote ssh. Akan tetapi sebelum bisa digunakan, kita perlu mengubah private key-nya terlebih dahulu agar bisa dibaca oleh PuTTY
Unduh dahulu file id_rsa dari server. Bisa menggunakan aplikasi file transfer seperti FileZilla atau WinSCP. Kemudian login menggunakan username dan password yang ada pada server. Contoh di sini saya menggunakan WinSCP.
Apabila muncul peringatan warning, silahkan pilih Yes.
Karena lokasi file id_rsa berada di dalam direktori ssh yang terhidden. Maka untuk mencari file tersebut kamu bisa menggunakan tombol Find Files. Kemudian klik Start.
Setelah muncul list file yang ada. Klik pada file yang akan diunduh yakni
id_rsa, kemudian pilih
Download.
Tahap selanjutnya adalah mengkonversi key yang telah diunduh tadi menjadi tipe privat key yang bisa digunakan oleh PuTTY. Kita akan menggunakan aplikasi
puttygen.exeBuka aplikasi puttygen.exe kemudian klik tombol
Load.
Cari privat key yang sudah diunduh tadi. Lalu
Open.
Jika pada saat membuat key di server tadi kalian menggunakan passphrase, maka untuk membuka key ini kalian akan diminta untuk memasukkan passphrase tersebut.
Setelah file berhasil diimpor, selanjutnya kita save file tersebut. Pilih
Save private key.
Simpan file dengan tipe ekstensi
.ppk (PuTTY Private Key).
Sekarang kita coba akses remote ssh menggunakan PuTTY. Buka aplikasinya, kemudian isi kolom hostname dan port number.
Kemudian masuk ke menu di samping kiri, Connection > SSH > Auth. Masukkan private key, kemudian Open.
Jika kalian tidak menggunakan passphrase ketika proses generate key tadi, maka akan langsung masuk ke dalam server. Apabila menggunakan passphrase, maka kalian akan diminta untuk memasukan passphrase-nya.
Pada tutorial ini, user yang digunakan untuk login remote ssh adalah user xenial (bukan root). Apabila kalian ingin menggunakan user root, maka pada saat proses generate key harus dilakukan oleh user root.
Tambahan :Untuk lebih meningkatkan keamanan dalam melakukan remote ssh, kita bisa menonaktifkan autentikasi password. Dengan begitu client hanya dapat mengakses server menggunakan key.
Untuk menonaktifkan autentikasi password, edit file sshd_config. Kemudian ubah nilai pada baris PasswordAuthentication menjadi no. Seperti ini :
PasswordAuthentication no
Dengan catatan, ketika kita hendak membuat key baru untuk client yang lain misalnya, autentikasi password ini perlu diaktifkan kembali. Karena autentikasi tersebut akan digunakan ketika client akan mengunduh private key atau mengupload public key ke server.
Demikianlah tutorial mengakses remote SSH menggunakan autentikasi key. Sebenarnya masih ada tutorial untuk membuat key di sisi client, namun agar postingan ini tidak terlalu panjang, maka akan dilanjut di postingan yang lainnya.