Notifikasi Login VPS ke Telegram dengan Bash dan cURL
Tutorial ini akan memandu kamu langkah demi langkah untuk membuat sebuah skrip sederhana yang akan mengirimkan notifikasi ke akun Telegram kamu setiap kali ada pengguna yang berhasil login ke server (VPS) melalui SSH. Ini adalah cara yang bagus untuk memonitor aktivitas login dan meningkatkan keamanan servermu.
Langkah 1: Membuat Bot Telegram

Untuk mengirim pesan melalui API Telegram, kita memerlukan sebuah bot.
- Buka aplikasi Telegram kamu, cari akun bernama
BotFather(ada tanda centang biru). - Mulai percakapan dengan
BotFatherdengan mengetik/start. - Buat bot baru dengan mengetik perintah
/newbot. BotFatherakan meminta kamu untuk memberikan nama untuk bot kamu (misalnya: “VPS Monitor”).- Selanjutnya, berikan username untuk bot kamu. Username harus unik dan diakhiri dengan kata
bot(misalnya:vps_monitor_xyz_bot). - Setelah berhasil,
BotFatherakan memberikan kamu sebuah Token API. Token ini sangat rahasia dan digunakan untuk mengontrol bot kamu.

Salin dan simpan token ini di tempat yang aman. Kita akan menggunakannya di dalam skrip.
Warning
CATATAN PENTING: Jaga kerahasiaan Token API kamu. Siapa pun yang memilikinya dapat mengendalikan botmu.
Langkah 2: Mendapatkan Chat ID Kamu
Setelah bot dibuat, kita perlu tahu kemana pesan notifikasi akan dikirim. Setiap pengguna atau grup di Telegram memiliki Chat ID yang unik.
-
Di aplikasi Telegram kamu, cari username bot yang baru saja kamu buat.
-
Mulai percakapan dengan bot kamu dengan menekan tombol Start atau mengirim pesan apa pun (misalnya: “halo”).
-
Sekarang, buka terminal di VPS kamu (atau komputer lokal yang memiliki
curl) dan jalankan perintah berikut. Ganti<TOKEN_BOT_KAMU>dengan Token API yang kamu dapatkan dariBotFather.curl "https://api.telegram.org/bot<TOKEN_BOT_KAMU>/getUpdates" -
Kita akan melihat respons dalam format JSON. Cari bagian
result->message->chat->id. ItulahChat IDkamu.{ "ok": true, "result": [ { "update_id": 834572275, "message": { "message_id": 1, "from": { "id": 123456789, // Ini adalah Chat ID kamu "is_bot": false, "first_name": "Nama", "last_name": "Kamu", "username": "usernamemu", "language_code": "en" }, "chat": { "id": 123456789, // Pastikan untuk menyalin ID ini "first_name": "Nama", "last_name": "Kamu", "username": "usernamemu", "type": "private" }, "date": 1672531200, "text": "halo" } } ] }
Atau bisa didapatkan di bot @strukturbot

Salin dan simpan ID / Chat ID kamu.
Langkah 3: Membuat Skrip Bash Notifikasi
Sekarang kita akan membuat skrip bash yang akan mengirim notifikasi.
-
Buat file baru di direktori yang kamu inginkan, misalnya
/usr/local/bin/notif-login.sh.sudo nano /usr/local/bin/notif-login.sh -
Salin dan tempel kode berikut ke dalam file tersebut.
#!/bin/bash # --- KONFIGURASI --- # Ganti dengan Token API bot Telegram kamu TOKEN="<GANTI_DENGAN_TOKEN_KAMU>" # Ganti dengan Chat ID kamu CHAT_ID="<GANTI_DENGAN_CHAT_ID_KAMU>" # --- SELESAI KONFIGURASI --- # Mendapatkan informasi login # PAM_USER adalah username yang login # PAM_RHOST adalah alamat IP dari mana user login # PAM_TYPE adalah jenis sesi (misal: "sshd", "login") USER_LOGIN="${PAM_USER}" IP_ADDRESS="${PAM_RHOST}" LOGIN_TYPE="${PAM_TYPE}" HOSTNAME=$(hostname) # Format pesan notifikasi (menggunakan format Markdown) MESSAGE=$(printf "🚨 *Notifikasi Login SSH di %s*\n\n*Username:* \`%s\`\n*Dari IP:* \`%s\`\n*Jenis Sesi:* \`%s\`\n*Waktu:* \`%s\`" \ "$HOSTNAME" \ "$USER_LOGIN" \ "$IP_ADDRESS" \ "$LOGIN_TYPE" \ "$(date '+%d-%m-%Y %H:%M:%S')") # URL API Telegram untuk mengirim pesan URL="https://api.telegram.org/bot${TOKEN}/sendMessage" # Mengirim notifikasi menggunakan curl # -s : silent mode, tidak menampilkan progress bar # -d : data yang dikirim (payload) # parse_mode=Markdown : agar format tebal, miring, dll bisa ditampilkan curl -s -d "chat_id=${CHAT_ID}&text=${MESSAGE}&parse_mode=Markdown" "${URL}" > /dev/null -
Penting: Ganti nilai
TOKENdanCHAT_IDdengan milikmu. -
Simpan file tersebut (di
nano, tekanCtrl+X, laluY, laluEnter).
Langkah 4: Membuat Skrip Menjadi Executable
Agar skrip bisa dijalankan, kita perlu memberikan izin eksekusi.
sudo chmod +x /usr/local/bin/notif-login.sh
Langkah 5: Menjalankan Skrip Secara Otomatis Saat Login
Cara terbaik untuk memicu skrip ini saat ada login SSH adalah dengan menggunakan PAM (Pluggable Authentication Modules).
-
Buka file konfigurasi PAM untuk SSH.
sudo nano /etc/pam.d/sshd -
Tambahkan baris berikut di akhir file. Baris ini akan memberitahu PAM untuk menjalankan skrip kita setiap kali sesi SSH berhasil dibuka.
# Menjalankan skrip notifikasi Telegram saat sesi login dibuka session optional pam_exec.so /usr/local/bin/notif-login.shsession: Menandakan bahwa ini berjalan pada tahap sesi.optional: Jika skrip gagal, proses login tetap diizinkan. Ini penting agar kamu tidak terkunci dari server jika ada kesalahan pada skrip.pam_exec.so: Modul PAM yang digunakan untuk mengeksekusi perintah eksternal.
-
Simpan dan tutup file.
Tip
tekan
CTRL+Odan ENTER untuk menyimpannya.
Langkah 6: Uji Coba
Selesai! Sekarang mari kita uji.
- Logout dari sesi SSH kamu saat ini.
- Login kembali ke VPS-mu.
- Dalam beberapa detik, kamu akan menerima notifikasi di Telegram dari bot yang telah kamu buat!
Pesan notifikasinya akan terlihat seperti ini:
🚨 Notifikasi Login SSH di nama-vps-kamu
Username:
rootDari IP:
123.123.123.123Jenis Sesi:
sshdWaktu:
29-11-2025 10:30:00
Selamat! Kamu telah berhasil meningkatkan keamanan server kamu dengan notifikasi login real-time!