---
title: "Cara Pasang 2FA untuk Login SSH di Ubuntu 24.04"
description: "Tambahkan kode OTP dari aplikasi authenticator ke login SSH Ubuntu 24.04 dengan modul PAM Google Authenticator, tanpa terkunci dari server sendiri."
url: "https://nivelva.com/insight/cara-pasang-2fa-login-ssh-ubuntu-24-04"
category: "Keamanan/Cyber Security"
tags: ["ssh","2fa","ubuntu 24.04","otp","keamanan server"]
author: "Theresia Candiawan"
published: "2026-11-07T05:02:00+07:00"
updated: "2026-11-07T05:02:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Pasang 2FA untuk Login SSH di Ubuntu 24.04

> **Jawaban singkat:** Pasang paket libpam-google-authenticator, jalankan google-authenticator sebagai pengguna yang login, tambahkan modul PAM ke /etc/pam.d/sshd, lalu aktifkan KbdInteractiveAuthentication dan AuthenticationMethods publickey,keyboard-interactive. Hasilnya, login SSH butuh SSH key dan kode OTP.

Bagaimana kalau SSH key di laptopmu ikut tercuri bersama laptopnya? Di situlah 2FA (two-factor authentication) berguna. Dengan 2FA, login SSH ke Ubuntu 24.04 tidak cukup hanya dengan key atau password, tapi juga harus memasukkan kode 6 digit yang berganti setiap 30 detik dari aplikasi authenticator di HP.

Caranya memakai modul PAM `libpam-google-authenticator` yang tersedia di repositori resmi Ubuntu. Kodenya mengikuti standar TOTP, jadi bisa dibaca aplikasi apa pun yang mendukung TOTP, seperti Google Authenticator, Microsoft Authenticator, Aegis, atau 2FAS.

> **Jangan tutup sesi SSH yang sedang aktif:**
>
> Selama mengikuti panduan ini, biarkan satu sesi SSH tetap terbuka sebagai cadangan. Uji login dari terminal baru. Kalau ada yang salah, kamu masih bisa memperbaikinya dari sesi lama atau lewat konsol web penyedia VPS.

## Apa yang perlu disiapkan?

- Server Ubuntu 24.04 dengan pengguna biasa yang punya hak `sudo` (bukan login root langsung).
- Login dengan SSH key sudah berjalan. Kalau belum, baca dulu [kenapa SSH key lebih aman dari password](https://nivelva.com/insight/ssh-key-vs-password).
- Aplikasi authenticator TOTP di HP.
- Jam server yang akurat. Cek dengan `timedatectl`, pastikan baris `System clock synchronized: yes`. Kode TOTP berbasis waktu, jadi jam yang meleset beberapa menit membuat kode selalu ditolak.

## Langkah pemasangan 2FA SSH

### Langkah 1: Pasang modul PAM

```bash
sudo apt update
sudo apt install libpam-google-authenticator
```

### Langkah 2: Buat kunci rahasia untuk pengguna

Jalankan perintah ini **sebagai pengguna yang akan login**, bukan dengan `sudo`, karena berkas rahasianya disimpan di folder home pengguna tersebut.

```bash
google-authenticator
```

Program akan menanyakan beberapa hal. Jawaban yang umum dianjurkan:

| Pertanyaan | Jawaban | Alasan |
|:--|:--|:--|
| Make tokens time-based? | y | Memakai TOTP, kode berganti tiap 30 detik |
| Update the .google_authenticator file? | y | Menyimpan rahasia ke `~/.google_authenticator` |
| Disallow multiple uses of the same token? | y | Satu kode hanya bisa dipakai sekali |
| Increase the time window? | n | Jendela waktu tetap sempit, lebih aman |
| Enable rate-limiting? | y | Membatasi percobaan login, bawaannya 3 kali per 30 detik |

Terminal akan menampilkan kode QR dan kunci rahasia. Pindai kode QR dengan aplikasi authenticator. Program juga menampilkan beberapa **emergency scratch code**: catat di tempat aman (misalnya pengelola password), karena kode ini satu-satunya jalan masuk kalau HP hilang.

### Langkah 3: Tambahkan modul ke PAM SSH

Buka berkas PAM untuk SSH:

```bash
sudo nano /etc/pam.d/sshd
```

Tambahkan baris ini di bagian paling atas:

```
auth required pam_google_authenticator.so
```

Karena kita akan memakai kombinasi SSH key dan OTP, server tidak perlu menanyakan password lagi. Cari baris `@include common-auth` lalu beri tanda pagar di depannya:

```
# @include common-auth
```

Kalau baris ini dibiarkan aktif, server akan meminta password Linux setelah OTP. Itu tidak salah, hanya menjadi tiga lapis (key, OTP, password).

### Langkah 4: Ubah konfigurasi SSH

Di Ubuntu 24.04, berkas tambahan di `/etc/ssh/sshd_config.d/` dibaca lebih dulu daripada isi `sshd_config` utama, dan untuk sebagian besar opsi, nilai yang pertama dibaca yang berlaku. Karena itu, simpan pengaturan 2FA di berkas tersendiri dengan nama yang urut paling awal:

```bash
sudo nano /etc/ssh/sshd_config.d/10-2fa.conf
```

Isi dengan:

```
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
```

`KbdInteractiveAuthentication` adalah nama baru untuk opsi lama `ChallengeResponseAuthentication` yang masih muncul di banyak tutorial lama. `AuthenticationMethods publickey,keyboard-interactive` berarti pengguna wajib lolos SSH key dulu, baru diminta kode OTP.

### Langkah 5: Uji konfigurasi lalu restart SSH

```bash
sudo sshd -t
sudo systemctl restart ssh
```

Perintah `sshd -t` tidak menampilkan apa-apa bila konfigurasinya benar. Di Ubuntu 24.04 nama layanannya `ssh`, bukan `sshd`.

### Langkah 6: Uji dari terminal baru

```bash
ssh pengguna@ip-server
```

Setelah key diterima, akan muncul `Verification code:`. Masukkan kode 6 digit dari aplikasi. Kalau berhasil masuk, 2FA sudah aktif. Baru setelah itu sesi cadangan boleh ditutup.

## Bagaimana kalau ada pengguna lain yang belum memasang OTP?

Dengan konfigurasi di atas, pengguna yang belum menjalankan `google-authenticator` tidak akan bisa login sama sekali. Untuk masa transisi, kamu bisa menambahkan opsi `nullok` di baris PAM:

```
auth required pam_google_authenticator.so nullok
```

Opsi ini mengizinkan pengguna tanpa berkas `~/.google_authenticator` login tanpa OTP. Hapus lagi `nullok` setelah semua pengguna selesai memasang, supaya tidak ada akun yang lolos tanpa lapisan kedua.

## Bagaimana dengan skrip otomatis dan deploy?

Skrip backup, CI/CD, atau rsync terjadwal tidak bisa mengetik kode OTP. Solusi yang rapi adalah membuat pengguna khusus untuk otomasi dan membebaskannya dari OTP lewat blok `Match`. Letakkan blok ini di bagian paling bawah `/etc/ssh/sshd_config`, karena semua baris setelah `Match` hanya berlaku untuk pengguna yang cocok:

```
Match User deploy
    AuthenticationMethods publickey
```

Batasi juga apa yang bisa dilakukan pengguna itu, misalnya dengan hak akses folder seminimal mungkin dan pembatasan IP di firewall. Langkah pengamanan dasar lainnya bisa kamu lihat di [cara mengamankan VPS Linux baru](https://nivelva.com/insight/cara-mengamankan-vps-baru).

## Pertanyaan yang sering diajukan

### HP saya hilang, bagaimana cara login?

Pakai salah satu emergency scratch code yang dicatat saat menjalankan google-authenticator. Setelah masuk, jalankan ulang google-authenticator untuk membuat rahasia baru dan pasang di HP pengganti.

### Kode OTP selalu ditolak padahal sudah benar, kenapa?

Penyebab paling umum adalah jam server atau jam HP yang tidak sinkron. Cek timedatectl di server dan aktifkan waktu otomatis di HP. Pastikan juga kode tidak dipakai dua kali karena opsi disallow multiple uses.

### Apakah 2FA menggantikan Fail2ban dan firewall?

Tidak. 2FA melindungi proses login, sedangkan Fail2ban dan firewall mengurangi jumlah percobaan yang sampai ke server. Ketiganya sebaiknya dipakai bersamaan.

### Apakah bisa memakai 2FA dengan login password tanpa SSH key?

Bisa, dengan membiarkan @include common-auth aktif dan memakai AuthenticationMethods keyboard-interactive saja. Tetapi kombinasi SSH key dan OTP jauh lebih kuat dan lebih dianjurkan.

## Checklist sebelum selesai

- Jam server tersinkron (`timedatectl`).
- `google-authenticator` dijalankan untuk setiap pengguna yang login.
- Emergency scratch code tersimpan di tempat aman.
- Baris `pam_google_authenticator.so` ada di `/etc/pam.d/sshd`.
- `/etc/ssh/sshd_config.d/10-2fa.conf` berisi `AuthenticationMethods publickey,keyboard-interactive`.
- `sshd -t` bersih, layanan `ssh` sudah di-restart, dan login diuji dari terminal baru.

## Sumber

- <https://ubuntu.com/tutorials/configure-ssh-2fa>
- <https://github.com/google/google-authenticator-libpam>
- <https://manpages.ubuntu.com/manpages/noble/man5/sshd_config.5.html>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-pasang-2fa-login-ssh-ubuntu-24-04
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
