Membuat Autentikasi Kunci Publik dan Pribadi SSH Server di Linux Ubuntu 18.10

Melanjutkan tulisan saya yang kemarin Konfigurasi SSH Server. Ketika melakukan instalasi OpenSSH, secara otomatis pasangan kunci publik dan kunci pribadi juga dibuat. OpenSSH secara otomatis akan membuat pasangan kunci tersebut untuk berbagai tipe enkripsi yaitu RSA1, RSA dan DSA. Pasangan kunci tersebut tersimpan di direktori /etc/ssh. OpenSSH menyediakan tool untuk membuat pasangan kunci publik dan pribadi, yaitu ssh-keygen.

Langkah 1: Membuat Pasangan Kunci Publik dan Pribadi

Jalankan perintah berikut di sisi klien

$ ssh-keygen

Secara default ssh-keygen membuat kunci 2048-bit RSA. Kemudian akan muncul beberapa dialog seperti berikut

Generating public/private rsa key pair.
Enter file in which to save the key (/home/haidar/.ssh/id_rsa):

Secara default kunci yang dibuat akan tersimpan di direktori sesuai pengguna yang membuat kunci tersebut, seperti contoh di atas yaitu /home/haidar/.ssh/id_rsa.pub untuk kunci publik dan /home/haidar/.ssh/id_rsa untuk kunci pribadi.

Lalu muncul dialog untuk passphrase kunci

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Sebenarnya untuk dialog passphrase diatas tidak wajib di isi, namun untuk meningkatkan keamanan kunci akan lebih baik jika di isi.

Jika berhasil seharusnya akan muncul kode seperti berikut:

Your identification has been saved in /home/haidar/.ssh/id_rsa.
Your public key has been saved in /home/haidar/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DQ6gLSLza19lbuMDXI3hL1u5DEPz4yH804alWGAbUjU haidar@haidar
The key's randomart image is:
+---[RSA 2048]----+
|    .    .E      |
|   o .  o  .     |
|+ o . .o.+       |
|.+ .  .oXo.      |
|  .  . *SB..     |
|   .  o+B O .    |
|  o   ..+& O     |
| . . . o+.O o    |
|    .   .. o     |
+----[SHA256]-----+

Langkah 2: Masukkan Kunci Publik di SSH Server

Selanjutnya copy file id_rsa.pub ke pangkal direktori remote pengguna dengan nama file authorized_keys pada direktori ~/.ssh/authorized_keys

Jalankan perintah berikut

$ ssh-copy-id username@remote_host -p 222

Disitu saya pakai opsi -p 222 karena port ssh nya tidak memakai port default yaitu port 22.

Kemudian akan muncul dialog seperti berikut

The authenticity of host '[192.168.1.2]:222 ([192.168.1.2]:222)' can't be established.
ECDSA key fingerprint is SHA256:f1mu+dGO4R4hxtvFzbIOHhOhnuZNI2xqrzdrhty0nyA.
Are you sure you want to continue connecting (yes/no)? yes

Setelah berhasil masuk akan muncul

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '222' 'haidar@192.168.1.2'"
and check to make sure that only the key(s) you wanted were added.

Sekarang kamu bisa melakukan login dengan private key yang telah kamu buat tadi.

Langkah 3: Disable Password Authentication

Jika sudah berhasil melakukan autentikasi login dengan kunci publik dan kunci pribadi, kita ubah beberapa direktif yang berada di berkas /etc/sshd_config agar meningkatkan keamanan ssh server.

Jalankan perintah berikut

$ sudo nano /etc/sshd_config

Cari dan ubah nilai direktif berikut:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

Simpan perubahan dan keluar… jangan lupa restart ssh server

$ sudo service ssh restart

dah gitu aja, see ya~