versi yang benar-benar cocok untuk kebutuhan lab/kontrol akses murid:
- Buka akses password dengan cepat
- Otomatis menutup kembali setelah 10 menit
- Aman untuk admin yang tetap memakai Public Key
- Rapi, profesional, dan layak ditulis di blog teknis
Skenario:
- Default server: hanya Public Key (aman)
- Saat praktikum: jalankan script → murid bisa login pakai password
- Setelah 10 menit: sistem otomatis kembali ke mode aman
Konsep Arsitektur Script (Best Practice Admin Server)
Alih-alih membuat dua script manual bolak-balik, kita buat:
ssh-temporary-open.sh→ buka akses password + auto close 10 menitssh-secure.sh→ script internal untuk menutup akses (dipanggil otomatis)
Yang diubah hanya:
/etc/ssh/sshd_config
Parameter utama:
PasswordAuthenticationPubkeyAuthentication(tetap aktif untuk admin)
Script Utama: ssh-temporary-open.sh (Auto Close 10 Menit)
Buat file:
nano ssh-temporary-open.sh
Isi script lengkap (versi rapi & production-style):
#!/bin/bash# ==========================================
# SSH TEMPORARY ACCESS SCRIPT (AUTO CLOSE)
# Author : Admin Lab Server
# Purpose : Membuka login password sementara (10 menit)
# OS : Ubuntu 24 (Systemd + OpenSSH)
# ==========================================SSHD_CONFIG="/etc/ssh/sshd_config"
AUTO_CLOSE_SCRIPT="/usr/local/bin/ssh-secure.sh"
LOCK_FILE="/tmp/ssh_temp_access.lock"
DURATION=600 # 600 detik = 10 menit# ===============================
# Validasi Root Access
# ===============================
if [ "$EUID" -ne 0 ]; then
echo "[ERROR] Jalankan script ini dengan sudo atau sebagai root."
exit 1
fiecho "============================================"
echo " MODE: TEMPORARY SSH ACCESS (STUDENTS)"
echo " Password Login: ENABLED"
echo " Auto Close : 10 Minutes"
echo "============================================"# ===============================
# Cegah Double Running
# ===============================
if [ -f "$LOCK_FILE" ]; then
echo "[WARNING] Akses sementara sudah aktif!"
echo "Tunggu hingga timer selesai atau jalankan mode secure manual."
exit 1
fi# Buat lock file
touch "$LOCK_FILE"# ===============================
# Backup Konfigurasi (Safety)
# ===============================
if [ ! -f /etc/ssh/sshd_config.bak ]; then
cp "$SSHD_CONFIG" /etc/ssh/sshd_config.bak
echo "[INFO] Backup konfigurasi SSH dibuat."
fi# ===============================
# Aktifkan Password Authentication
# ===============================
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' "$SSHD_CONFIG"# Pastikan Public Key tetap aktif (admin tidak terkunci)
sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' "$SSHD_CONFIG"# Restart SSH Service (Ubuntu 24)
systemctl restart sshecho "[SUCCESS] Login password untuk murid AKTIF."
echo "[INFO] Server akan kembali ke mode aman dalam 10 menit."# ===============================
# Timer Otomatis (Background)
# ===============================
(
sleep $DURATION
bash $AUTO_CLOSE_SCRIPT
) &exit 0
Script Kedua: ssh-secure.sh (Auto Secure Mode)
Script ini akan dipanggil otomatis setelah 10 menit.
Buat file:
sudo nano /usr/local/bin/ssh-secure.sh
Isi:
#!/bin/bash# ==========================================
# SSH SECURE MODE SCRIPT (AUTO CLOSE HELPER)
# Purpose : Menutup akses password dan kembali ke mode aman
# ==========================================SSHD_CONFIG="/etc/ssh/sshd_config"
LOCK_FILE="/tmp/ssh_temp_access.lock"# Pastikan hanya root yang bisa menjalankan
if [ "$EUID" -ne 0 ]; then
echo "[ERROR] Script harus dijalankan sebagai root."
exit 1
fiecho "============================================"
echo " MODE: SECURE SSH (AUTO LOCK)"
echo " Password Login: DISABLED"
echo "============================================"# Nonaktifkan password login
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONFIG"# Pastikan public key tetap aktif
sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' "$SSHD_CONFIG"# Restart SSH agar konfigurasi diterapkan
systemctl restart ssh# Hapus lock file agar bisa dibuka lagi nanti
if [ -f "$LOCK_FILE" ]; then
rm -f "$LOCK_FILE"
fiecho "[SECURE] Akses password dimatikan."
echo "[INFO] Hanya login menggunakan Public Key yang diizinkan."exit 0
Beri Permission Eksekusi (Wajib)
Jalankan:
sudo chmod +x ssh-temporary-open.sh
sudo chmod +x /usr/local/bin/ssh-secure.sh
Cara Penggunaan di Lingkungan Kelas (Workflow Nyata)
Saat Murid Mau Login Praktikum
sudo ./ssh-temporary-open.sh
Yang terjadi:
- Password login aktif
- Murid bisa SSH pakai username + password
- Timer 10 menit mulai berjalan otomatis
Setelah 10 Menit (Otomatis)
Sistem akan:
- Menjalankan
ssh-secure.sh - Menonaktifkan PasswordAuthentication
- Kembali hanya menerima Public Key (admin)
Tanpa perlu intervensi manual.
Penjelasan Teknis Bash (Untuk Pemahaman Blog)
1. Shebang (Interpreter)
#!/bin/bash
Menentukan bahwa script dijalankan menggunakan Bash shell di Linux.
2. Variabel Sistem
SSHD_CONFIG="/etc/ssh/sshd_config"
DURATION=600
Fungsi:
- Menyimpan path file konfigurasi SSH
- Menentukan durasi otomatis (600 detik = 10 menit)
Memudahkan maintenance dan readability script.
3. Validasi Hak Akses Root
if [ "$EUID" -ne 0 ]; then
Penjelasan:
$EUID= Effective User ID- Root memiliki ID = 0
- Jika bukan root, script dihentikan
Ini penting karena:
File /etc/ssh/sshd_config hanya bisa diubah oleh root.
4. Lock File (Mekanisme Keamanan)
LOCK_FILE="/tmp/ssh_temp_access.lock"
touch "$LOCK_FILE"
Fungsi:
- Mencegah script dijalankan berulang saat timer masih aktif
- Menghindari konflik konfigurasi SSH
- Praktik umum dalam automation Linux
5. Otomatisasi Konfigurasi dengan sed
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' "$SSHD_CONFIG"
Makna:
sed= stream editor-i= edit langsung di file- Regex
^#\?= menangani baris yang dikomentari atau tidak - Mengganti nilai konfigurasi secara otomatis
Ini adalah teknik yang sering digunakan oleh:
- System Administrator
- DevOps Engineer
- Security Engineer
6. Background Timer (Proses Asynchronous)
(
sleep $DURATION
bash $AUTO_CLOSE_SCRIPT
) &
Penjelasan:
sleep 600→ menunggu 10 menit()→ menjalankan sub-process&→ menjalankan di background (non-blocking)
Artinya:
Script utama selesai cepat, tapi timer tetap berjalan di belakang sistem.
7. Restart Service SSH (Systemd Ubuntu 24)
systemctl restart ssh
Fungsi:
- Memuat ulang konfigurasi baru
- Tanpa restart service, perubahan tidak akan berlaku
Di Ubuntu 24:
- Service name:
ssh - Bukan:
sshd(ini perbedaan penting)
Keunggulan Sistem Ini (Nilai Plus untuk Blog & Guru)
- Aman (admin tetap pakai Public Key)
- Otomatis (tidak perlu ingat menutup akses)
- Cocok untuk lab sekolah / praktikum server
- Mencegah human error
- Menggunakan konsep automation + security hardening
- Mengikuti praktik nyata manajemen akses SSH di server produksi