Remote SSH Menggunakan Autentikasi Key



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.

Remote SSH Menggunakan Autentikasi Key

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 Linux
Sebelum 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.

Mengunduh private key dari server menggunakan scp

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].

autentikasi key ssh dari linux mint


Pada Windows
Untuk 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.

Tampilan 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.

Mencari file id_rsa menggunakan Find Files

Setelah muncul list file yang ada. Klik pada file yang akan diunduh yakni id_rsa, kemudian  pilih Download.

Mengunduh File id_rsa

Tahap selanjutnya adalah mengkonversi key yang telah diunduh tadi menjadi tipe privat key yang bisa digunakan oleh PuTTY. Kita akan menggunakan aplikasi puttygen.exe

Buka aplikasi puttygen.exe kemudian klik tombol Load.

Mengimpor private key yang sudah diunduh

Cari privat key yang sudah diunduh tadi. Lalu Open.

Mencari private key yang sudah diunduh

Jika pada saat membuat key di server tadi kalian menggunakan passphrase, maka untuk membuka key ini kalian akan diminta untuk memasukkan passphrase tersebut.

Memasukkan passphrase untuk mengimpor private key

Setelah file berhasil diimpor, selanjutnya kita save file tersebut. Pilih Save private key.

Menyimpan private key yang baru

Simpan file dengan tipe ekstensi .ppk (PuTTY Private Key).

Menyimpan Private Key

Sekarang kita coba akses remote ssh menggunakan PuTTY. Buka aplikasinya, kemudian isi kolom hostname dan port number.

Mengisi kolom login putty

Kemudian masuk ke menu di samping kiri, Connection > SSH > Auth. Masukkan private key, kemudian Open.

Mengkonfigurasi private key untuk putty

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 :
# Change to no to disable tunnelled clear text passwords
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.

Load Comments