Cara Mengatur & Mengamankan SSH di Ubuntu: Panduan Lengkap untuk Remote Server

目次

1. Pendahuluan

Mengonfigurasi SSH di Ubuntu sangat penting untuk mengelola server jarak jauh. SSH (Secure Shell) adalah protokol yang menyediakan komunikasi terenkripsi yang aman, dan banyak digunakan untuk mengakses server dari jarak jauh, menjalankan perintah, atau mentransfer file.

Artikel ini akan membahas cara mengatur SSH di Ubuntu secara lengkap, mulai dari instalasi dasar hingga langkah-langkah keamanan tingkat lanjut.

1.1 Alasan Mengatur SSH di Ubuntu

1.1.1 Apa itu SSH?

SSH (Secure Shell) adalah protokol yang digunakan untuk komunikasi jaringan yang aman. Biasanya SSH digunakan untuk login ke server remote, transfer file, dan tunneling (port forwarding). Berbeda dengan Telnet atau FTP, komunikasi melalui SSH dienkripsi sehingga jauh lebih aman.

1.1.2 Kapan SSH Dibutuhkan di Ubuntu?

Beberapa skenario pengelolaan Ubuntu secara remote antara lain:

  • Manajemen Server Cloud: Layanan cloud seperti AWS, GCP, Vultr, dan lain-lain umumnya menggunakan SSH untuk mengakses server secara remote.
  • Remote di Jaringan Lokal (LAN): Mengakses server internal kantor atau mesin pengembangan melalui SSH untuk pekerjaan jarak jauh.
  • Manajemen Perangkat IoT: Mengendalikan perangkat embedded seperti Raspberry Pi dari jarak jauh.

Secara default, server SSH di Ubuntu tidak aktif. Maka dari itu, Anda perlu menginstal dan mengkonfigurasikan SSH secara manual agar dapat digunakan.

2. Konfigurasi Dasar SSH

Untuk menggunakan SSH di Ubuntu, Anda perlu menginstal server SSH (OpenSSH) dan melakukan konfigurasi yang sesuai. Bagian ini menjelaskan langkah-langkah instalasi, konfigurasi dasar, pengaturan firewall, dan cara koneksi.

2.1 Instalasi & Menjalankan OpenSSH

2.1.1 Apa itu OpenSSH?

OpenSSH (Open Secure Shell) adalah perangkat lunak open-source yang mengimplementasikan protokol SSH. Selain koneksi remote, OpenSSH juga mendukung transfer file yang aman (SCP/SFTP) dan port forwarding.

2.1.2 Instalasi OpenSSH

Karena server SSH tidak terinstal secara default di Ubuntu, gunakan perintah berikut untuk instalasi:

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

Perintah ini akan memperbarui daftar paket dan menginstal OpenSSH Server.

2.1.3 Menjalankan & Mengaktifkan SSH Server

Setelah instalasi, jalankan SSH server dan aktifkan otomatis saat boot:

sudo systemctl enable --now ssh

Opsi enable memastikan layanan SSH otomatis berjalan saat sistem menyala.

2.1.4 Verifikasi SSH Server

Untuk memeriksa apakah SSH server berjalan dengan baik, jalankan:

systemctl status ssh

Jika output seperti berikut, SSH berjalan dengan baik:

● 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 tertulis inactive (dead) atau failed, jalankan perintah berikut untuk memulai ulang SSH:

sudo systemctl start ssh

2.2 Konfigurasi Firewall (UFW)

Ubuntu menyediakan UFW (Uncomplicated Firewall) yang mudah digunakan. Untuk mengizinkan koneksi SSH, lakukan pengaturan berikut.

2.2.1 Cek Status UFW

Periksa status firewall saat ini:

sudo ufw status

Contoh output (UFW nonaktif):

Status: inactive

Contoh output (UFW aktif):

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

2.2.2 Mengizinkan Koneksi SSH

Untuk mengizinkan port default SSH 22, jalankan:

sudo ufw allow ssh

Atau secara spesifik dengan port:

sudo ufw allow 22/tcp

2.2.3 Mengaktifkan UFW

Jika UFW belum aktif, aktifkan dengan:

sudo ufw enable

Pastikan port SSH sudah diizinkan sebelum mengaktifkan UFW agar tidak terkunci dari server.

2.2.4 Verifikasi Pengaturan Firewall

Periksa pengaturan firewall apakah sudah sesuai:

sudo ufw status verbose

Contoh output

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

Jika sudah seperti di atas, SSH dapat digunakan.

2.3 Cara Dasar Koneksi SSH

Setelah SSH server aktif, coba koneksi dari komputer klien.

2.3.1 Koneksi dari Linux/macOS

Buka terminal, lalu jalankan:

ssh username@alamat-IP-server

Contoh:

ssh user@192.168.1.100

Pada koneksi pertama, mungkin muncul peringatan seperti ini:

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 lalu tekan Enter untuk melanjutkan koneksi.

2.3.2 Koneksi dari Windows

Di Windows, gunakan PowerShell atau PuTTY untuk koneksi SSH.

Menggunakan PowerShell
Mulai Windows 10, PowerShell sudah memiliki SSH client bawaan. Jalankan perintah berikut:

ssh username@alamat-IP-server

Menggunakan PuTTY

  1. Unduh & instal PuTTY
  2. Buka PuTTY, isi Host Name (or IP address) dengan IP server
  3. Set Connection type ke SSH, klik Open
  4. Masukkan username dan password

Ringkasan

Pada bagian ini kita telah membahas langkah-langkah dasar pengaturan SSH di Ubuntu:

  • Cara instal dan menjalankan OpenSSH
  • Pengaturan UFW untuk mengizinkan koneksi SSH
  • Cara koneksi SSH dari Linux/macOS dan Windows

3. Meningkatkan Keamanan SSH

SSH sangat berguna untuk koneksi remote, tapi jika tidak diamankan bisa menjadi sasaran serangan. Penyerang sering mencoba brute-force dan port scanning terhadap SSH. Karena itu, penting untuk mengatur keamanan SSH dengan benar.

3.1 Melarang Login User root

Secara default, SSH di Ubuntu kadang mengizinkan login sebagai root. Akun root memiliki hak akses penuh sehingga menjadi target serangan. Melarang login root dan hanya menggunakan user biasa meningkatkan keamanan.

3.1.1 Langkah Pengaturan

  1. Edit file konfigurasi SSH /etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config
  1. Cari dan ubah menjadi PermitRootLogin no.
PermitRootLogin no
  1. Simpan file, lalu restart layanan SSH.
sudo systemctl restart ssh
  1. Verifikasi apakah pengaturan sudah aktif:
sudo grep PermitRootLogin /etc/ssh/sshd_config

Jika hasilnya PermitRootLogin no, pengaturan sudah benar.

3.2 Nonaktifkan Password dan Pakai Autentikasi Key (Public Key)

Autentikasi SSH dengan public key lebih aman dibanding password. Dengan public key, tidak perlu memasukkan password dan risiko brute-force menurun.

3.2.1 Membuat SSH Key

Buat key SSH di PC lokal:

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

Akan muncul dua file:

  • Private key (id_rsa) → simpan di PC lokal (jangan dibagikan)
  • Public key (id_rsa.pub) → upload ke server

3.2.2 Upload Public Key ke Server

Gunakan perintah berikut untuk mengirim public key ke server:

ssh-copy-id username@alamat-IP-server

3.2.3 Nonaktifkan Password Authentication

Buka file konfigurasi SSH:

sudo nano /etc/ssh/sshd_config

Cari dan ubah menjadi PasswordAuthentication no.

PasswordAuthentication no

Lalu restart SSH:

sudo systemctl restart ssh

3.3 Hanya Izinkan User Tertentu

Batasi akses SSH hanya untuk user tertentu guna meningkatkan keamanan.

3.3.1 Langkah Pengaturan

  1. Buka file konfigurasi /etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config
  1. Tambahkan user yang diizinkan:
AllowUsers user1 user2
  1. Restart SSH agar perubahan berlaku.
sudo systemctl restart ssh

3.4 Mengganti Port Default SSH

Port default SSH (22) sering jadi target. Mengubah ke port lain bisa menambah keamanan.

3.4.1 Langkah Pengaturan

  1. Buka konfigurasi SSH:
sudo nano /etc/ssh/sshd_config
  1. Cari Port 22, ubah ke misalnya Port 2200.
Port 2200
  1. Simpan dan restart SSH.
sudo systemctl restart ssh

3.4.2 Update Pengaturan Firewall

Setelah port diubah, izinkan port baru di UFW:

sudo ufw allow 2200/tcp

Verifikasi dengan:

sudo ufw status

3.5 Melindungi SSH dari Serangan Brute Force dengan Fail2Ban

Fail2Ban memantau percobaan login gagal SSH dan otomatis memblokir IP yang mencurigakan.

3.5.1 Instalasi Fail2Ban

sudo apt install fail2ban -y

3.5.2 Salin & Edit Konfigurasi

Salin konfigurasi dan edit:

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

Ubah bagian berikut:

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

3.5.3 Restart Fail2Ban

Agar konfigurasi baru berlaku:

sudo systemctl restart fail2ban

3.5.4 Cek Daftar IP yang Diblokir

sudo fail2ban-client status sshd

Ringkasan

Pada bagian ini, kita membahas cara meningkatkan keamanan SSH:

  • Menonaktifkan login root
  • Menonaktifkan password dan memakai public key authentication
  • Membatasi user yang boleh SSH
  • Mengganti port SSH
  • Mengaktifkan Fail2Ban untuk blokir serangan

Dengan langkah ini, keamanan server SSH Anda akan meningkat.

4. Konfigurasi Lanjutan SSH

Setelah konfigurasi dasar dan keamanan selesai, Anda bisa menggunakan fitur lanjutan SSH di Ubuntu, misal mengelola ssh.socket (Ubuntu 22.10 ke atas), SSH tunnel (port forwarding), multi-port listening, atau membatasi akses IP tertentu.

4.1 Mengelola ssh.socket pada Ubuntu 22.10 ke Atas

Mulai Ubuntu 22.10, layanan SSH bisa dikelola lewat ssh.socket (SSH aktif hanya saat ada koneksi masuk), yang lebih hemat resource.

4.1.1 Cek Status ssh.socket

Cek status ssh.socket:

sudo systemctl status ssh.socket

Jika aktif:

● 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 Mengaktifkan/Menonaktifkan ssh.socket

Untuk mengaktifkan ssh.socket:

sudo systemctl enable --now ssh.socket

Untuk kembali ke ssh.service tradisional:

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

4.2 SSH Tunnel (Port Forwarding)

SSH tunnel memungkinkan komunikasi aman antara server & PC lokal, tanpa ekspos ke internet langsung.

4.2.1 Local Port Forwarding

Untuk mengakses database/web server di remote secara aman:

Contoh: Akses MySQL server (port 3306) dari PC lokal

ssh -L 3306:localhost:3306 username@alamat-IP-server

4.2.2 Reverse Port Forwarding

Untuk membuka akses dari luar ke server lokal via SSH:

Contoh: Akses web server lokal (port 80) melalui port 8080 remote

ssh -R 8080:localhost:80 username@alamat-IP-server

4.2.3 Dynamic Port Forwarding

Gunakan SSH sebagai SOCKS proxy untuk browsing anonim:

Contoh: Proxy SOCKS di port 1080 lokal

ssh -D 1080 username@alamat-IP-server

4.3 SSH Listening di Multi-Port

SSH bisa diatur mendengarkan di lebih dari satu port.

4.3.1 Langkah Pengaturan

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

4.4 Hanya Izinkan SSH dari IP Tertentu

Batasi akses SSH hanya dari alamat IP tertentu untuk keamanan tambahan.

4.4.1 Atur /etc/hosts.allow

Hanya izinkan IP tertentu:

sudo nano /etc/hosts.allow

Tambah baris berikut (192.168.1.100 diganti dengan IP yang diizinkan):

sshd: 192.168.1.100

4.4.2 Atur /etc/hosts.deny

Blokir semua IP lain:

sudo nano /etc/hosts.deny
sshd: ALL

Hanya IP di hosts.allow yang bisa SSH.

Ringkasan

Bagian ini membahas pengaturan lanjutan SSH:

  • Manajemen ssh.socket di Ubuntu 22.10+
  • SSH Tunnel (Port Forwarding) untuk komunikasi aman
  • SSH listening di multi-port
  • Pembatasan akses SSH ke IP tertentu

Dengan pengaturan ini, SSH akan lebih aman dan fleksibel.

5. Troubleshooting SSH

Walaupun sudah diatur, kadang SSH tidak bisa digunakan karena berbagai sebab. Bagian ini menjelaskan masalah umum SSH dan solusinya.

5.1 Tidak Bisa Terhubung ke SSH

Jika muncul error Connection refused atau timeout, berikut kemungkinan penyebabnya:

5.1.1 Layanan SSH Tidak Berjalan

Periksa status layanan SSH:

sudo systemctl status ssh

Solusi:

  • Jika Active: inactive (dead) atau failed, restart SSH:
sudo systemctl restart ssh
  • Untuk otomatisasi saat boot:
sudo systemctl enable ssh

5.1.2 Port SSH Tidak Terbuka

Jika port SSH sudah diubah, saat koneksi pastikan memakai port yang benar:

ssh -p 2200 username@alamat-IP-server

Untuk cek port yang terbuka:

sudo netstat -tulnp | grep ssh

Atau:

ss -tulnp | grep ssh

5.1.3 Cek Firewall (UFW)

Periksa apakah UFW memblokir SSH:

sudo ufw status

Solusi jika SSH belum diizinkan:

sudo ufw allow 22/tcp

Jika port diubah:

sudo ufw allow 2200/tcp

5.2 Masalah Autentikasi

5.2.1 Username atau Password Salah

Pastikan memakai username yang benar saat login:

ssh username@alamat-IP-server

5.2.2 Public Key Belum Terdaftar di Server

Periksa apakah public key sudah ada di ~/.ssh/authorized_keys:

cat ~/.ssh/authorized_keys

Pastikan cocok dengan public key lokal (~/.ssh/id_rsa.pub).

5.2.3 Izin Folder .ssh Tidak Benar

Izin folder dan file key harus benar:

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

Juga cek permission folder home:

chmod 755 /home/username

5.3 Koneksi SSH Tidak Stabil / Sering Putus

Jika SSH sering putus, kemungkinan ada pengaturan timeout di server atau klien.

5.3.1 Atur ClientAliveInterval

Buka /etc/ssh/sshd_config, tambahkan:

ClientAliveInterval 60
ClientAliveCountMax 3

Lalu restart SSH.

sudo systemctl restart ssh

5.3.2 Atur di Sisi Klien

Jika SSH sering putus dari sisi klien, tambahkan di ~/.ssh/config:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 Cara Melihat Log SSH

Log sangat penting untuk troubleshooting SSH.

5.4.1 Cek Log SSH Secara Real-time

Gunakan perintah berikut:

sudo journalctl -u ssh -f

5.4.2 Cek Log SSH Lama

Untuk melihat log lama:

sudo cat /var/log/auth.log | grep ssh

Untuk mencari pesan error tertentu:

sudo grep "Failed password" /var/log/auth.log

Ringkasan

Pada bagian ini, kita membahas troubleshooting SSH:

  • Cek status layanan SSH
  • Cek port sudah terbuka
  • Cek pengaturan firewall
  • Cek public key authentication
  • Solusi masalah timeout
  • Pemanfaatan log SSH

Masalah SSH biasanya karena salah konfigurasi atau kendala jaringan. Gunakan tips troubleshooting di atas untuk solusi cepat.

6. FAQ (Pertanyaan yang Sering Diajukan)

Berikut beberapa pertanyaan umum dan solusi terkait penggunaan dan konfigurasi SSH. Tips ini membantu penggunaan SSH lebih aman dan efisien.

6.1 Bagaimana mengatasi SSH sering timeout?

Jika SSH terputus otomatis setelah beberapa waktu, lakukan:

6.1.1 Ubah Pengaturan Server

Edit /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 3

Lalu restart SSH.

sudo systemctl restart ssh

6.1.2 Ubah Pengaturan Klien

Di ~/.ssh/config tambahkan:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 Lupa Password SSH?

6.2.1 Jika Bisa Akses Fisik Server

  1. Boot ke single user mode (pilih recovery mode di GRUB)
  2. Reset password:
passwd username
  1. Restart sistem

6.2.2 Jika Tidak Ada Akses Fisik (Cloud VPS)

  • Gunakan fitur console di dashboard VPS
  • Pakai autentikasi public key SSH

6.3 Cara Pakai SSH di Windows?

6.3.1 Pakai PowerShell

Sejak Windows 10, SSH client sudah ada di PowerShell. Jalankan:

ssh username@alamat-IP-server

6.3.2 Pakai PuTTY

  1. Unduh & instal PuTTY
  2. Masukkan IP server pada Host Name (or IP address)
  3. Set Connection type ke SSH dan klik Open
  4. Masukkan username & password

6.4 Cara Setup SSH Server di Ubuntu WSL (Windows Subsystem for Linux)?

Untuk setup SSH server di WSL:

6.4.1 Instalasi SSH Server

sudo apt update && sudo apt install openssh-server

6.4.2 Konfigurasi SSH

Edit /etc/ssh/sshd_config dan pastikan:

PasswordAuthentication yes

Karena WSL tidak pakai systemd, jalankan SSH manual:

sudo service ssh start

6.5 Setelah Setup SSH, Apa Langkah Keamanan Lanjutan?

6.5.1 Pasang Fail2Ban

Untuk menghindari brute-force, instal Fail2Ban:

sudo apt install fail2ban -y

Edit /etc/fail2ban/jail.local:

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

Restart Fail2Ban:

sudo systemctl restart fail2ban

6.5.2 Ganti Port SSH

Buka /etc/ssh/sshd_config, ubah dari 22 ke port lain:

Port 2200

Restart SSH dan izinkan port baru di UFW:

sudo ufw allow 2200/tcp

6.6 Cara Cek Log SSH di Ubuntu Secara Real-time?

Untuk memonitor log SSH secara langsung:

sudo journalctl -u ssh -f

Untuk cek log lama:

sudo cat /var/log/auth.log | grep ssh

6.7 Tips Mempermudah SSH?

6.7.1 Gunakan .ssh/config untuk Login Mudah

Untuk koneksi SSH cepat, buat file ~/.ssh/config:

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

Setelah itu cukup jalankan:

ssh myserver

6.7.2 Pakai ssh-agent

Agar tidak perlu selalu memasukkan passphrase private key:

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

Ringkasan

Pada bagian ini, kita membahas FAQ SSH:

  • Solusi SSH timeout
  • Cara reset password SSH
  • Pakai SSH di Windows & WSL
  • Langkah keamanan tambahan
  • Cara cek log SSH
  • Tips SSH lebih praktis dengan .ssh/config

Dengan panduan ini, Anda dapat membangun dan mengelola SSH di Ubuntu dengan lebih aman dan nyaman.

Artikel Terkait

Artikel

1. Pendahuluan Dengan menggunakan SSH di Ubuntu, Anda dapat mengakses dan mengoperasikan server atau PC dari jarak jauh[…]

侍エンジニア塾