Membuat Koneksi Secara Persisten dengan Autossh
Terkadang kita menginginkan home server yang bisa kita buat dirumah agar bisa diakses secara publik berjalan dengan baik dan tanpa halangan. Seperti pada penjelasan sebelumnya kita menggunakan casa os sebagai home server serta menggunakan teknik reverse SSH sebagai jalur untuk koneksi balik sehingga kita bisa akses home server tersebut secara publik. Bagi kalian yang belum install home server bisa baca Home Server menggunakan CASA OS. Pengaturan ssh login tanpa memasukan password harus kalian lakukan terlebih dahulu agar nanti bisa akses nya berhasil Cara Setting Login SSH Tanpa Password. Pembahasan mengenai teknik reverse ssh bisa dibaca di Remote PC dengan SSH Reverse Port Forward dan Tunneling Melalui via VPS
Pengaturan ssh server juga harus kalian lakukan agar bisa mendukung port forwarding Mencoba Menggunakan VPS untuk Deep Learning
Setelah kalian melakukan 4 kerjaan diatas, kita akan membuat service dengan autossh sebagai backend nya. Sebagai penjelasan
AutoSSH adalah alat open-source yang digunakan untuk menjaga sesi SSH tetap hidup, khususnya sesi yang menggunakan port forwarding atau tunneling. SSH sendiri adalah protokol yang digunakan untuk mengamankan komunikasi antara dua mesin, biasanya melalui jaringan yang tidak aman seperti internet. AutoSSH memperpanjang kegunaan SSH dengan cara memantau koneksi SSH yang telah dibuat, lalu secara otomatis me-restart koneksi tersebut jika terputus.
Fungsi dan Kegunaan AutoSSH
Contents
AutoSSH sering digunakan untuk:
- Meningkatkan Kestabilan Tunneling SSH: Tunneling SSH sering kali digunakan untuk port forwarding, baik untuk mengakses server yang berada di balik firewall atau untuk mengamankan layanan yang berjalan di port yang tidak aman. Dalam beberapa kasus, koneksi SSH bisa terputus karena gangguan jaringan. AutoSSH akan mendeteksi koneksi yang terputus dan mencoba menghidupkan kembali koneksi tersebut.
- Monitoring Koneksi SSH: AutoSSH memonitor kesehatan koneksi SSH dengan cara membuka koneksi dummy (layanan tes) di dalam sesi SSH. Jika koneksi ini terputus, AutoSSH menganggap bahwa sesi SSH utama juga terputus dan akan mencoba untuk memulihkan koneksi.
- Penggunaan pada Sistem yang Berjalan Terus Menerus: AutoSSH sangat berguna pada sistem yang membutuhkan koneksi SSH yang terus menerus seperti server, IOT devices, atau sistem cloud. Ketika digunakan dalam lingkungan di mana stabilitas jaringan tidak selalu bisa dijamin, AutoSSH bisa mengurangi beban manajemen dengan menangani pemutusan dan pemulihan koneksi secara otomatis.
Cara Kerja AutoSSH
AutoSSH bekerja dengan mengelola dan memantau sesi SSH. Untuk melakukan ini, AutoSSH membutuhkan beberapa parameter konfigurasi seperti alamat tujuan SSH, port forwarding yang digunakan, dan interval pemeriksaan koneksi. Secara umum, berikut langkah-langkah kerja AutoSSH:
- Memulai Koneksi SSH: AutoSSH akan menjalankan perintah SSH seperti biasanya, dengan menambahkan opsi untuk port forwarding atau tunneling.
- Memantau Koneksi Dummy: Selain koneksi SSH utama, AutoSSH akan membuka koneksi SSH tambahan (dummy) yang hanya digunakan untuk memonitor status sesi SSH utama.
- Memeriksa Kesehatan Koneksi: Koneksi dummy ini dikonfigurasi untuk mengirimkan paket heartbeat secara berkala. Jika paket-paket ini berhenti, AutoSSH mengasumsikan bahwa sesi SSH utama juga terputus.
- Pemulihan Koneksi: Ketika koneksi terputus, AutoSSH akan mencoba menutup sesi SSH yang rusak dan memulai sesi baru.
Contoh Penggunaan AutoSSH
Misalkan Anda ingin menggunakan SSH reverse port forwarding untuk mengakses server lokal di balik NAT dari luar jaringan. Berikut contoh perintah untuk menggunakan AutoSSH:
autossh -M 20000 -N -R 2222:localhost:22 user@remote-server.com
Penjelasan:
-M 20000
: AutoSSH akan menggunakan port 20000 untuk memantau koneksi SSH.-N
: Opsi ini memberitahu SSH untuk tidak menjalankan perintah apapun setelah terkoneksi, hanya membuka tunnel.-R 2222:localhost:22
: Ini adalah reverse port forwarding, artinya port 2222 di server remote (remote-server.com
) akan diteruskan ke port 22 di localhost (mesin Anda).user@remote-server.com
: Alamat dan nama pengguna di server remote yang ingin Anda akses.
Opsi-opsi Penting dalam AutoSSH
-M <port>
: Opsi ini menentukan port monitoring yang akan digunakan oleh AutoSSH untuk memantau sesi SSH. Tanpa opsi ini, AutoSSH tidak akan melakukan monitoring dan akan bertindak seperti perintah SSH biasa.-f
: Opsi ini memungkinkan AutoSSH berjalan di background setelah sesi SSH berhasil dibuka. Ini sangat berguna untuk koneksi yang berjalan dalam jangka waktu panjang tanpa perlu melihat output di terminal.-N
: Opsi ini memberitahu SSH untuk tidak menjalankan perintah di remote, hanya membuka sesi tunnel atau port forwarding.-R
dan-L
: Ini adalah opsi SSH yang digunakan untuk remote dan local port forwarding.
Kapan AutoSSH Diperlukan?
- Koneksi Remote yang Tidak Stabil: Ketika jaringan antara mesin lokal dan remote sering terputus, AutoSSH dapat membantu menjaga koneksi tetap berjalan dengan memulai ulang sesi SSH secara otomatis.
- Penggunaan Reverse SSH Tunneling: Dalam skenario di mana sebuah server yang tidak dapat diakses langsung melalui internet (di belakang NAT atau firewall), AutoSSH dapat menjaga agar reverse SSH tunnel tetap aktif.
- Otomatisasi Server: Server yang membutuhkan SSH tunneling untuk backup data, sinkronisasi file, atau akses remote akan mendapatkan manfaat besar dari AutoSSH.
Membuat script service
Setelah kalian masuk sebagai root, buatlan script service dengan pengaturan sebagai berikut dengan mengetikan perintah
nano /etc/systemd/system/satu.service
isikan dengan script berikut
root@amlogic:~# nano /etc/systemd/system/satu.service [Unit] Description = 'casa os' After = network.target network-online.target sshd.service [Service] ExecStart = /usr/bin/autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -i /root/.ssh/id_rsa -R '*:8080:localhost:80' root@103.171.229.161 [Install] WantedBy = multi-user.target
arti script diatas yaitu akan mengakses server local dengan port 80 dengan membuka server VPS pada port 8080. Sehingga nanti di browser dengan mengetikan 103.171.229.161:8080
Untuk menjalankan service kalian bisa mengikuti langkah berikut
systemctl enable satu.service systemctl daemon-reload systemctl start satu.service
Nah ketika jalan nanti kita bisa cek dengan perintah
systemctl status satu.service
dengan hasil sebagai berikut
root@amlogic:~# systemctl status satu.service ● satu.service - 'casa os' Loaded: loaded (/etc/systemd/system/satu.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2024-09-27 16:35:43 UTC; 6h ago Main PID: 32415 (autossh) Tasks: 2 (limit: 1223) Memory: 1.1M CPU: 1.276s CGroup: /system.slice/satu.service ├─32415 /usr/lib/autossh/autossh -M 0 -q -N -o ServerAliveInterval 60 -o ServerAliveCountMax 3 -i /root/.ssh/id_rsa -R *:8080:localhost:80 pamun> └─32418 /usr/bin/ssh -q -N -o ServerAliveInterval 60 -o ServerAliveCountMax 3 -i /root/.ssh/id_rsa -R *:8080:localhost:80 root@103.171.229.161.> Warning: journal has been rotated since unit was started, output may be incomplete. lines 1-12/12 (END)
Mematikan autossh
Jika kalian menggunakan autossh tanpa sebagai service, maka akan sulit dimatikan! seperti contoh berikut
autossh -M 20000 -f -R 8080:localhost:80 root@103.171.229.161
yang berjalan secara background. Salah satu cara yang saya rekomendasikan untuk mematikan proses tersebut dengan kill proses id nya. Gunakan perintah berikut untuk mendapatkan PID nya
ps -aux | grep autossh
setelah mendapatkan PID nya, bisa kita kill
kill no_pid
tapi kalau sebagai service, kalian cukup gunakan perintah berikut untuk mematikan sementara
systemctl stop satu.service
itu hanya mematikan sementara, namun ketika restart komputer akan berjalan di startup, sedangkan untuk restart gunakan perintah
systemctl restart satu.service
nah untuk mematikan secara permanent cukup ketikan
systemctl disable satu.service
kalau menggunakan perintah diatas, kalian wajib ulangi perintah
systemctl enable satu.service systemctl daemon-reload systemctl start satu.service
Begitulah cara Membuat Koneksi Secara Persisten dengan Autossh, saya terbiasa menggunakan teknik diatas dan diuji coba berhari-hari tanpa ada kendala koneksi yang terputus. Tapi kalau nggak mau ribet nggak perlu sewa VPS ya kalian bisa menggunakan ngrok Membuat Server dirumah untuk diakses Secara Online
Untuk port 80 itu mah gratis namun nanti alamat nya ganti-ganti ketika restart ngrok nya kalau untuk port yang lain harus bebayar lagi! dengan harga sekitar 1.8 jutaan per tahun.
Sedangkan untuk VPS 50 ribu/bulan sudah cukup sebagai server tunneling saja, bebas kalian gunakan untuk beragam port. Untuk VPS yang murah bisa coba Biznet yaitu NEO Lite XS 1.1 dengan spek CPU 1 core, RAM 1 GB dan ssd 60 gb.