Panduan Praktik Lengkap SSH di Ubuntu

Gambaran Umum

Artikel ini membahas konsep dasar dan penggunaan inti SSH (Secure Shell), alat esensial untuk manajemen server Linux dan pekerjaan jarak jauh. Mulai dari instalasi paket klien, koneksi jarak jauh dasar, pembuatan pasangan kunci SSH yang aman beserta konfigurasi autentikasi tanpa kata sandi, hingga profil SSH config dan teknik port forwarding yang sangat berguna dalam praktik kerja nyata, semuanya disajikan langkah demi langkah dengan perintah terminal yang mudah dipahami.

1. Memeriksa SSH Client dan Koneksi Jarak Jauh Dasar

Untuk melanjutkan praktik koneksi jarak jauh SSH, instal paket openssh-client dan perbarui ke versi terbaru.

apt-get update -qq && apt-get install -y openssh-client

Perintah ssh -V digunakan untuk memeriksa informasi versi klien OpenSSH yang terpasang pada sistem.
⚙️ [Opsi Utama]

-p : Menentukan nomor port tertentu yang digunakan oleh server jarak jauh, selain port default 22.
-i : Menentukan jalur file kunci privat (Private Key) yang akan digunakan untuk autentikasi koneksi sebagai pengganti kata sandi.
-v : Menampilkan pesan debug secara mendetail untuk memeriksa proses koneksi dan penyebab masalah yang terjadi.
-C : Mengaktifkan kompresi saat transfer data untuk menghemat bandwidth jaringan.
-o : Menentukan opsi yang biasanya didefinisikan dalam file konfigurasi (~/.ssh/config) (misalnya: ConnectTimeout) langsung dari baris perintah.
-L : Mengatur local port forwarding untuk meneruskan lalu lintas ke layanan jaringan jarak jauh.
-R : Mengatur remote port forwarding agar server jarak jauh dapat mengakses layanan lokal.

ssh -V

Perintah ssh -p 22 -o ConnectTimeout=5 [email protected] mencoba melakukan koneksi ke host jarak jauh yang ditentukan dengan mengatur port 22 dan batas waktu koneksi (timeout) 5 detik.
Hal ini mencegah waktu tunggu tak terbatas jika terjadi keterlambatan koneksi dan memungkinkan verifikasi status koneksi secara cepat.

ssh -p 22 -o ConnectTimeout=5 testuser@127.0.0.1 || true

2. Membuat Pasangan Kunci SSH (Key Pair) dan Mengatur Izin yang Aman

Siapkan direktori untuk menyimpan file kunci SSH secara aman dan batasi izin aksesnya hanya untuk pemilik menggunakan perintah mkdir -p ~/.ssh && chmod 700 ~/.ssh.

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

Perintah ssh-keygen -t ed25519 -C 'lab-demo@ubuntu' -f ~/.ssh/id_ed25519 -N '' menghasilkan pasangan kunci SSH baru yang bekerja tanpa memasukkan kata sandi menggunakan algoritma Ed25519, standar enkripsi modern.
Dari hasil eksekusi perintah, Anda dapat memverifikasi bahwa kunci privat (id_ed25519), kunci publik (id_ed25519.pub), serta fingerprint kunci yang unik telah berhasil dibuat.

ssh-keygen -t ed25519 -C ’lab-demo@ubuntu’ -f ~/.ssh/id_ed25519 -N ‘’

Untuk memenuhi persyaratan keamanan ketat dari daemon SSH, gunakan perintah chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub agar kunci privat hanya dapat dibaca dan ditulis oleh pemilik, sedangkan kunci publik dapat dibaca oleh siapa saja.

chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub

Perintah ls -la ~/.ssh digunakan untuk memeriksa secara detail daftar file yang dibuat di dalam direktori serta status izin keamanan yang diterapkan.
Melalui output tersebut, Anda dapat memverifikasi bahwa izin yang dimaksud telah diterapkan dengan benar: direktori .ssh adalah drwx------ (700), kunci privat adalah -rw------- (600), dan kunci publik adalah -rw-r--r-- (644).

ls -la ~/.ssh

3. Mendaftarkan Kunci Publik untuk Login Tanpa Kata Sandi (ssh-copy-id)

Buat file untuk menyimpan kunci publik yang akan digunakan saat koneksi jarak jauh, lalu atur izin aksesnya agar hanya dapat dibaca dan ditulis oleh pemilik menggunakan perintah touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys.

touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

Jalankan perintah cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys untuk menambahkan konten kunci publik yang telah dibuat ke dalam daftar autentikasi yang diizinkan.

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

Perintah ssh-keygen -l -f ~/.ssh/authorized_keys memeriksa informasi fingerprint dari file kunci autentikasi yang terdaftar untuk memvalidasi apakah kunci publik telah diterapkan dengan benar.
Melalui output yang ditampilkan, Anda dapat memastikan bahwa kunci publik Ed25519 256-bit dan informasi komentar yang ditentukan saat pembuatan (lab-demo@ubuntu) telah terdaftar dengan tepat.

ssh-keygen -l -f ~/.ssh/authorized_keys

4. Menyederhanakan Perintah Koneksi yang Kompleks dengan File SSH Config

Definisikan alamat IP host jarak jauh, nama pengguna, nomor port, dan jalur kunci autentikasi di dalam file ~/.ssh/config agar Anda dapat terhubung dengan mudah menggunakan alias alih-alih mengetik informasi koneksi yang panjang.

cat « ‘EOF’ > ~/.ssh/config
Host dev-server
HostName 127.0.0.1
User testuser
Port 22
IdentityFile ~/.ssh/id_ed25519
EOF

Untuk mencegah masalah di mana klien SSH menolak file konfigurasi yang dinilai tidak aman, gunakan perintah chmod 600 ~/.ssh/config agar izin file diatur sehingga hanya dapat dibaca dan ditulis oleh pemilik.

chmod 600 ~/.ssh/config

Perintah cat ~/.ssh/config menampilkan konten file konfigurasi klien SSH yang telah dibuat untuk memeriksa status konfigurasinya.
Melalui output yang ditampilkan, Anda dapat memverifikasi bahwa hostname, akun pengguna, port, dan informasi kunci privat autentikasi untuk alias dev-server telah tersimpan dengan benar sesuai rencana.

cat ~/.ssh/config

5. Eksekusi Perintah Tunggal dan Tunneling SSH untuk Meningkatkan Produktivitas Kerja Jarak Jauh

Perintah ssh -V digunakan untuk memeriksa informasi versi klien OpenSSH yang saat ini terpasang pada sistem.

ssh -V

Perintah ssh -o BatchMode=yes -o ConnectTimeout=2 [email protected] 'uname -a; df -h' || true mengeksekusi langsung perintah untuk memeriksa informasi sistem dan penggunaan disk pada host jarak jauh tanpa masuk ke shell interaktif, kemudian mengembalikan hasilnya.
Dengan mengaturnya agar berjalan langsung tanpa menunggu input kata sandi, perintah tunggal ini dapat dijalankan dengan aman dalam skrip otomatisasi atau tugas batch.

ssh -o BatchMode=yes -o ConnectTimeout=2 testuser@127.0.0.1 ‘uname -a; df -h’ || true

Perintah ssh -f -N -L 8080:localhost:80 -o ConnectTimeout=2 [email protected] || true melakukan local port forwarding dengan membuat terowongan terenkripsi yang aman di latar belakang (background) tanpa mengeksekusi perintah jarak jauh, menghubungkan port 8080 pada sistem lokal ke port 80 pada server jarak jauh.
Melalui cara ini, Anda dapat mengakses layanan web internal atau basis data jarak jauh yang tidak dapat diakses langsung dari luar secara aman melalui port lokal.

ssh -f -N -L 8080:localhost:80 -o ConnectTimeout=2 testuser@127.0.0.1 || true

Sejauh ini, kita telah mempelajari langkah demi langkah di lingkungan Ubuntu, mulai dari koneksi jarak jauh dasar SSH, login tanpa kata sandi berbasis kunci untuk meningkatkan keamanan, hingga pemanfaatan port forwarding yang praktis.
Berdasarkan keterampilan SSH yang telah dipelajari melalui praktik langsung ini, silakan bangun lingkungan manajemen server jarak jauh yang lebih aman dan nyaman di masa mendatang.