Ketika terhubung ke server menggunakan koneksi Secure Shell (SSH), terkadang atau bahkan sering kali kita terputus (disconnect) dari koneksi tersebut. Entah karena koneksi yang kurang stabil atau konfigurasi dari server/client itu sendiri (Auto Disconnect).
Masalah tersebut biasanya terjadi karena konfigurasi SSH atau firewall pada server yang memberi timeout pada koneksi nya. Hal ini biasa terjadi pada koneksi yang menggunakan NAT. Dilansir dari patrickmn.com:
Many NAT firewalls time out idle sessions after a certain period of time to keep their trunks clean. Sometimes the interval between session drops is 24 hours, but on many commodity firewalls, connections are killed after as little as 300 seconds.
Jika tidak ada aktivitas jaringan, firewall akan menutup koneksi setelah beberapa menit, biasanya setelah 5 menit.
Solusi
Untuk mengatasi masalah ini, kita dapat memanfaatkan dua pengaturan SSH yaitu ServerAliveInterval. atau ClientAliveInterval.
Perbedaan
ServerAliveInterval dan ClientAliveInterval adalah sebuah opsi untuk mengirim koneksi/paket ke server setelah timeout yang ditentukan, dengan tujuan untuk mencegah pemutusan koneksi tadi. Bedanya, ServerAliveInterval merupakan konfigurasi pada client (untuk server), sedangkan ClientAliveInterval adalah konfigurasi pada server (untuk client). Disini kita akan menggunakan ServerAliveInterval, yang berarti konfigurasi diatur pada sisi client.
Contoh
Misalnya, client A terhubung ke server B menggunakan konfigurasi ServerAliveInterval ini dan mengaturnya ke 300 detik (5 menit). Jika tidak ada interaksi pengguna selama 5 menit, maka SSH akan mengirim koneksi ke server untuk menghindari pemutusan koneksi (timeout).
Selama berapa kali? Secara bawaan, koneksi dikirim sebanyak 3 kali. Anggap saja pada 5 menit pertama dan kedua masih tidak ada respon dari pengguna, maka SSH akan mengirim koneksi yang kedua. Begitu seterusnya hingga koneksi ke-3 (5 menit ketiga). Nah, pada 5 menit keempat, koneksi tidak lagi dikirim dan akan menuruti perintah firewall, yaitu menutup koneksi.
Penggunaan ServerAliveInterval
Ada beberapa cara untuk mengaplikasikan ServerAliveInterval:
1. Memasukkan Konfigurasi Pada Command
Jika semisal Anda menghubungkan ke server menggunakan perintah ini:
ssh user@Alamat-IP-VPS
Tambahkan -o ServerAliveInterval=TimeoutInterval
pada perintah di atas. Misalnya, dengan mengatur ServerAliveInterval ke 300 (5 menit), maka perintah di atas akan menjadi:
ssh -o ServerAliveInterval=300 user@Alamat-IP-VPS
Contoh
Semisal saya mempunyai sebuah NAT VPS dengan alamat IP shared 202.83.122.66 dan port 46000, lalu saya ingin mengaktifkan ServerAliveInterval=300, maka command untuk terhubung ke SSH menjadi:
ssh -o ServerAliveInterval=300 [email protected] -p 46000
2. Menggunakan File Konfigurasi
SSH mempunyai file konfigurasi yang digunakan untuk mengatur opsi-opsi koneksi, layaknya ServerAliveInterval ini. File konfigurasi ini terletak di /etc/ssh/ssh_config (untuk seluruh user, perlu akses root untuk mengaksesnya) dan ~/.ssh/config (untuk user saat ini).
Buka ~/.ssh/config, lalu masukkan/tambahkan kode berikut:
Host * ServerAliveInterval 300
Konfigurasi di atas akan mengaplikasikan ServerAliveInterval pada seluruh koneksi SSH yang tersambung.
Kesimpulan
ServerAliveInterval dapat digunakan untuk menghindari Auto Disconnect pada koneksi SSH, dengan mengirim koneksi setelah timeout yang telah diatur.
Demikian sedikit tips mengatasi Auto Disconnect pada koneksi SSH kami. Semoga dapat membantu Anda.