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:

  1. ssh-temporary-open.sh → buka akses password + auto close 10 menit
  2. ssh-secure.sh → script internal untuk menutup akses (dipanggil otomatis)

Yang diubah hanya:

/etc/ssh/sshd_config

Parameter utama:

  • PasswordAuthentication
  • PubkeyAuthentication (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

By Admin

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *