Otentikasi OpenSSH di FreeBSD dengan ssh-keygen ssh-agent ssh-add

· 2 min read

SSH (atau secure shell) merupakan protokol jaringan SSH yang melindungi komunikasi dengan server dengan mengenkripsi data. SSH merupakan cara yang pal

Pada artikel sebelumnya, kita telah banyak membahas tentang protokol SSH beserta aplikasi OpenSSH-nya. Artikel ini membahas tentang cara konfigurasi dan penggunaan server SSH serta klien SSH pada sistem operasi FreeBSD. Pada artikel ini, saya ingin membahas tentang autentikasi SSH berbasis pasangan kunci, sekaligus membahas program lain dari paket perangkat lunak tersebut, yaitu protokol SSH, pada sistem FreeBSD.

SSH (atau secure shell) merupakan protokol jaringan SSH yang melindungi komunikasi dengan server dengan mengenkripsi data. SSH merupakan cara yang paling aman dan umum digunakan untuk berinteraksi antara komputer server dengan komputer klien. Ada beberapa metode autentikasi, pada artikel ini kami hanya menjelaskan autentikasi SSH tanpa kata sandi.


1. Bagaimana cara kerja kunci SSH?

Setiap Server SSH dapat mengautentikasi klien dengan berbagai cara, yang paling umum adalah autentikasi berbasis kata sandi dan "Cara Mengkonfigurasi Server OpenSSH di FreeBSD". Kerugian utama kata sandi adalah kata sandi biasanya dibuat secara manual, sehingga sangat sederhana dan pendek, serta mudah diretas atau diambil. Kunci SSH menawarkan alternatif yang lebih aman dan terjamin daripada kata sandi. Pasangan kunci SSH dapat digunakan untuk autentikasi, tetapi sebagai ganti kata sandi, setiap pasangan kunci SSH terdiri dari kunci pribadi dan kunci publik.

Kunci pribadi berfungsi seperti kata sandi biasa dan disimpan di komputer klien. Jika pihak ketiga mengetahui kunci pribadi Anda, mereka akan dapat mengakses server dan mencuri semua data Anda. Biasanya panjang kunci pribadi minimal 2048 bit. Anda juga dapat melindunginya dengan frasa sandi (ini adalah kata sandi yang diminta saat Anda mencoba menggunakan kunci pribadi). Frasa sandi dapat melindungi kunci pribadi jika terjadi akses yang tidak sah.

Sementara itu, kunci publik yang sesuai dapat diungkapkan secara bebas. Kunci publik digunakan untuk mengenkripsi pesan yang hanya dapat didekripsi menggunakan kunci pribadi. Untuk menyiapkan autentikasi berdasarkan kunci SSH, Anda perlu menambahkan kunci publik ke akun pengguna di server jarak jauh dan biasanya disimpan di direktori ".ssh/authorized_keys".

Saat klien mencoba menghubungi server jarak jauh, server SSH akan memverifikasi kunci pribadi klien, kunci tersebut harus cocok dengan salah satu kunci publik server. Jika kedua kunci tersebut cocok, klien berhasil mengautentikasi dan dapat memulai sesi.

Secara umum, prinsip otentikasi kunci publik dalam protokol SSH adalah sebagai berikut:
  1. Menggunakan program ssh-keygen, untuk membuat pasangan kunci publik dan kunci privat.
  2. Kucni yang dihasilkan akan dirahasiakan dan tidak akan pernah diperlihatkan kepada siapa pun.
  3. Kunci publik disalin ke server SSH jarak jauh dan ditempatkan dalam berkas khusus. Di FreeBSD secara default, kunci publik tersebut terletak di ~/.ssh/authorized_keys.
  4. Klien mengirimkan kunci publiknya ke server SSH dan meminta autentikasi menggunakan kunci ini.
  5. Server akan memeriksa direktori ~/.ssh/authorized_keys. Jika kunci ditemukan, server SSH mengirimkan pesan ke klien yang dienkripsi dengan kunci publik pengguna yang ditemukan.
  6. Klien harus mendekripsi pesan tersebut menggunakan kunci privatnya. Jika kunci privat dilindungi kata sandi, program ssh akan meminta pengguna untuk memasukkan kata sandi, yang akan mendekripsi kunci itu sendiri terlebih dahulu.
  7. Jika pesan didekripsi, kunci publik dan privat yang benar dianggap cocok dan pengguna diberikan akses ke sistem.

2. Membuat kunci SSH menggunakan ssh-keygen

Pada komputer klien tempat Anda akan terhubung ke server jarak jauh OpenSSH, Anda perlu membuat sepasang kunci (publik dan privat). Kunci privat disimpan di klien (jangan berikan kepada siapa pun), dan kunci publik harus disalin ke direktori ~/.ssh/authorized_keys di server SSH. Untuk membuat kedua kunci ini, gunakan utilitas ssh-keygen. Secara default, utilitas ini membuat kunci RSA 2048-bit.

Kita akan membuat sepasang kunci RSA, ini adalah format yang direkomendasikan. Secara default, utilitas ssh-keygen akan menghasilkan 2 file:
  1. ~/. ssh/id_rsa (private key), dan
  2. ~/. ssh/id_rsa. pub (public key)
root@ns6:~ # ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): router1
Enter same passphrase again: router1
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:QlRa74+s1YELKSyHGQUwUPkdyZFM/3cz7UL9DK2+gJU root@ns6
The key's randomart image is:
+---[RSA 4096]----+
|.o+o.===o        |
|  .. o*+ .       |
|   ...o.. .      |
|    .*.  + . . + |
|    + = S + E * +|
|     o o o O + B.|
|          * + o +|
|         o   o . |
|        .     o. |
+----[SHA256]-----+
Dalam contoh skrip di atas, kami membuat kata sandi "router1" untuk dua kunci SSH.

3. Konfigurasi Autentikasi Kunci Publik di Server SSH

Untuk mengaktifkan kedua kunci ini, server SSH harus dikonfigurasi. Server SSH (dalam contoh ini, ini adalah komputer jarak jauh dengan FreeBSD 13.2 dan layanan OpenSSH yang dikonfigurasi). Sekarang salin kunci publik ke server SSH jarak jauh.

Contoh perintah
cat id_rsa.pub | ssh username@IPaddress "cat >> ~/.ssh/authorized_keys"
root@ns6:~ # cd .ssh
root@ns6:~/.ssh # ls
id_rsa          id_rsa.pub
root@ns6:~/.ssh # cat id_rsa.pub | ssh root@192.168.5.2 "cat >> ~/.ssh/authorized_keys"
The authenticity of host '192.168.5.2 (192.168.5.2)' can't be established.
ED25519 key fingerprint is SHA256:WpdCFPbgIgcvkDmCr8Cw1XWvU9Yej73honnnS34YsP8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.5.2' (ED25519) to the list of known hosts.
root@192.168.5.2's password: router
root@ns6:~/.ssh # ls
authorized_keys id_rsa          id_rsa.pub      known_hosts     known_hosts.old
root@ns6:~/.ssh #
Dalam contoh skrip di atas, kami menggunakan nama pengguna "root" dengan kata sandi "router", karena router adalah kata sandi untuk masuk ke pengguna root. Sekarang Anda telah menambahkan kunci publik untuk pengguna jarak jauh dan server dapat menerima kunci pribadi untuk autentikasi.


4. Menggunakan ssh-agent dan ssh-add

Seperti yang disebutkan dalam uraian di atas, setiap kunci privat selalu dilindungi oleh kata sandi. Bagi pengguna, hal ini menyebabkan ketidaknyamanan, pengguna harus memasukkan kata sandi setiap kali mereka terhubung ke server SSH jarak jauh. Dengan kunci publik, pengguna tidak harus memasukkan kata sandi untuk terhubung ke server SSH. Dalam hal ini OpenSSH telah menyediakan ssh-agent dan ssh-add.

Setelah kunci dibuat, Anda dapat menambahkan kunci privat ke layanan Agen SSH, dan Anda dapat dengan mudah mengelola kunci privat untuk autentikasi. Utilitas ssh-agent dan ssh-add memungkinkan Anda menyimpan kunci SSH di memori sehingga Anda tidak perlu mengetikkan frasa sandi setiap kali menggunakan kunci tersebut. Utilitas ssh-agent menyediakan proses autentikasi dengan kunci rahasia yang dimuat di dalamnya; untuk melakukan ini, utilitas ssh-agent harus memulai proses eksternal.

Untuk menggunakan ssh-agent di shell, berikan shell sebagai parameter perintah. Jadi, jalankan ssh-agent.
root@ns6:~/.ssh # ssh-agent csh
root@ns6:~/.ssh # ssh-add
Enter passphrase for /root/.ssh/id_rsa: router1
Identity added: /root/.ssh/id_rsa (root@ns6)
root@ns6:~/.ssh #
Setelah semuanya dikonfigurasi, edit file "/etc/ssh/sshd_config", dan ubah parameter di bawah ini.

PubkeyAuthentication yes
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

Mulai ulang daemon SSH di FreeBSD.
root@ns6:~/.ssh # service sshd restart
Anda telah berhasil menyiapkan autentikasi SSH di FreeBSD dengan menggunakan kunci RSA publik. Sekarang Anda dapat menggunakan metode autentikasi untuk mengakses server SSH jarak jauh dengan aman, memanfaatkan penerusan porta secara otomatis di terowongan SSH, menjalankan skrip, dan tugas otomatisasi lainnya.
Subscribe on LinkedIn Otentikasi OpenSSH di FreeBSD dengan ssh-keygen ssh-agent ssh-add

Enclosures Link: Otentikasi OpenSSH di FreeBSD dengan ssh-keygen ssh-agent ssh-add

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar