Panduan Lengkap Penyiapan SSH di Ubuntu: Instalasi, Penguatan Keamanan, Konfigurasi Lanjutan, dan Pemecahan Masalah

目次

1. Pendahuluan

Mengonfigurasi SSH di Ubuntu penting untuk mengelola server jarak jauh. SSH (Secure Shell) adalah protokol yang menyediakan komunikasi terenkripsi yang aman, memungkinkan pengguna mengakses server secara remote, menjalankan perintah, dan mentransfer file.

Artikel ini menjelaskan cara mengonfigurasi SSH di Ubuntu, mulai dari langkah instalasi dasar hingga langkah keamanan lanjutan.

1.1 Mengapa Mengonfigurasi SSH di Ubuntu?

1.1.1 Apa Itu SSH?

SSH (Secure Shell) adalah protokol yang memungkinkan komunikasi aman melalui jaringan. Umumnya digunakan untuk masuk ke server jarak jauh, mentransfer file, dan tunneling (port forwarding). Tidak seperti Telnet atau FTP tradisional, SSH mengenkripsi semua komunikasi, memberikan keamanan yang kuat.

1.1.2 Kapan SSH Diperlukan di Ubuntu

Skenario umum di mana SSH digunakan untuk mengelola Ubuntu secara remote meliputi:

  • Administrasi server cloud : Server Linux di AWS, GCP, Vultr, dan lainnya biasanya diakses melalui SSH.
  • Operasi jarak jauh di lingkungan LAN : Mengakses server internal atau mesin pengembangan secara remote.
  • Mengelola perangkat IoT : Mengendalikan sistem tertanam seperti Raspberry Pi secara remote.

Secara default, server SSH dinonaktifkan di Ubuntu, sehingga harus diinstal dan dikonfigurasi secara manual untuk mengaktifkan akses SSH.

2. Konfigurasi Dasar SSH

Untuk menggunakan SSH di Ubuntu, Anda harus menginstal server SSH (OpenSSH) dan mengkonfigurasinya dengan benar. Bagian ini menjelaskan cara menginstal SSH, menyesuaikan pengaturan dasar, mengkonfigurasi firewall, dan terhubung ke server.

2.1 Menginstal dan Memulai OpenSSH

2.1.1 Apa Itu OpenSSH?

OpenSSH (Open Secure Shell) adalah implementasi sumber terbuka dari protokol SSH. Ia mendukung koneksi jarak jauh, transfer file aman (SCP dan SFTP), serta port forwarding.

2.1.2 Menginstal OpenSSH

Ubuntu tidak menyertakan server SSH secara default, jadi instal dengan perintah di bawah ini:

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

Perintah ini memperbarui daftar paket dan menginstal server OpenSSH.

2.1.3 Memulai SSH dan Mengaktifkan Auto-Start

Setelah instalasi, mulai server SSH dan aktifkan startup otomatis:

sudo systemctl enable --now ssh

Opsi enable memastikan SSH mulai secara otomatis saat OS boot.

2.1.4 Memeriksa Status SSH

Verifikasi bahwa SSH sedang berjalan:

systemctl status ssh

Jika output menunjukkan active (running), SSH berfungsi normal:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

Jika menunjukkan inactive (dead) atau failed, mulai SSH secara manual:

sudo systemctl start ssh

2.2 Mengkonfigurasi Firewall (UFW)

Ubuntu menyertakan firewall sederhana bernama ufw (Uncomplicated Firewall). Anda harus mengizinkan koneksi SSH melaluinya.

2.2.1 Memeriksa Status UFW

sudo ufw status

Contoh output (inactive):

Status: inactive

Contoh output (active):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 Mengizinkan SSH

sudo ufw allow ssh

Atau secara eksplisit:

sudo ufw allow 22/tcp

2.2.3 Mengaktifkan UFW

sudo ufw enable

2.2.4 Memverifikasi Aturan UFW

sudo ufw status verbose

Contoh:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

2.3 Metode Koneksi SSH Dasar

Setelah SSH berjalan, sambungkan dari mesin klien.

2.3.1 Menyambung dari Linux/macOS

ssh username@server-ip-address

Contoh:

ssh user@192.168.1.100

Anda mungkin melihat peringatan keamanan pada koneksi pertama:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Ketik yes untuk melanjutkan.

2.3.2 Menghubungkan dari Windows

Anda dapat menggunakan PowerShell atau PuTTY.

Menggunakan PowerShell (Windows 10+ sudah termasuk SSH):

ssh username@server-ip-address

Menggunakan PuTTY:

  1. Unduh PuTTY dari situs resmi
  2. Buka PuTTY dan masukkan IP server di Host Name (or IP address)
  3. Pilih SSH sebagai tipe koneksi
  4. Klik Open dan masuk

Kesimpulan

Bagian ini mencakup dasar-dasar menyiapkan SSH di Ubuntu:

  • Cara menginstal dan memulai OpenSSH
  • Cara mengizinkan koneksi SSH dengan UFW
  • Cara menghubungkan dari Linux/macOS dan Windows

3. Memperkuat Keamanan SSH

SSH sangat kuat, tetapi membiarkannya dengan pengaturan default meningkatkan risiko keamanan. Penyerang sering melakukan upaya login brute-force atau pemindaian port. Memperkuat keamanan SSH sangat penting.

3.1 Menonaktifkan Login Root

Login root memberikan kontrol penuh atas sistem dan menjadi target utama bagi penyerang. Menonaktifkannya meningkatkan keamanan.

3.1.1 Langkah-langkah

  1. Edit file konfigurasi SSH:
    sudo nano /etc/ssh/sshd_config
    
  1. Ubah baris menjadi:
    PermitRootLogin no
    
  1. Restart SSH:
    sudo systemctl restart ssh
    
  1. Konfirmasi perubahan:
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

Jika outputnya PermitRootLogin no, pengaturan telah diterapkan.

3.2 Menonaktifkan Autentikasi Password dan Menggunakan Autentikasi Kunci

Autentikasi kunci publik lebih aman daripada password dan mengurangi risiko serangan brute-force.

3.2.1 Membuat Kunci SSH

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Ini menghasilkan dua file:

  • id_rsa (kunci pribadi) — simpan secara lokal, jangan pernah dibagikan
  • id_rsa.pub (kunci publik) — unggah ke server

3.2.2 Mengunggah Kunci Publik

ssh-copy-id username@server-ip-address

3.2.3 Menonaktifkan Autentikasi Password

sudo nano /etc/ssh/sshd_config

Edit:

PasswordAuthentication no

Restart SSH:

sudo systemctl restart ssh

3.3 Mengizinkan Akses SSH Hanya untuk Pengguna Tertentu

Untuk meningkatkan keamanan SSH, Anda dapat membatasi akses sehingga hanya pengguna tertentu yang diizinkan masuk.

3.3.1 Langkah-langkah Konfigurasi

  1. Buka file konfigurasi SSH /etc/ssh/sshd_config :
    sudo nano /etc/ssh/sshd_config
    
  1. Tambahkan pengguna yang diizinkan mengakses via SSH:
    AllowUsers username1 username2
    
  1. Restart SSH untuk menerapkan pengaturan:
    sudo systemctl restart ssh
    

3.4 Mengubah Port SSH

Karena port 22 sering menjadi target penyerang, mengubah port default dapat meningkatkan keamanan.

3.4.1 Langkah-langkah Konfigurasi

  1. Buka file konfigurasi SSH:
    sudo nano /etc/ssh/sshd_config
    
  1. Ubah pengaturan port, misalnya:
    Port 2200
    
  1. Restart SSH:
    sudo systemctl restart ssh
    

3.4.2 Memperbarui Pengaturan Firewall

Jika Anda mengubah port, perbarui UFW:

sudo ufw allow 2200/tcp

Periksa aturan baru:

sudo ufw status

3.5 Mencegah Serangan Brute-Force dengan Fail2Ban

Fail2Ban mendeteksi upaya login yang gagal dan memblokir IP penyerang untuk jangka waktu tertentu.

3.5.1 Instal Fail2Ban

sudo apt install fail2ban -y

3.5.2 Buat File Konfigurasi

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Buka file:

sudo nano /etc/fail2ban/jail.local

Ubah pengaturan:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Restart Fail2Ban

sudo systemctl restart fail2ban

3.5.4 Periksa Daftar Ban

sudo fail2ban-client status sshd

Kesimpulan

Bagian ini menjelaskan metode untuk meningkatkan keamanan SSH:

  • Nonaktifkan login root
  • Nonaktifkan otentikasi password dan aktifkan otentikasi kunci
  • Batasi akses SSH hanya untuk pengguna tertentu
  • Ubah port SSH
  • Gunakan Fail2Ban untuk memblokir percobaan tidak sah

Menerapkan pengaturan ini membantu menciptakan lingkungan SSH yang aman.

4. Konfigurasi SSH Lanjutan

Setelah konfigurasi dasar SSH dan penguatan keamanan selesai, Anda dapat melanjutkan ke fitur lanjutan untuk fleksibilitas dan keamanan yang lebih baik. Bagian ini membahas manajemen ssh.socket (Ubuntu 22.10+), terowongan SSH, mendengarkan pada beberapa port, dan kontrol akses berbasis IP.

4.1 Menggunakan ssh.socket pada Ubuntu 22.10+

Pada Ubuntu 22.10+, SSH dapat dikelola oleh ssh.socket alih‑alih ssh.service. Aktivasi berbasis socket ini memulai SSH hanya saat diperlukan, menghemat sumber daya sistem.

4.1.1 Periksa Status ssh.socket

sudo systemctl status ssh.socket

Contoh output (diaktifkan):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 Aktifkan atau Nonaktifkan ssh.socket

Aktifkan socket:

sudo systemctl enable --now ssh.socket

Kembalikan ke ssh.service klasik:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 Terowongan SSH (Port Forwarding)

Terowongan SSH membangun saluran komunikasi aman antara sistem lokal dan remote.

4.2.1 Port Forwarding Lokal

Berguna untuk menghubungkan secara aman ke basis data remote atau layanan internal.

Contoh: Akses server MySQL remote pada port 3306

ssh -L 3306:localhost:3306 username@server-ip-address

4.2.2 Port Forwarding Terbalik

Mengekspos layanan lokal melalui server remote.

Contoh: Publikasikan server web lokal pada port remote 8080

ssh -R 8080:localhost:80 username@server-ip-address

4.2.3 Port Forwarding Dinamis (Proxy SOCKS)

Gunakan SSH sebagai proxy SOCKS untuk penjelajahan anonim.

ssh -D 1080 username@server-ip-address

4.3 Mendengarkan pada Beberapa Port

SSH dapat mendengarkan pada lebih dari satu port untuk fleksibilitas di berbagai lingkungan jaringan.

4.3.1 Langkah‑langkah Konfigurasi

  1. Edit /etc/ssh/sshd_config :
    sudo nano /etc/ssh/sshd_config
    
  1. Tambahkan beberapa baris Port:
    Port 22
    Port 2200
    
  1. Restart SSH:
    sudo systemctl restart ssh
    
  1. Izinkan port baru dengan UFW:
    sudo ufw allow 2200/tcp
    

4.4 Izinkan SSH Hanya dari Alamat IP Tertentu

Membatasi akses SSH berdasarkan alamat IP memberikan kontrol keamanan yang kuat.

4.4.1 Konfigurasikan /etc/hosts.allow

sudo nano /etc/hosts.allow

Tambahkan alamat IP yang diizinkan:

sshd: 192.168.1.100

4.4.2 Konfigurasikan /etc/hosts.deny

sudo nano /etc/hosts.deny

Tolak semua yang lain:

sshd: ALL

Kesimpulan

Bagian ini mencakup topik konfigurasi SSH lanjutan:

  • Mengelola ssh.socket di Ubuntu 22.10+
  • Menggunakan terowongan SSH (port forwarding)
  • Mendengarkan pada beberapa port SSH
  • Membatasi akses SSH ke alamat IP tertentu

Menerapkan konfigurasi ini meningkatkan keamanan dan kegunaan.

5. Pemecahan Masalah SSH

Bahkan dengan konfigurasi yang benar, koneksi SSH kadang‑kadang dapat gagal. Bagian ini menjelaskan masalah SSH umum dan solusinya.

5.1 Ketika SSH Tidak Dapat Terhubung

Jika SSH mengembalikan Connection refused atau timeout, penyebab yang mungkin meliputi masalah layanan, konfigurasi port yang salah, atau pembatasan firewall.

5.1.1 Layanan SSH Tidak Berjalan

sudo systemctl status ssh

Solusi:

  • Jika inactive atau failed, restart SSH:
    sudo systemctl restart ssh
    
  • Aktifkan auto‑start:
    sudo systemctl enable ssh
    

5.1.2 Port SSH Tidak Terbuka

ssh -p 2200 username@server-ip-address

Periksa port yang terbuka:

sudo netstat -tulnp | grep ssh

Atau:

ss -tulnp | grep ssh

5.1.3 Firewall (UFW) Memblokir SSH

sudo ufw status

Izinkan SSH:

sudo ufw allow 22/tcp

Jika menggunakan port khusus:

sudo ufw allow 2200/tcp

5.2 Kesalahan Otentikasi

5.2.1 Nama Pengguna atau Kata Sandi Salah

ssh username@server-ip-address

5.2.2 Kunci Publik Tidak Terpasang dengan Benar

cat ~/.ssh/authorized_keys

Verifikasi bahwa itu cocok dengan id_rsa.pub lokal.

5.2.3 Izin yang Salah pada Direktori .ssh

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Juga pastikan:

chmod 755 /home/username

5.3 Koneksi SSH Tidak Stabil atau Pemutusan Tak Terduga

5.3.1 Sesuaikan ClientAliveInterval

ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh

5.3.2 Sesuaikan Pengaturan Klien Lokal

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 Melihat Log SSH

5.4.1 Lihat Log Secara Real-Time

sudo journalctl -u ssh -f

5.4.2 Lihat Log Sebelumnya

sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log

Kesimpulan

Bagian ini menjelaskan masalah SSH umum dan cara mengatasinya:

  • Periksa apakah layanan SSH berjalan
  • Verifikasi port yang terbuka
  • Periksa pengaturan firewall
  • Pastikan otentikasi kunci yang benar
  • Perbaiki masalah timeout dan pemutusan
  • Analisis log SSH

Sebagian besar masalah SSH berasal dari konfigurasi yang salah atau batasan jaringan. Gunakan langkah-langkah pemecahan masalah ini untuk menyelesaikan masalah secara efisien.

6. FAQ (Pertanyaan yang Sering Diajukan)

Bagian ini menjawab pertanyaan umum terkait penggunaan dan konfigurasi SSH.

6.1 Cara Memperbaiki Masalah Timeout SSH?

6.1.1 Pengaturan di Sisi Server

ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh

6.1.2 Pengaturan di Sisi Klien

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 Apa yang Harus Dilakukan Jika Anda Lupa Kata Sandi SSH Anda?

6.2.1 Jika Anda Memiliki Akses Fisik

  1. Boot ke mode single-user (pilih recovery mode dari GRUB)
  2. Reset kata sandi:
    passwd username
    
  1. Reboot sistem

6.2.2 Jika Akses Fisik Tidak Mungkin (Cloud VPS)

  • Gunakan konsol VPS yang disediakan oleh layanan hosting
  • Gunakan otentikasi kunci publik

6.3 Cara Menggunakan SSH di Windows?

6.3.1 Menggunakan PowerShell

ssh username@server-ip-address

6.3.2 Menggunakan PuTTY

  1. Unduh & instal PuTTY
  2. Masukkan alamat IP server ke Host Name
  3. Pilih SSH sebagai tipe koneksi
  4. Masuk dengan nama pengguna dan kata sandi

6.4 Cara Mengonfigurasi SSH di Ubuntu WSL?

6.4.1 Instal Server SSH

sudo apt update && sudo apt install openssh-server

6.4.2 Modifikasi Pengaturan SSH

PasswordAuthentication yes

Mulai SSH secara manual (WSL tidak menggunakan systemd):

sudo service ssh start

6.5 Praktik Keamanan Tambahan Terbaik

6.5.1 Gunakan Fail2Ban

sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban

6.5.2 Ubah Port SSH

Port 2200
sudo ufw allow 2200/tcp

6.6 Cara Memantau Log SSH secara Real Time?

sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh

6.7 Tips Menggunakan SSH Lebih Praktis

6.7.1 Gunakan .ssh/config untuk Login Sederhana

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

Kemudian sambungkan dengan:

ssh myserver

6.7.2 Gunakan ssh-agent

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Kesimpulan

Bagian ini merangkum pertanyaan yang sering diajukan terkait SSH:

  • Cara memperbaiki masalah timeout SSH
  • Cara memulihkan kata sandi yang terlupa
  • Cara menggunakan SSH di Windows dan WSL
  • Praktik keamanan terbaik
  • Cara memeriksa log SSH
  • Tips membuat SSH lebih nyaman menggunakan .ssh/config

Dengan menerapkan teknik‑teknik ini, Anda dapat membangun lingkungan SSH yang aman dan efisien serta mengelola server remote dengan lancar.