Tutorial SSH: Menonaktifkan Login Menggunakan Password

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
SSH Tanpa Password
(Ilustrasi Rio Astamal)

TeknoCerdas.com – Salam cerdas untuk kita semua. SSH adalah salah satu cara paling aman untuk melakukan remote access ke sebuah server. Hal ini karena protokol SSH melakukan enkripsi terhadap paket yang dikirimkan. Tulisan ini adalah tutorial SSH untuk menonaktifkan otentikasi berbasis password.

Secara default untuk login ke remote server menggunakan SSH maka client harus melakukan koneksi menggunakan akun yang ada pada server. Format yang digunakan adalah user@server_addr. SSH server otomatis akan melakukan prompt kepada client untuk menginputkan password dari akun user.

Baca Juga
Remote Desktop Linux dengan NoMachine

Otentikasi berbasis password pada SSH tidak aman dan harusnya tidak digunakan. Hal ini karena pada otentikasi berbasis password terdapat peluang server akan mendapat serangan bruteforce. Yaitu mencoba segala kombinasi username dan password secara acak menggunakan tools.

Membuat SSH Key

Sebagai alternatif otentikasi berbasis password maka otentikasi berbasis SSH key dapat digunakan. Harus ada private dan public key yang digunakan dalam proses otentikasi ini. Public key disimpan disisi server dan private key tetap di komputer lokal client. Private key tidak boleh diketahui oleh pihak manapun yang tidak berkepentingan.

Simpan juga dengan baik-baik, karena jika private key hilang maka tidak bisa masuk ke server. Kecuali memiliki akses fisik atau dapat melakukan akses ke root disk secara langsung.

Jika belum memiliki private key maka untuk menghasilkan private dan public key dapat digunakan perintah ssh-keygen.

$ ssh-keygen -f ~/.ssh/teknocerdas.key

Perintah tersebut akan membuat private key pada file ~/.ssh/teknocerdas.key dan public key pada ~/.ssh/teknocerdas.key.pub.

Isi dari public key inilah yang harus disalin ke akun tertentu pada SSH server agar bisa masuk menggunakan SSH key. Lebih tepatnya ke dalam file $HOME/.ssh/authorized_keys. Pada contoh ini menggunakan root.

$ cat ~/.ssh/teknocerdas.key.pub | ssh root@server_addr 'cat >> $HOME/.ssh/authorized_keys -'

Sekarang coba login menggunakan SSH Key untuk memastikan.

$ ssh -i ~/.ssh/teknocerdas.key root@server_addr

Harusnya sekarang SSH tidak menanyakan password dan langsung masuk ke shell dari server.

Menonaktifkan Otentikasi Password

Untuk server berbasis Linux sebagian besar konfigurasi SSH server ada pada file /etc/ssh/sshd_config. Sekarang masuk ke server lalu edit file tersebut.

$ sudo vim /etc/ssh/sshd_config

Cari dan ubah konfigurasi berikut.

PasswordAuthentication no
ChallengeResponseAuthentication no

Setelah itu simpan kembali file tersebut. Jangan lupa untuk melakukan reload atau restart SSH server.

$ systemctl restart sshd

Sekarang mari kita coba login dengan password. Harusnya sekarang ditolak.

$ ssh -o PubkeyAuthentication=no root@server_addr
root@server_addr: Permission denied (publickey).

Dapat terlihat sekarang login menggunakan password ditolak. Dan hanya login menggunakan SSH key yang diterima.

$ ssh -i ~/.ssh/teknocerdas.key root@server_addr
...
Last login: Wed Jan 20 05:45:59 2021 from 36.68.222.136
root@li819-116:~#