Konfigurasi Kunci SSH di Debian 11

2023-10-19 · 8 mnt baca

PendahuluanPendahuluan

SSH atau secure shell adalah protokol terenkripsi yang digunakan untuk mengelola dan berkomunikasi dengan server. Saat bekerja dengan server Debian, kemungkinan besar Anda akan menghabiskan sebagian besar waktu di sesi terminal yang terhubung ke server melalui SSH.

Dalam panduan ini, saya akan fokus pada pengaturan kunci SSH untuk instalasi Debian 11 standar. Kunci SSH menyediakan cara mudah dan aman untuk masuk ke server dan direkomendasikan untuk semua pengguna.

Langkah 1 - Buat RSA Key PairLangkah 1 - Buat RSA Key Pair

RSA Key Pair adalah sepasang kunci kriptografi yang digunakan dalam sistem enkripsi RSA. Langkah pertama adalah membuat pasangan kunci di klien (komputer Anda):

ssh-keygen

Secara default ssh-keygen akan membuat pasangan kunci RSA 3072-bit, yang cukup aman untuk sebagian besar kasus penggunaan (Anda juga dapat menggunakan parameter perintah secara opsional, -b 4096 untuk membuat kunci 4096-bit).

Setelah menjalankan perintah tersebut, Anda akan melihat output berikut:

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

Tekan enter untuk menyimpan pasangan kunci ke direktori .ssh di direktori home Anda, atau tentukan sendiri direktori alternatifnya.

Jika Anda sebelumnya telah membuat pasangan kunci SSH, Anda mungkin melihat peasn perintah berikut:

Output
/home/fahmi/.ssh/id_rsa already exists.
Overwrite (y/n)?

Jika Anda memilih untuk menimpa kunci, Anda tidak akan dapat mengautentikasi server menggunakan kunci sebelumnya. Berhati-hatilah saat menentukan pilihan ini, karena ini adalah proses yang merusak dan tidak dapat dibatalkan.

Kemudian Anda akan melihat pesan perintah berikut:

Output
Enter passphrase (empty for no passphrase):

Di sini, Anda dapat memasukkan kata sandi yang kuat dan aman, yang sangat direkomendasikan. Kata sandi ini menambahkan lapisan keamanan tambahan untuk mencegah pengguna yang tidak berwenang masuk ke server.

Anda kemudian akan melihat output berikut:

Output
Your identification has been saved in /fahmi/.ssh/id_rsa.
Your public key has been saved in /fahmi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM fahmi@fabrikam
The key's randomart image is:
+---[RSA 3072]----+
|         oo .O^XB|
|        .  +.BO%B|
|        . = .+B+o|
|       o o o . =.|
|        S .   . =|
|               o.|
|               .o|
|            E o..|
|             . ..|
+----[SHA256]-----+

Sekarang, Anda sudah memiliki kunci public dan private yang dapat digunakan untuk melakukan autentikasi. Langkah berikutnya adalah menempatkan kunci publik di server Anda sehingga Anda dapat menggunakan autentikasi berbasis kunci SSH untuk masuk.

Langkah 2 - Salin Kunci Public ke ServerLangkah 2 - Salin Kunci Public ke Server

Cara tercepat untuk menyalin kunci publik Anda ke server adalah dengan menggunakan utilitas bernama ssh-copy-id. Karena kemudahannya, metode ini sangat disarankan. Jika Anda tidak memilikinya ssh-copy-id di komputer klien, Anda dapat menggunakan salah satu dari dua metode alternatif yang disertakan di bagian ini (metode salin melalui SSH berbasis kata sandi atau menyalin secara manual).

Salin via ssh-copy-idSalin via ssh-copy-id

ssh-copy-id ini disertakan secara default di banyak sistem operasi. Agar metode ini berfungsi, Anda harus sudah memiliki akses ke server Anda berbasis kata sandi.

Untuk menggunakan utilitas ini, Anda perlu menentukan remote host (dalam hal ini, server) yang ingin Anda sambungkan dan akun pengguna yang memiliki akses SSH dengan kata sandi. Sintaksisnya adalah:

ssh-copy-id username@remote_host

Anda mungkin melihat pesan perintah berikut:

Output
The authenticity of host 'XXX.X.XXX.X (XXX.X.XXX.X)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Pesan tersebut mengindikasikan bahwa komputer Anda belum mengenali remote host. Ini akan terjadi saat pertama kali Anda terhubung ke host baru. Ketik “yes” dan tekan ENTER untuk melanjutkan.

Selanjutnya, utilitas ini akan menscan id_rsa.pub lokal Anda untuk kunci yang telah kita buat sebelumnya. Saat menemukan kunci tersebut, utilitas akan meminta Anda memasukkan kata sandi pengguna remote host:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
-- if you are prompted now it is to install the new keys

username@XXX.X.XXX.X's password:

Masukan kata sandi (pengetikan Anda tidak akan ditampilkan untuk alasan keamanan) dan tekan ENTER. Utilitas akan terhubung ke akun pada remote host menggunakan kata sandi yang Anda berikan. Kemudian, utilitas akan menyalin konten kunci ~/.ssh/id_rsa.pub ke dalam direktori ~/.ssh yang disebut authorized_keys.

Anda akan melihat pesan output berikut:

Output
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@XXX.X.XXX.X'"
and check to make sure that only the key(s) you wanted were added.

Pada langkah ini, kunci id_rsa.pub Anda telah disalin ke akun pengguna remote host. Anda dapat melanjutkan ke Langkah 3.

Salin via SSHSalin via SSH

Jika Anda tidak memiliki ssh-copy-id, tapi Anda masih memiliki akses SSH berbasis kata sandi ke akun di server Anda, Anda dapat menyalinnya menggunakan metode SSH konvensional.

Kita dapat melakukannya dengan menggunakan perintah cat untuk membaca konten kunci SSH publik di komputer lokal kita dan menyalinnya melalui koneksi SSH server.

Sebelumnya, kita perlu memastikan bahwa direktori ~/.ssh tersebut ada dan memiliki izin yang benar sesuai dengan akun yang kita gunakan.

Jalankan perintah ini untuk menyalin kunci id_rsa.pub di komputer lokal Anda ke remote host (ganti username dan remote_host menjadi nama pengguna dan alamat server Anda):

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh &&
touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Anda akan melihat output perintah tersebut:

Output
The authenticity of host 'XXX.X.XXX.X (XXX.X.XXX.X)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Pesan tersebut mengindikasikan bahwa komputer Anda belum mengenali remote host. Ini akan terjadi saat pertama kali Anda terhubung ke host baru. Ketik “yes” dan tekan ENTER untuk melanjutkan.

Anda akan diminta memasukkan kata sandi akun pengguna remote host atau server:

Output
username@203.0.113.1's password:

Setelah memasukkan kata sandi, konten kunci id_rsa.pub Anda akan disalin ke file authorized_keys akun pengguna remote host atau server. Anda dapat melanjutkan ke Langkah 3 jika berhasil.

Salin ManualSalin Manual

Jika Anda tidak memiliki akses SSH berbasis kata sandi ke server Anda, Anda harus melakukan proses di atas secara manual.

Kita akan secara manual menambahkan konten kunci id_rsa.pub Anda ke berkas ~/.ssh/authorized_keys di server.

Untuk menampilkan konten kunci id_rsa.pub, ketik ini ke komputer lokal Anda:

cat ~/.ssh/id_rsa.pub

Anda akan melihat konten kuncinya, yang seharusnya terlihat seperti ini:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gG ... A5GyNM= demo@local

Akses server Anda menggunakan metode apa pun yang tersedia. Setelah Anda memiliki akses ke akun Anda di server, Anda harus memastikan direktori ~/.ssh tersebut sudah ada.

mkdir -p ~/.ssh

Sekarang, Anda dapat membuat atau mengubah berkas authorized_keys berkas di dalam direktori ~/.ssh server. Anda dapat menyalin konten kunci id_rsa.pub ke berkas ~/.ssh/authorized_keys di server:

echo public_key_string >> ~/.ssh/authorized_keys

Ganti public_key_string dengan output dari cat ~/.ssh/id_rsa.pub. Outputnya harus dimulai dengan ssh-rsa AAAA....

Terakhir, kita akan memastikan bahwa direktori ~/.ssh dan berkas authorized_keys telah diatur izinnya:

chmod -R go= ~/.ssh

Ini secara rekursif menghapus semua izin grup dan other untuk direktori ~/.ssh tersebut. Pastikan bahwa direktori ~/.ssh tersebut hanya milik pengguna.

chown -R fahmi:fahmi ~/.ssh

Sekarang Anda dapat mencoba autentikasi tanpa kata sandi dengan server Debian 11 Anda.

Langkah 3 - Akses Server dengan SSH KeyLangkah 3 - Akses Server dengan SSH Key

Jika Anda berhasil menyelesaikan salah satu bagian langkah di atas, Anda seharusnya sudah dapat masuk ke server tanpa kata sandi.

ssh fahmi@remote_host

Jika ini pertama kalinya Anda terhubung ke host ini menggunakan SSH key, Anda mungkin akan melihat pesan seperti ini:

Output
The authenticity of host 'XXX.X.XXX.X (XXX.X.XXX.X)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Jika SSH Key Anda tidak diproteksi kata sandi, Anda akan langsung masuk ke server. Tapi Jika Anda memproteksinya dengan kata sandi saat membuat kunci, Anda akan diminta untuk memasukkannya (sekali lagi bahwa ketikan kata sandi tidak akan ditampilkan dalam sesi terminal demi keamanan). Setelah mengautentikasi, sesi shell baru akan terbuka dengan akun yang dikonfigurasi di server Debian.

Jika autentikasi berbasis kunci SSH berhasil, lanjutkan untuk mempelajari cara mengamankan sistem Anda lebih lanjut dengan menonaktifkan autentikasi kata sandi.

Langkah 4 - Nonaktifkan Otentikasi Kata Sandi ServerLangkah 4 - Nonaktifkan Otentikasi Kata Sandi Server

Jika Anda sudah dapat masuk ke akun Anda menggunakan kunci SSH tanpa kata sandi, berarti Anda telah berhasil mengonfigurasi autentikasi berbasis kunci SSH ke akun server Anda. Namun, mekanisme autentikasi berbasis kata sandi Anda masih aktif, yang berarti server Anda masih rentan terhadap serangan brute-force.

Sebelum menyelesaikan langkah-langkah di bagian ini, pastikan Anda sudah mengonfigurasi autentikasi berbasis kunci SSH. Lebih baik lagi, Anda sudah mengonfigurasi autentikasi berbasis kunci SSH untuk akun non-root di server.

Langkah ini akan menolak login berbasis kata sandi, jadi pastikan lagi bahwa Anda masih bisa mendapatkan hak akses administratif.

Setelah Anda mengonfirmasi bahwa Anda masih memiliki hak akses administratif, Anda dapat masuk ke server dengan kunci SSH, baik sebagai pengguna root atau dengan akun yang memiliki hak akses sudo. Kemudian, buka berkas konfigurasi daemon SSH:

sudo nano /etc/ssh/sshd_config

Di konfigurasi ini, cari baris pengaturan PasswordAuthentication. Perintah ini mungkin diberi tanda komentar #. Hapus komentar pada baris tersebut dan tetapkan nilainya menjadi no. Ini akan menonaktifkan akses Anda untuk masuk melalui SSH menggunakan kata sandi:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

Simpan dan tutup pengaturan setelah selesai dengan menekan CTRL + X, lalu Y untuk mengonfirmasi penyimpanan. Terakhir ENTER untuk keluar dari nano. Untuk menerapkan perubahan ini, kita perlu merestart service SSH:

sudo systemctl restart ssh

Untuk pencegahan, buka terminal baru dan uji apakah layanan SSH berfungsi dengan benar sebelum menutup sesi ini:

ssh username@remote_host

Setelah Anda memverifikasi service SSH berjalan lancar, Anda dapat menutup semua sesi server saat ini dengan aman.

SSH di server Debian Anda sekarang hanya merespons kunci SSH. Otentikasi berbasis kata sandi telah berhasil dinonaktifkan.

KesimpulanKesimpulan

Sekarang Anda sudah mengonfigurasi autentikasi berbasis kunci SSH di server, yang memungkinkan Anda masuk tanpa memberikan kata sandi akun.