Panduan Praktis Lengkap SSH di Ubuntu - Mulai dari Koneksi, Port Forwarding, hingga Konfigurasi Keamanan Sekaligus

Ikhtisar

SSH (Secure Shell) adalah protokol jaringan standar yang sangat penting untuk mengelola server Linux jarak jauh. Pada artikel ini, kita akan mempelajari langkah demi langkah mulai dari membangun server OpenSSH di lingkungan Ubuntu, autentikasi kunci publik tanpa kata sandi, SSH port forwarding untuk kebutuhan jaringan praktis, hingga tips penting penguatan keamanan server.

1. Instalasi Server OpenSSH dan Mengaktifkan Layanan

Untuk menyediakan layanan akses jarak jauh pada sistem Ubuntu, perbarui daftar paket terbaru dan instal paket openssh-server.

sudo apt-get update -qq && sudo apt-get install -y openssh-server

Jalankan perintah systemctl enable --now ssh untuk mengaktifkan layanan SSH agar otomatis berjalan saat booting serta langsung menjalankannya saat ini juga.

sudo systemctl enable –now ssh

Periksa apakah daemon layanan SSH (sshd) saat ini beroperasi dengan normal dalam status aktif (active (running)).

sudo systemctl status ssh –no-pager

Jalankan perintah ss -tulpn | grep :22 untuk memastikan port default SSH, yaitu port 22, berada dalam status mendengarkan (LISTEN) dan siap menerima koneksi jaringan.

ss -tulpn | grep :22

2. Membuat dan Mendaftarkan Pasangan Kunci SSH untuk Akses Tanpa Kata Sandi

Buat direktori ~/.ssh untuk menyimpan file kunci SSH secara aman dan atur izin aksesnya ke 700 agar hanya pemilik yang dapat mengaksesnya.

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Jalankan perintah test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 untuk membuat pasangan kunci baru berbasis algoritma Ed25519 yang memiliki keamanan dan performa tinggi jika belum tersedia.
Dari hasil eksekusi perintah, Anda dapat mengonfirmasi bahwa kunci privat (id_ed25519) dan kunci publik (id_ed25519.pub) telah berhasil dibuat.

test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N ’’ -f ~/.ssh/id_ed25519

Tambahkan isi kunci publik yang telah dibuat ke dalam file daftar izin autentikasi, yaitu ~/.ssh/authorized_keys.

cat ~/.ssh/id_ed25519.pub » ~/.ssh/authorized_keys

Batasi izin file authorized_keys ke 600 guna menjaga keamanan file daftar kunci autentikasi dan memenuhi pemeriksaan izin ketat oleh daemon SSH.

chmod 600 ~/.ssh/authorized_keys

Tentukan kunci privat Ed25519 yang telah dibuat untuk mencoba koneksi ke alamat loopback lokal (127.0.0.1) dan verifikasi apakah autentikasi berbasis kunci berfungsi dengan baik.
Hasil eksekusi perintah menampilkan pesan keberhasilan koneksi autentikasi kunci lokal tanpa perlu memasukkan kata sandi.

ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1 ’echo SSH 로컬 키 인증 접속 성공!’

3. Tunneling Jaringan Praktis: Latihan SSH Port Forwarding

Perbarui daftar paket terbaru dan instal paket curl serta python3 untuk menjalankan server web dan melakukan pengujian permintaan HTTP.

sudo apt-get update -qq && sudo apt-get install -y curl python3

Jalankan perintah mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html untuk membuat direktori dokumen web yang akan digunakan dalam pengujian port forwarding serta membuat file HTML uji coba.

mkdir -p /tmp/webroot && echo ‘SSH Tunnel Test OK’ > /tmp/webroot/index.html

Jalankan perintah python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 & untuk menjalankan server web sederhana di latar belakang pada port 8080 yang bertindak sebagai layanan internal.

python3 -m http.server 8080 –directory /tmp/webroot >/dev/null 2>&1 &

Jalankan local port forwarding di latar belakang untuk meneruskan permintaan yang masuk ke port lokal 9090 menuju port 8080 pada server tujuan melalui tunnel aman SSH.
Setelah perintah dijalankan, tunnel port forwarding dibuat secara aman di latar belakang tanpa membebani sesi terminal Anda.

ssh -f -N -L 9090:localhost:8080 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1

Kirimkan permintaan HTTP ke port lokal 9090 yang telah diteruskan melalui tunnel SSH untuk memverifikasi apakah koneksi ke server web internal berhasil diteruskan dengan baik.
Hasil eksekusi perintah menampilkan konten respons dari server web internal 8080 yaitu <h1>SSH Tunnel Test OK</h1>, yang memastikan bahwa port forwarding bekerja dengan sempurna.

curl -s http://localhost:9090

Setelah pengujian port forwarding selesai, jalankan perintah pkill -f 'http.server 8080' untuk menghentikan proses server web pengujian yang sedang berjalan di latar belakang secara aman.

pkill -f ‘http.server 8080’

4. Konfigurasi Penguatan Keamanan Server SSH Praktis (sshd_config)

Cadangkan file konfigurasi dengan perintah sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak untuk mengantisipasi kesalahan selama perubahan konfigurasi dan mempertahankan konfigurasi aslinya.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Untuk meningkatkan keamanan, ubah nilai konfigurasi dengan menjalankan perintah sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config guna memblokir sepenuhnya login jarak jauh langsung oleh akun root.

sudo sed -i ’s/^#PermitRootLogin./PermitRootLogin no/’ /etc/ssh/sshd_config

Jalankan perintah sudo sshd -t untuk memeriksa terlebih dahulu secara aman apakah ada kesalahan sintaks atau salah ketik pada file konfigurasi server SSH yang telah diubah.
Setelah menjalankan perintah, tidak ada pesan kesalahan yang muncul, mengonfirmasi bahwa sintaks konfigurasi tidak memiliki masalah.

sudo sshd -t

Jalankan perintah grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료' untuk memastikan opsi pemblokiran login root (PermitRootLogin no) telah diterapkan dengan benar pada file konfigurasi.
Hasil eksekusi perintah menunjukkan bahwa PermitRootLogin no berhasil ditemukan, memastikan bahwa pengaturan keamanan telah diterapkan dengan sempurna.

grep -E ‘^(PermitRootLogin|PasswordAuthentication)’ /etc/ssh/sshd_config || echo ‘설정 검증 완료’

Sejauh ini, kita telah membahas poin-poin penting yang dibutuhkan dalam praktik di lingkungan Ubuntu, mulai dari koneksi dasar SSH, port forwarding, hingga pengaturan keamanan esensial.
Terapkan aturan keamanan yang telah dibahas ini secara bertahap untuk membangun lingkungan manajemen server yang lebih aman dan efisien.